convert-repo
author mpm@selenic.com
Tue, 07 Jun 2005 19:02:31 -0800
changeset 274 5da941efbb52
parent 111 2c80f6f8fc08
permissions -rw-r--r--
[PATCH] hgk should parse dates in the diff output -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [PATCH] hgk should parse dates in the diff output hgk doesn't deal well with the difflib style diffs, it expects the filename to be the last thing on the line. This patch fixes the regexp to stop reading the filename at the first tab. Signed-off-by: Chris Mason <mason@suse.com> manifest hash: 9c5bcf427455dcf306ab6f91b1986723caa83f36 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCpl/HywK+sNU5EO8RAgAjAKCOuZsRtJDbdurTQry+7krtLTtRQQCfXLuN LZEFkcOGS0jiAC6vci/RLJ0= =jkr1 -----END PGP SIGNATURE-----
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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")