Mercurial > hg > mercurial-crew-with-dirclash
annotate convert-repo @ 174:23057dc57d1b
hg merge: abort if there are outstanding changes in the working directory
We currently don't support merging from the tip into the working
directory, so merge with outstanding local changes is asking for
trouble.
author | mpm@selenic.com |
---|---|
date | Thu, 26 May 2005 22:54:48 -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") |