##// END OF EJS Templates
Sort removes first when applying updates (fixes issues 750 and 912)...
Sort removes first when applying updates (fixes issues 750 and 912) This change ensures that removes happen first in applyupdates(). This avoids issues where we try to make a case-only rename of a file on a case insensitive system. Without this patch, the add of the new name happens before the remove of the old one - which results in the file not existing, as the two names are effectively the same. With the patch, the old name gets removed then the new one gets added, which is always safe.

File last commit:

r3711:9ccc6be9 default
r6805:48258143 default
Show More
rewrite-log
23 lines | 637 B | text/plain | TextLexer
Matt Mackall
Move rewrite-log to contrib
r3505 #!/usr/bin/env python
import sys, os
Benoit Boissinot
update rewrite-log for tip ; chmod it
r3711 from mercurial import revlog, transaction, node, util
Matt Mackall
Move rewrite-log to contrib
r3505
f = sys.argv[1]
Benoit Boissinot
update rewrite-log for tip ; chmod it
r3711 r1 = revlog.revlog(util.opener(os.getcwd(), audit=False), f + ".i", f + ".d")
r2 = revlog.revlog(util.opener(os.getcwd(), audit=False), f + ".i2", f + ".d2")
Matt Mackall
Move rewrite-log to contrib
r3505
Benoit Boissinot
update rewrite-log for tip ; chmod it
r3711 tr = transaction.transaction(sys.stderr.write, open, "journal")
Matt Mackall
Move rewrite-log to contrib
r3505
for i in xrange(r1.count()):
n = r1.node(i)
p1, p2 = r1.parents(n)
l = r1.linkrev(n)
t = r1.revision(n)
n2 = r2.addrevision(t, tr, l, p1, p2)
tr.close()
os.rename(f + ".i", f + ".i.old")
os.rename(f + ".d", f + ".d.old")
os.rename(f + ".i2", f + ".i")
os.rename(f + ".d2", f + ".d")