[PATCH] contrib: fix binary file issues with dumprevlog on Windows
Adrian Buehlmann
adrian at cadifra.com
Fri Apr 4 15:06:07 UTC 2008
With this patch, dumprevlog and undumprevlog (from contrib) would
work on Windows, also for non-printable files.
I've also tested this patch with:
http://selenic.com/pipermail/mercurial-devel/2008-April/005706.html
on FreeBSD 6.2
# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1207319984 -7200
# Node ID 1cf4f5d926acaac7b4156ee177f1bdc2927b1519
# Parent 6c4e12682fb985137f7e68dbaa9ee9444b1281b0
contrib: fix binary file issues with dumprevlog on Windows
* Fix traceback on dumprevlog: open revlog in mode 'rb' (binary)
* Set stdio to binary mode so that redirected data is not modified
References:
http://selenic.com/pipermail/mercurial/2008-March/018330.html
http://selenic.com/repo/index.cgi/hg/rev/a3fe91b4f6eb
diff --git a/contrib/dumprevlog b/contrib/dumprevlog
--- a/contrib/dumprevlog
+++ b/contrib/dumprevlog
@@ -3,10 +3,14 @@
# $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump
import sys
-from mercurial import revlog, node
+from mercurial import revlog, node, util
+
+for fp in (sys.stdin, sys.stdout, sys.stderr):
+ util.set_binary(fp)
for f in sys.argv[1:]:
- r = revlog.revlog(open, f)
+ binopen = lambda fn: open(fn, 'rb')
+ r = revlog.revlog(binopen, f)
print "file:", f
for i in xrange(r.count()):
n = r.node(i)
diff --git a/contrib/undumprevlog b/contrib/undumprevlog
--- a/contrib/undumprevlog
+++ b/contrib/undumprevlog
@@ -5,6 +5,9 @@
import sys
from mercurial import revlog, node, util, transaction
+
+for fp in (sys.stdin, sys.stdout, sys.stderr):
+ util.set_binary(fp)
opener = util.opener('.', False)
tr = transaction.transaction(sys.stderr.write, opener, "undump.journal")
More information about the Mercurial-devel
mailing list