Mercurial > hg
annotate convert-repo @ 176:1d8e9637a0a4
Change hg: protocol name to http: and http: to old-http:
hg: will continue to work for a bit
old-http: will be phased out soon
author | mpm@selenic.com |
---|---|
date | Fri, 27 May 2005 12:26:14 -0800 |
parents | 2c80f6f8fc08 |
children |
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") |