Skip to content

Commit 6c550bb

Browse files
authored
Merge pull request #110 from AKSW/feature/moveLookupToRepository
Make lookup a class method.
2 parents 628feba + 700d438 commit 6c550bb

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

quit/git.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,24 @@ def is_bare(self):
9898
def close(self):
9999
self._repository = None
100100

101+
def lookup(self, name):
102+
"""Lookup the oid for a reference.
103+
104+
The name is looked for in "refs/heads/<name>", "refs/tags/<name>" and directly.
105+
It does not matter weather the found reference is a symbolic or a direct, it will be
106+
resolved to an oid.
107+
108+
Return:
109+
Oid
110+
"""
111+
for template in ['refs/heads/%s', 'refs/tags/%s', '%s']:
112+
try:
113+
reference = self._repository.lookup_reference(template % name)
114+
return reference.resolve().target
115+
except KeyError:
116+
pass
117+
raise RevisionNotFound(name)
118+
101119
def revision(self, id='HEAD'):
102120
try:
103121
commit = self._repository.revparse_single(id)
@@ -109,16 +127,8 @@ def revision(self, id='HEAD'):
109127
def revisions(self, name=None, order=pygit2.GIT_SORT_REVERSE):
110128
seen = set()
111129

112-
def lookup(name):
113-
for template in ['refs/heads/%s', 'refs/tags/%s']:
114-
try:
115-
return self._repository.lookup_reference(template % name)
116-
except KeyError:
117-
pass
118-
raise RevisionNotFound(name)
119-
120130
def traverse(ref, seen):
121-
for commit in self._repository.walk(ref.target, order):
131+
for commit in self._repository.walk(ref, order):
122132
oid = commit.oid
123133
if oid not in seen:
124134
seen.add(oid)
@@ -129,11 +139,11 @@ def iter_commits(name, seen):
129139

130140
if not name:
131141
for name in self.branches:
132-
ref = self._repository.lookup_reference(name)
142+
ref = self.lookup(name)
133143
commits += traverse(ref, seen)
134144
else:
135-
ref = lookup(name)
136-
commits += traverse(ref, seen)
145+
oid = self.lookup(name)
146+
commits += traverse(oid, seen)
137147
return commits
138148

139149
return iter_commits(name, seen)

0 commit comments

Comments
 (0)