--- /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")