annotate rewrite-log @ 1806:a2c69737e65e

Automatic nesting into running transactions in the same repository. This associates a transaction handle with a given repository object, and any additional calls to start new transactions reuse that transaction. For the 2700 patch import run, this brings the system time down from 1m20s to 50s, mostly by skipping backups of the dirstate file. (note, this patch does not change hg import to use the nested transaction, mq is the only user right now)
author mason@suse.com
date Tue, 28 Feb 2006 12:24:54 -0600
parents 5f471a75d607
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
141
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
1 #!/usr/bin/env python
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
2 import sys, os
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
3 from mercurial import hg
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
4
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
5 f = sys.argv[1]
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
6
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
7 r1 = hg.revlog(open, f + ".i", f + ".d")
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
8 r2 = hg.revlog(open, f + ".i2", f + ".d2")
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
9
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
10 tr = hg.transaction(open, "journal")
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
11
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
12 for i in xrange(r1.count()):
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
13 n = r1.node(i)
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
14 p1, p2 = r1.parents(n)
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
15 l = r1.linkrev(n)
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
16 t = r1.revision(n)
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
17 n2 = r2.addrevision(t, tr, l, p1, p2)
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
18 tr.close()
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
19
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
20 os.rename(f + ".i", f + ".i.old")
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
21 os.rename(f + ".d", f + ".d.old")
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
22 os.rename(f + ".i2", f + ".i")
5f471a75d607 Simple script to recompress a log file
mpm@selenic.com
parents:
diff changeset
23 os.rename(f + ".d2", f + ".d")