Mercurial > hg > mercurial-crew-with-dirclash
view rewrite-log @ 809:d0fb9efa2b2d
Fix performance regression in addremove command.
When I rewrote addremove, I lazily put a call to repo.changes in,
which was unnecessary and slow. This is a new rewrite, preserving the
file name behaviour, but replacing the call to repo.changes with a walk,
which is much cheaper, and avoids calls to os.stat on all but files that
have probably been deleted.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Fri, 29 Jul 2005 08:42:28 -0800 |
parents | 5f471a75d607 |
children |
line wrap: on
line source
#!/usr/bin/env python import sys, os from mercurial import hg f = sys.argv[1] r1 = hg.revlog(open, f + ".i", f + ".d") r2 = hg.revlog(open, f + ".i2", f + ".d2") tr = hg.transaction(open, "journal") 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")