Mercurial > hg > mercurial-crew-with-dirclash
annotate contrib/rewrite-log @ 5369:7530334bf301
revlog: generate trivial deltas against null revision
To avoid extra memory usage and performance issues with large files,
generate a trivial delta header for deltas against the null revision
rather than calling the usual delta generator.
We append the delta header to meta rather than prepending it to data
to avoid a large allocate and copy.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 03 Oct 2007 17:17:27 -0500 |
parents | 9ccc6be9ae4d |
children |
rev | line source |
---|---|
141 | 1 #!/usr/bin/env python |
2 import sys, os | |
3711
9ccc6be9ae4d
update rewrite-log for tip ; chmod it
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3512
diff
changeset
|
3 from mercurial import revlog, transaction, node, util |
141 | 4 |
5 f = sys.argv[1] | |
6 | |
3711
9ccc6be9ae4d
update rewrite-log for tip ; chmod it
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3512
diff
changeset
|
7 r1 = revlog.revlog(util.opener(os.getcwd(), audit=False), f + ".i", f + ".d") |
9ccc6be9ae4d
update rewrite-log for tip ; chmod it
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3512
diff
changeset
|
8 r2 = revlog.revlog(util.opener(os.getcwd(), audit=False), f + ".i2", f + ".d2") |
141 | 9 |
3711
9ccc6be9ae4d
update rewrite-log for tip ; chmod it
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3512
diff
changeset
|
10 tr = transaction.transaction(sys.stderr.write, open, "journal") |
141 | 11 |
12 for i in xrange(r1.count()): | |
13 n = r1.node(i) | |
14 p1, p2 = r1.parents(n) | |
15 l = r1.linkrev(n) | |
16 t = r1.revision(n) | |
17 n2 = r2.addrevision(t, tr, l, p1, p2) | |
18 tr.close() | |
19 | |
20 os.rename(f + ".i", f + ".i.old") | |
21 os.rename(f + ".d", f + ".d.old") | |
22 os.rename(f + ".i2", f + ".i") | |
23 os.rename(f + ".d2", f + ".d") |