Show More
@@ -0,0 +1,21 | |||||
|
1 | #!/usr/bin/env python | |||
|
2 | # Dump revlogs as raw data stream | |||
|
3 | # $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump | |||
|
4 | ||||
|
5 | import sys | |||
|
6 | from mercurial import revlog, node | |||
|
7 | ||||
|
8 | for f in sys.argv[1:]: | |||
|
9 | r = revlog.revlog(open, f) | |||
|
10 | print "file:", f | |||
|
11 | for i in xrange(r.count()): | |||
|
12 | n = r.node(i) | |||
|
13 | p = r.parents(n) | |||
|
14 | d = r.revision(n) | |||
|
15 | print "node:", node.hex(n) | |||
|
16 | print "linkrev:", r.linkrev(n) | |||
|
17 | print "parents:", node.hex(p[0]), node.hex(p[1]) | |||
|
18 | print "length:", len(d) | |||
|
19 | print "-start-" | |||
|
20 | print d | |||
|
21 | print "-end-" |
@@ -0,0 +1,34 | |||||
|
1 | #!/usr/bin/env python | |||
|
2 | # Undump a dump from dumprevlog | |||
|
3 | # $ hg init | |||
|
4 | # $ undumprevlog < repo.dump | |||
|
5 | ||||
|
6 | import sys | |||
|
7 | from mercurial import revlog, node, util, transaction | |||
|
8 | ||||
|
9 | opener = util.opener('.', False) | |||
|
10 | tr = transaction.transaction(sys.stderr.write, opener, "undump.journal") | |||
|
11 | while 1: | |||
|
12 | l = sys.stdin.readline() | |||
|
13 | if not l: | |||
|
14 | break | |||
|
15 | if l.startswith("file:"): | |||
|
16 | f = l[6:-1] | |||
|
17 | r = revlog.revlog(opener, f) | |||
|
18 | print f | |||
|
19 | elif l.startswith("node:"): | |||
|
20 | n = node.bin(l[6:-1]) | |||
|
21 | elif l.startswith("linkrev:"): | |||
|
22 | lr = int(l[9:-1]) | |||
|
23 | elif l.startswith("parents:"): | |||
|
24 | p = l[9:-1].split() | |||
|
25 | p1 = node.bin(p[0]) | |||
|
26 | p2 = node.bin(p[1]) | |||
|
27 | elif l.startswith("length:"): | |||
|
28 | length = int(l[8:-1]) | |||
|
29 | sys.stdin.readline() # start marker | |||
|
30 | d = sys.stdin.read(length) | |||
|
31 | sys.stdin.readline() # end marker | |||
|
32 | r.addrevision(d, tr, lr, p1, p2) | |||
|
33 | ||||
|
34 | tr.close() |
General Comments 0
You need to be logged in to leave comments.
Login now