Mercurial > hg
changeset 111:2c80f6f8fc08
Add script for doing conversion of repo from oldstyle to newstyle
author | mpm@selenic.com |
---|---|
date | Fri, 20 May 2005 17:28:09 -0800 |
parents | c37c7f784ee3 |
children | aea6562add6c |
files | convert-repo |
diffstat | 1 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convert-repo Fri May 20 17:28:09 2005 -0800 @@ -0,0 +1,43 @@ +#!/usr/bin/env python +import sys, os, sha, base64, re +from mercurial import hg + +ui = hg.ui() +repo = hg.repository(ui=ui) +known = {} + +def encodepath(path): + s = sha.sha(path).digest() + s = base64.encodestring(s)[:-3] + s = re.sub("\+", "%", s) + s = re.sub("/", "_", s) + return s + +for i in range(repo.changelog.count()): + n = repo.changelog.node(i) + changes = repo.changelog.read(n) + for f in changes[3]: + known[f] = 1 + +try: + os.mkdir(".hg/data-new") +except: + pass + +files = known.keys() +files.sort() +for f in files: + pb = ".hg/data/" + encodepath(f) + pn = ".hg/data-new/" + f + print f + try: + file(pn+".i", "w").write(file(pb+"i").read()) + except: + os.makedirs(os.path.dirname(pn)) + # we actually copy the files to get nice disk layout + file(pn+".i", "w").write(file(pb+"i").read()) + + file(pn+".d", "w").write(file(pb).read()) + +os.rename(".hg/data", ".hg/data-old") +os.rename(".hg/data-new", ".hg/data")