##// END OF EJS Templates
git -> hg conversion script...
Florian La Roche -
r1335:bea6356b default
parent child Browse files
Show More
@@ -28,26 +28,18 b' class convert_git:'
28 28 self.path = path
29 29
30 30 def getheads(self):
31 h = file(self.path + "/.git/HEAD").read()[:-1]
32 return [h]
31 return [file(self.path + "/HEAD").read()[:-1]]
33 32
34 33 def catfile(self, rev, type):
35 34 if rev == "0" * 40: raise IOError()
36 path = os.getcwd()
37 os.chdir(self.path)
38 fh = os.popen("git-cat-file %s %s 2>/dev/null" % (type, rev))
39 os.chdir(path)
35 fh = os.popen("GIT_DIR=%s git-cat-file %s %s 2>/dev/null" % (self.path, type, rev))
40 36 return fh.read()
41 37
42 38 def getfile(self, name, rev):
43 39 return self.catfile(rev, "blob")
44 40
45 41 def getchanges(self, version):
46 path = os.getcwd()
47 os.chdir(self.path)
48 fh = os.popen("git-diff-tree --root -m -r %s" % (version))
49 os.chdir(path)
50
42 fh = os.popen("GIT_DIR=%s git-diff-tree --root -m -r %s" % (self.path, version))
51 43 changes = []
52 44 for l in fh:
53 45 if "\t" not in l: continue
@@ -83,9 +75,9 b' class convert_git:'
83 75
84 76 def gettags(self):
85 77 tags = {}
86 for f in os.listdir(self.path + "/.git/refs/tags"):
78 for f in os.listdir(self.path + "/refs/tags"):
87 79 try:
88 h = file(self.path + "/.git/refs/tags/" + f).read().strip()
80 h = file(self.path + "/refs/tags/" + f).read().strip()
89 81 tags[f] = h
90 82 except:
91 83 pass
@@ -99,8 +91,7 b' class convert_mercurial:'
99 91
100 92 def getheads(self):
101 93 h = self.repo.changelog.heads()
102 h = [ hg.hex(x) for x in h ]
103 return h
94 return [ hg.hex(x) for x in h ]
104 95
105 96 def putfile(self, f, e, data):
106 97 self.repo.wfile(f, "w").write(data)
@@ -155,12 +146,12 b' class convert_mercurial:'
155 146 newlines.sort()
156 147
157 148 if newlines != oldlines:
158 print "updating tags"
149 #print "updating tags"
159 150 f = self.repo.wfile(".hgtags", "w")
160 151 f.write("".join(newlines))
161 152 f.close()
162 153 if not oldlines: self.repo.add([".hgtags"])
163 date = "%s 0" % time.mktime(time.gmtime())
154 date = "%s 0" % int(time.mktime(time.gmtime()))
164 155 self.repo.rawcommit([".hgtags"], "update tags", "convert-repo",
165 156 date, self.repo.changelog.tip(), hg.nullid)
166 157
@@ -262,7 +253,7 b' class convert:'
262 253 num -= 1
263 254 if c in self.map: continue
264 255 desc = self.commitcache[c][3].splitlines()[0]
265 print num, desc
256 #print num, desc
266 257 self.copy(c)
267 258
268 259 tags = self.source.gettags()
@@ -275,6 +266,8 b' class convert:'
275 266 self.dest.puttags(ctags)
276 267
277 268 gitpath, hgpath, mapfile = sys.argv[1:]
269 if os.path.isdir(gitpath + "/.git"):
270 gitpath += "/.git"
278 271
279 272 c = convert(convert_git(gitpath), convert_mercurial(hgpath), mapfile)
280 273 c.convert()
General Comments 0
You need to be logged in to leave comments. Login now