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