在 git-python 中通过 hexsha 获取 Commit 对象
Get Commit object by hexsha in git-python
我正在尝试查找两次特定提交之间已签入的提交的内容。
在 git 我会做 git rev-list --ancestry-path <older_commit_sha>..<newer_commit_sha>
。
在 git-python 中,由于看起来没有直接的方法,我求助于通过 repo.git.execute()
调用确切的命令。
输出是一串提交 ID(十六进制 SHA)。
现在,在 git-python 中有没有一种方法可以从 execute()
给出的十六进制 SHA 开始创建一个有效的 Commit
对象?
经过多次探索,鉴于这个问题没有引起太大关注,我求助于 .execute()
。
具体来说:
commits = repo.git.execute(['git', 'rev-list', '--ancestry-path',
'%s..%s' % (oldCommit.hexsha, newCommit.hexsha)]).split()
当然,oldCommit
和newCommit
是git.Commit
个对象。
我没有在git-python中找到一个函数来通过sha获取特定的提交对象。
所以我只能想迭代所有的提交来得到它:
def get_commit_by_sha(repo, sha):
for c in r.iter_commits():
if c.hexsha == last_one:
return c
return None
至于比较两个提交特定提交之间的差异。
diff
方法很有用,简单用法:
old_commit.diff(new_comit.hexsha)
结果是一个git.diff.DiffIndex
对象,参考https://gitpython.readthedocs.io/en/stable/reference.html#git.diff.DiffIndex
我正在尝试查找两次特定提交之间已签入的提交的内容。
在 git 我会做 git rev-list --ancestry-path <older_commit_sha>..<newer_commit_sha>
。
在 git-python 中,由于看起来没有直接的方法,我求助于通过 repo.git.execute()
调用确切的命令。
输出是一串提交 ID(十六进制 SHA)。
现在,在 git-python 中有没有一种方法可以从 execute()
给出的十六进制 SHA 开始创建一个有效的 Commit
对象?
经过多次探索,鉴于这个问题没有引起太大关注,我求助于 .execute()
。
具体来说:
commits = repo.git.execute(['git', 'rev-list', '--ancestry-path',
'%s..%s' % (oldCommit.hexsha, newCommit.hexsha)]).split()
当然,oldCommit
和newCommit
是git.Commit
个对象。
我没有在git-python中找到一个函数来通过sha获取特定的提交对象。 所以我只能想迭代所有的提交来得到它:
def get_commit_by_sha(repo, sha):
for c in r.iter_commits():
if c.hexsha == last_one:
return c
return None
至于比较两个提交特定提交之间的差异。
diff
方法很有用,简单用法:
old_commit.diff(new_comit.hexsha)
结果是一个git.diff.DiffIndex
对象,参考https://gitpython.readthedocs.io/en/stable/reference.html#git.diff.DiffIndex