我想从git python运行与该命令等效的命令,但无法找到一种方法来实现此目的。
git rev-list --first-parent commit1..HEAD
我正在寻找将该命令的结果放入git python的Commit对象的可迭代对象中。我尝试了repo.iter_commits,但是它似乎无法接受不带参数的rev-list参数。
我的用例是“ commit1”将是分支所基于的提交,在分支被检出时,我将运行此代码。因此,即使存在来自分支“ commit1”的合并提交,此命令也会为我提供提交到分支的提交列表。
我也尝试过
repo.iter_commits('HEAD ^commit1')
但是会导致以下错误: git.exc.GitCommandError:Cmd('git')失败的原因是:退出代码(128) cmdline:git rev-list HEAD ^ commit1- stderr:'致命:错误的修订版'HEAD ^ commit1'
但是,我可以跑步
git rev-list HEAD ^commit1 --
在bash中运行正常。此外,该命令并不能真正满足我的需求。
答案 0 :(得分:1)
通过直接与git python中的提交的父母列表一起工作,我可以获得所需的东西。以下是对我有用的代码片段:
commits = list()
c = repo.head.commit
while (True):
firstparent = c.parents[0]
if (firstparent != commit1):
c = firstparent
commits.append(c)
else:
break
上面的代码不处理第一次提交(没有父母)。