Mercurial > hg > mercurial-crew-with-dirclash
annotate contrib/rewrite-log @ 4508:0026ccc2bf23
Remove atomicfile class.
The interface provided by opener(atomic=True) is inherently unsafe:
if an exception is raised in the code using the atomic file, the
possibly incomplete file will be renamed to its final destination,
defeating the whole purpose of atomic files.
To get around this, we would either need some bad hacks involving
sys.exc_info (to make sure things work in except: blocks), or an
interface to say "file is complete; rename it".
This is the exact interface provided by atomictempfile. Since there
are no remaining users of the atomicfile class, just remove it.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Tue, 05 Jun 2007 19:55:27 -0300 |
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") |