##// END OF EJS Templates
revlog: rewrite censoring logic...
revlog: rewrite censoring logic I was able to corrupt a revlog relatively easily with the existing censoring code. The underlying problem is that the existing code doesn't fully take delta chains into account. When copying revisions that occur after the censored revision, the delta base can refer to a censored revision. Then at read time, things blow up due to the revision data not being a compressed delta. This commit rewrites the revlog censoring code to take a higher-level approach. We now create a new revlog instance pointing at temp files. We iterate through each revision in the source revlog and insert those revisions into the new revlog, replacing the censored revision's data along the way. The new implementation isn't as efficient as the old one. This is because it will fully engage delta computation on insertion. But I don't think it matters. The new implementation is a bit hacky because it attempts to reload the revlog instance with a new revlog index/data file. This is fragile. But this is needed because the index (which could be backed by C) would have a cached copy of the old, possibly changed data and that could lead to problems accessing index or revision data later. One benefit of the new approach is that we integrate with the transaction. The old revlog is backed up and if the transaction is rolled back, the original revlog is restored. As part of this, we had to teach the transaction about the store vfs. I'm not super keen about this. But this was the easiest way to hook things up to the transaction. We /could/ just ignore the transaction like we were doing before. But any file mutation should be governed by transaction semantics, including undo during rollback. Differential Revision: https://phab.mercurial-scm.org/D4869

File last commit:

r35550:bb5a03df default
r40092:324b4b10 default
Show More
style.css
117 lines | 2.6 KiB | text/css | CssLexer
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 a { text-decoration:none; }
.age { white-space:nowrap; }
.date { white-space:nowrap; }
.indexlinks { white-space:nowrap; }
Gijs Kruitbosch
hgweb: ensure both foreground and background colors are specified (issue4872)...
r26536 .parity0 { background-color: #ddd; color: #000; }
.parity1 { background-color: #eee; color: #000; }
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 .lineno { width: 60px; color: #aaa; font-size: smaller;
text-align: right; }
.plusline { color: green; }
.minusline { color: red; }
.atline { color: purple; }
.annotate { font-size: smaller; text-align: right; padding-right: 1em; }
Denis Laxalde
hgweb: highlight data of the current revision in annotate view...
r29387 tr.thisrev a { color:#999999; text-decoration: none; }
tr.thisrev pre { color:#009900; }
Tooru Fujisawa
hgweb: avoid line wrap between revision and annotate-info (issue5398)...
r30074 td.annotate {
white-space: nowrap;
}
Denis Laxalde
hgweb: add link to parents of annotated revision in annotate view...
r29522 div.annotate-info {
display: none;
position: absolute;
background-color: #FFFFFF;
av6
spartan: make annotate popup use theme colors
r29628 border: 1px solid #888;
Denis Laxalde
hgweb: add link to parents of annotated revision in annotate view...
r29522 text-align: left;
color: #000000;
padding: 5px;
}
div.annotate-info a { color: #0000FF; }
td.annotate:hover div.annotate-info { display: inline; }
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 .buttons a {
background-color: #666;
padding: 2pt;
color: white;
Alexander Plavin
css: fixed font-family...
r19075 font-family: sans-serif;
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 font-weight: bold;
}
.navigate a {
background-color: #ccc;
padding: 2pt;
Alexander Plavin
css: fixed font-family...
r19075 font-family: sans-serif;
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 color: black;
}
.metatag {
background-color: #888;
color: white;
text-align: right;
}
/* Common */
pre { margin: 0; }
.logo {
float: right;
clear: right;
}
/* Changelog/Filelog entries */
.logEntry { width: 100%; }
.logEntry .age { width: 15%; }
FUJIWARA Katsunori
hgweb: align entries in "changelog" and "revisions" pages of "spartan" style...
r21124 .logEntry th.label { width: 16em; }
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
.logEntry th.age, .logEntry th.firstline { font-weight: bold; }
.logEntry th.firstline { text-align: left; width: inherit; }
/* Shortlog entries */
.slogEntry { width: 100%; }
.slogEntry .age { width: 8em; }
.slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
.slogEntry td.author { width: 15em; }
/* Tag entries */
#tagEntries { list-style: none; margin: 0; padding: 0; }
#tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
/* Changeset entry */
#changesetEntry { }
#changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
#changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
/* File diff view */
#filediffEntry { }
#filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
/* Graph */
div#wrapper {
position: relative;
margin: 0;
padding: 0;
}
canvas {
position: absolute;
z-index: 5;
top: -0.6em;
margin: 0;
}
av6
spartan: make actual changeset entries have backgrounds on /graph...
r35550 ul#graphnodes {
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 list-style: none inside none;
padding: 0;
margin: 0;
}
av6
spartan: make actual changeset entries have backgrounds on /graph...
r35550 ul#graphnodes li {
height: 37px;
overflow: visible;
padding-top: 2px;
}
ul#graphnodes li .fg {
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 position: absolute;
z-index: 10;
}
ul#graphnodes li .info {
font-size: 70%;
}