如何使用git python获取第一批父提交的列表?

时间:2019-02-27 14:44:11

标签: gitpython

我想从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中运行正常。此外,该命令并不能真正满足我的需求。

1 个答案:

答案 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

上面的代码不处理第一次提交(没有父母)。