##// END OF EJS Templates
add simple dump and undump scripts to contrib/
Matt Mackall -
r6433:ec5d77eb default
parent child Browse files
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