##// END OF EJS Templates
context: only bother looking for broken dirstate for 20-byte changeid...
context: only bother looking for broken dirstate for 20-byte changeid If we fail to look up a changeid in changectx.__init__, we check if it exactly matches any of the dirstate parents, and if it does, we print a more specific message ("working directory has unknown parent '...'!" instead of "unknown revision '...'"). The dirstate parents are always 20 bytes, so there's no need to check for a match when the given changeid is not 20 bytes. (And now that all the other allowed forms of changeid have been moved out of the constructor, there's no risk that a changeid that did match a dirstate parent was actually a valid bookmark.) Differential Revision: https://phab.mercurial-scm.org/D3450

File last commit:

r37138:a8a902d7 default
r37872:fdd8da79 default
Show More
dumprevlog
37 lines | 866 B | text/plain | TextLexer
#!/usr/bin/env python
# Dump revlogs as raw data stream
# $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump
from __future__ import absolute_import, print_function
import sys
from mercurial import (
node,
revlog,
)
from mercurial.utils import (
procutil,
)
for fp in (sys.stdin, sys.stdout, sys.stderr):
procutil.setbinary(fp)
def binopen(path, mode='rb'):
if 'b' not in mode:
mode = mode + 'b'
return open(path, mode)
for f in sys.argv[1:]:
r = revlog.revlog(binopen, f)
print("file:", f)
for i in r:
n = r.node(i)
p = r.parents(n)
d = r.revision(n)
print("node:", node.hex(n))
print("linkrev:", r.linkrev(i))
print("parents:", node.hex(p[0]), node.hex(p[1]))
print("length:", len(d))
print("-start-")
print(d)
print("-end-")