mirror of
https://github.com/facebook/sapling.git
synced 2024-10-04 22:07:44 +03:00
44 lines
983 B
Plaintext
44 lines
983 B
Plaintext
|
#!/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")
|