Show More
@@ -192,7 +192,11 b' class GitRepository(BaseRepository):' | |||||
192 | "for this repository %s" % (revision, self)) |
|
192 | "for this repository %s" % (revision, self)) | |
193 |
|
193 | |||
194 | elif is_bstr(revision): |
|
194 | elif is_bstr(revision): | |
195 | if not pattern.match(revision) or revision not in self.revisions: |
|
195 | _ref_revision = self._parsed_refs.get(revision) | |
|
196 | if _ref_revision: # and _ref_revision[1] in ['H', 'RH', 'T']: | |||
|
197 | return _ref_revision[0] | |||
|
198 | ||||
|
199 | elif not pattern.match(revision) or revision not in self.revisions: | |||
196 | raise ChangesetDoesNotExistError("Revision %r does not exist " |
|
200 | raise ChangesetDoesNotExistError("Revision %r does not exist " | |
197 | "for this repository %s" % (revision, self)) |
|
201 | "for this repository %s" % (revision, self)) | |
198 |
|
202 | |||
@@ -267,18 +271,9 b' class GitRepository(BaseRepository):' | |||||
267 | if ref.startswith('refs/heads/') and not ref.endswith('/HEAD')] |
|
271 | if ref.startswith('refs/heads/') and not ref.endswith('/HEAD')] | |
268 | return OrderedDict(sorted(_branches, key=sortkey, reverse=False)) |
|
272 | return OrderedDict(sorted(_branches, key=sortkey, reverse=False)) | |
269 |
|
273 | |||
270 | def _heads(self, reverse=False): |
|
274 | @LazyProperty | |
271 | refs = self._repo.get_refs() |
|
275 | def tags(self): | |
272 | heads = {} |
|
276 | return self._get_tags() | |
273 |
|
||||
274 | for key, val in refs.items(): |
|
|||
275 | for ref_key in ['refs/heads/', 'refs/remotes/origin/']: |
|
|||
276 | if key.startswith(ref_key): |
|
|||
277 | n = key[len(ref_key):] |
|
|||
278 | if n not in ['HEAD']: |
|
|||
279 | heads[n] = val |
|
|||
280 |
|
||||
281 | return heads if reverse else dict((y,x) for x,y in heads.iteritems()) |
|
|||
282 |
|
277 | |||
283 | def _get_tags(self): |
|
278 | def _get_tags(self): | |
284 | if not self.revisions: |
|
279 | if not self.revisions: | |
@@ -288,10 +283,6 b' class GitRepository(BaseRepository):' | |||||
288 | self._repo.get_refs().items() if ref.startswith('refs/tags/')] |
|
283 | self._repo.get_refs().items() if ref.startswith('refs/tags/')] | |
289 | return OrderedDict(sorted(_tags, key=sortkey, reverse=True)) |
|
284 | return OrderedDict(sorted(_tags, key=sortkey, reverse=True)) | |
290 |
|
285 | |||
291 | @LazyProperty |
|
|||
292 | def tags(self): |
|
|||
293 | return self._get_tags() |
|
|||
294 |
|
||||
295 | def tag(self, name, user, revision=None, message=None, date=None, |
|
286 | def tag(self, name, user, revision=None, message=None, date=None, | |
296 | **kwargs): |
|
287 | **kwargs): | |
297 | """ |
|
288 | """ | |
@@ -335,6 +326,34 b' class GitRepository(BaseRepository):' | |||||
335 | except OSError, e: |
|
326 | except OSError, e: | |
336 | raise RepositoryError(e.strerror) |
|
327 | raise RepositoryError(e.strerror) | |
337 |
|
328 | |||
|
329 | @LazyProperty | |||
|
330 | def _parsed_refs(self): | |||
|
331 | refs = self._repo.get_refs() | |||
|
332 | keys = [('refs/heads/', 'H'), | |||
|
333 | ('refs/remotes/origin/', 'RH'), | |||
|
334 | ('refs/tags/', 'T')] | |||
|
335 | _refs = {} | |||
|
336 | for ref, sha in refs.iteritems(): | |||
|
337 | for k, type_ in keys: | |||
|
338 | if ref.startswith(k): | |||
|
339 | _key = ref[len(k):] | |||
|
340 | _refs[_key] = [sha, type_] | |||
|
341 | break | |||
|
342 | return _refs | |||
|
343 | ||||
|
344 | def _heads(self, reverse=False): | |||
|
345 | refs = self._repo.get_refs() | |||
|
346 | heads = {} | |||
|
347 | ||||
|
348 | for key, val in refs.items(): | |||
|
349 | for ref_key in ['refs/heads/', 'refs/remotes/origin/']: | |||
|
350 | if key.startswith(ref_key): | |||
|
351 | n = key[len(ref_key):] | |||
|
352 | if n not in ['HEAD']: | |||
|
353 | heads[n] = val | |||
|
354 | ||||
|
355 | return heads if reverse else dict((y, x) for x, y in heads.iteritems()) | |||
|
356 | ||||
338 | def get_changeset(self, revision=None): |
|
357 | def get_changeset(self, revision=None): | |
339 | """ |
|
358 | """ | |
340 | Returns ``GitChangeset`` object representing commit from git repository |
|
359 | Returns ``GitChangeset`` object representing commit from git repository |
General Comments 0
You need to be logged in to leave comments.
Login now