##// END OF EJS Templates
Get tags and branches using _parsed_refs
marcink -
r2535:b24b1f0f beta
parent child Browse files
Show More
@@ -158,15 +158,19 b' class GitRepository(BaseRepository):'
158 raise RepositoryError(err)
158 raise RepositoryError(err)
159
159
160 def _get_all_revisions(self):
160 def _get_all_revisions(self):
161 cmd = 'rev-list --all --date-order'
161 cmd = 'rev-list --all --reverse --date-order'
162 try:
162 try:
163 so, se = self.run_git_command(cmd)
163 so, se = self.run_git_command(cmd)
164 except RepositoryError:
164 except RepositoryError:
165 # Can be raised for empty repositories
165 # Can be raised for empty repositories
166 return []
166 return []
167 revisions = so.splitlines()
167 return so.splitlines()
168 revisions.reverse()
168
169 return revisions
169 def _get_all_revisions2(self):
170 #alternate implementation using dulwich
171 includes = [x[1][0] for x in self._parsed_refs.iteritems()
172 if x[1][1] != 'T']
173 return [c.commit.id for c in self._repo.get_walker(include=includes)]
170
174
171 def _get_revision(self, revision):
175 def _get_revision(self, revision):
172 """
176 """
@@ -264,11 +268,9 b' class GitRepository(BaseRepository):'
264 def branches(self):
268 def branches(self):
265 if not self.revisions:
269 if not self.revisions:
266 return {}
270 return {}
267 refs = self._repo.refs.as_dict()
268 sortkey = lambda ctx: ctx[0]
271 sortkey = lambda ctx: ctx[0]
269 _branches = [('/'.join(ref.split('/')[2:]), head)
272 _branches = [(x[0], x[1][0])
270 for ref, head in refs.items()
273 for x in self._parsed_refs.iteritems() if x[1][1] == 'H']
271 if ref.startswith('refs/heads/') and not ref.endswith('/HEAD')]
272 return OrderedDict(sorted(_branches, key=sortkey, reverse=False))
274 return OrderedDict(sorted(_branches, key=sortkey, reverse=False))
273
275
274 @LazyProperty
276 @LazyProperty
@@ -278,9 +280,10 b' class GitRepository(BaseRepository):'
278 def _get_tags(self):
280 def _get_tags(self):
279 if not self.revisions:
281 if not self.revisions:
280 return {}
282 return {}
283
281 sortkey = lambda ctx: ctx[0]
284 sortkey = lambda ctx: ctx[0]
282 _tags = [('/'.join(ref.split('/')[2:]), head) for ref, head in
285 _tags = [(x[0], x[1][0])
283 self._repo.get_refs().items() if ref.startswith('refs/tags/')]
286 for x in self._parsed_refs.iteritems() if x[1][1] == 'T']
284 return OrderedDict(sorted(_tags, key=sortkey, reverse=True))
287 return OrderedDict(sorted(_tags, key=sortkey, reverse=True))
285
288
286 def tag(self, name, user, revision=None, message=None, date=None,
289 def tag(self, name, user, revision=None, message=None, date=None,
General Comments 0
You need to be logged in to leave comments. Login now