Я не могу найти коммит, на который указывает тег, с помощью дерева коммитов.В этом конкретном примере я использую веб-репозиторий Tornado, клонированный непосредственно из Github.
import sys
import git
if len(sys.argv) < 2:
print 'python git_test.py <repo path>'
sys.exit(0)
repo = git.Repo(sys.argv[1])
commits = {}
for git_commit in repo.iter_commits():
commits[git_commit.hexsha] = git_commit
print len(commits)
for git_tag in repo.tags:
print 'Tag %s points to Commit %s' % (
git_tag.name,
commits[git_tag.commit.hexsha]
)
Предполагается, что все коммиты найдены в прямом ациклическом графе git, однако я попробовал другой подход, который рекурсивно использовал навигациючерез рекурсивную функцию, и он дал те же результаты.
ian@ian-EP45-UD3L:~/code/playground$ python git_test.py ~/code/tornado/
459
Tag v1.0.0 points to Commit eb5b3d8df7a305ac1ffa0a12c813e5d7ee4d6cd3
Traceback (most recent call last):
File "git_test.py", line 19, in <module>
commits[git_tag.commit.hexsha]
KeyError: '2b5064b7ed962603ade0db0c8e21846a9879e30e'
Я что-то делаю неправильно, как я могу обойти эту проблему?Любая помощь приветствуется!
Я использую git-python v0.3.1.