equal
deleted
inserted
replaced
41 |
41 |
42 self.path = path |
42 self.path = path |
43 |
43 |
44 def getheads(self): |
44 def getheads(self): |
45 if not self.rev: |
45 if not self.rev: |
46 return self.gitcmd('git rev-parse --branches --remotes').read().splitlines() |
46 fh = self.gitcmd('git rev-parse --branches --remotes') |
|
47 return fh.read().splitlines() |
47 else: |
48 else: |
48 fh = self.gitcmd("git rev-parse --verify %s" % self.rev) |
49 fh = self.gitcmd("git rev-parse --verify %s" % self.rev) |
49 return [fh.read()[:-1]] |
50 return [fh.read()[:-1]] |
50 |
51 |
51 def catfile(self, rev, type): |
52 def catfile(self, rev, type): |
52 if rev == "0" * 40: raise IOError() |
53 if rev == "0" * 40: |
|
54 raise IOError() |
53 fh = self.gitcmd("git cat-file %s %s" % (type, rev)) |
55 fh = self.gitcmd("git cat-file %s %s" % (type, rev)) |
54 return fh.read() |
56 return fh.read() |
55 |
57 |
56 def getfile(self, name, rev): |
58 def getfile(self, name, rev): |
57 return self.catfile(rev, "blob") |
59 return self.catfile(rev, "blob") |
84 return (changes, {}) |
86 return (changes, {}) |
85 |
87 |
86 def getcommit(self, version): |
88 def getcommit(self, version): |
87 c = self.catfile(version, "commit") # read the commit hash |
89 c = self.catfile(version, "commit") # read the commit hash |
88 end = c.find("\n\n") |
90 end = c.find("\n\n") |
89 message = c[end+2:] |
91 message = c[end + 2:] |
90 message = self.recode(message) |
92 message = self.recode(message) |
91 l = c[:end].splitlines() |
93 l = c[:end].splitlines() |
92 parents = [] |
94 parents = [] |
93 author = committer = None |
95 author = committer = None |
94 for e in l[1:]: |
96 for e in l[1:]: |
103 p = v.split() |
105 p = v.split() |
104 tm, tz = p[-2:] |
106 tm, tz = p[-2:] |
105 committer = " ".join(p[:-2]) |
107 committer = " ".join(p[:-2]) |
106 if committer[0] == "<": committer = committer[1:-1] |
108 if committer[0] == "<": committer = committer[1:-1] |
107 committer = self.recode(committer) |
109 committer = self.recode(committer) |
108 if n == "parent": parents.append(v) |
110 if n == "parent": |
|
111 parents.append(v) |
109 |
112 |
110 if committer and committer != author: |
113 if committer and committer != author: |
111 message += "\ncommitter: %s\n" % committer |
114 message += "\ncommitter: %s\n" % committer |
112 tzs, tzh, tzm = tz[-5:-4] + "1", tz[-4:-2], tz[-2:] |
115 tzs, tzh, tzm = tz[-5:-4] + "1", tz[-4:-2], tz[-2:] |
113 tz = -int(tzs) * (int(tzh) * 3600 + int(tzm)) |
116 tz = -int(tzs) * (int(tzh) * 3600 + int(tzm)) |
143 m, f = l[:-1].split("\t") |
146 m, f = l[:-1].split("\t") |
144 changes.append(f) |
147 changes.append(f) |
145 fh.close() |
148 fh.close() |
146 else: |
149 else: |
147 fh = self.gitcmd('git diff-tree --name-only --root -r %s "%s^%s" --' |
150 fh = self.gitcmd('git diff-tree --name-only --root -r %s "%s^%s" --' |
148 % (version, version, i+1)) |
151 % (version, version, i + 1)) |
149 changes = [f.rstrip('\n') for f in fh] |
152 changes = [f.rstrip('\n') for f in fh] |
150 fh.close() |
153 fh.close() |
151 |
154 |
152 return changes |
155 return changes |