annotate convert-repo @ 249:619e775aa7f9

import and startup cleanups -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 import and startup cleanups add commands:run() add copyright notice to commands eliminate/reorganize imports to speed up start time: 0.5b: $ time bash -c 'for i in `seq 100`; do ~/bin/hg > /dev/null; done' real 0m7.718s user 0m6.719s sys 0m0.794s new: $ time bash -c 'for i in `seq 100`; do hg > /dev/null; done' real 0m2.171s user 0m1.684s sys 0m0.444s just python: $ time bash -c 'for i in `seq 100`; do python -c pass; done' real 0m0.988s user 0m0.771s sys 0m0.207s Ignoring the fixed cost of loading the Python interpreter, we're 5.6 times faster. With the Python load time, we're still 3.5 times faster. manifest hash: acce5882a55c76eb165316f5741724c8ce4ef587 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCoihAywK+sNU5EO8RAqMdAJwMe6Ur0R9G6jjayNa5hH2C3c4k/gCeIYvc N178vaWWGciX9zq+g5qCAls= =buhv -----END PGP SIGNATURE-----
author mpm@selenic.com
date Sat, 04 Jun 2005 14:16:32 -0800
parents 2c80f6f8fc08
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
1 #!/usr/bin/env python
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
2 import sys, os, sha, base64, re
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
3 from mercurial import hg
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
4
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
5 ui = hg.ui()
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
6 repo = hg.repository(ui=ui)
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
7 known = {}
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
8
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
9 def encodepath(path):
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
10 s = sha.sha(path).digest()
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
11 s = base64.encodestring(s)[:-3]
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
12 s = re.sub("\+", "%", s)
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
13 s = re.sub("/", "_", s)
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
14 return s
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
15
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
16 for i in range(repo.changelog.count()):
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
17 n = repo.changelog.node(i)
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
18 changes = repo.changelog.read(n)
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
19 for f in changes[3]:
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
20 known[f] = 1
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
21
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
22 try:
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
23 os.mkdir(".hg/data-new")
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
24 except:
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
25 pass
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
26
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
27 files = known.keys()
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
28 files.sort()
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
29 for f in files:
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
30 pb = ".hg/data/" + encodepath(f)
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
31 pn = ".hg/data-new/" + f
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
32 print f
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
33 try:
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
34 file(pn+".i", "w").write(file(pb+"i").read())
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
35 except:
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
36 os.makedirs(os.path.dirname(pn))
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
37 # we actually copy the files to get nice disk layout
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
38 file(pn+".i", "w").write(file(pb+"i").read())
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
39
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
40 file(pn+".d", "w").write(file(pb).read())
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
41
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
42 os.rename(".hg/data", ".hg/data-old")
2c80f6f8fc08 Add script for doing conversion of repo from oldstyle to newstyle
mpm@selenic.com
parents:
diff changeset
43 os.rename(".hg/data-new", ".hg/data")