author | mpm@selenic.com |
Mon, 30 May 2005 08:27:21 -0800 | |
changeset 193 | 0a28dfe59f8f |
parent 111 | 2c80f6f8fc08 |
permissions | -rw-r--r-- |
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") |