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