# HG changeset patch # User mpm@selenic.com # Date 1116638889 28800 # Node ID 2c80f6f8fc08a6a71b74283a8db4d079652fc3bf # Parent c37c7f784ee3c4e6c5b40a2f80bc00eb8925a4ec Add script for doing conversion of repo from oldstyle to newstyle diff -r c37c7f784ee3 -r 2c80f6f8fc08 convert-repo --- /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")