gitpython - 如何使用 git python 获取第一个父提交的列表?
问题描述
我想从 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') failed due to: exit code(128) cmdline: git rev-list HEAD ^commit1 -- stderr: 'fatal: bad revision 'HEAD ^提交1'
但是,我可以运行
git rev-list HEAD ^commit1 --
在 bash 中运行良好。此外,该命令并没有真正给我我需要的东西。
解决方案
通过在 git python 中直接使用提交的父列表,我能够得到我需要的东西。这是对我有用的片段:
commits = list()
c = repo.head.commit
while (True):
firstparent = c.parents[0]
if (firstparent != commit1):
c = firstparent
commits.append(c)
else:
break
上面的代码不处理第一次提交(没有父母。)
推荐阅读
- regex - 在 perl 中读取日志文件并在方括号中找到值
- authentication - Kerberos 中的 401 未授权响应
- java - 使用 RestTemplate 发送 Multipart 文件
- bigcommerce - 基石有没有办法通过 url 注入 html?
- python - 当部分单词包含特殊字符时,Python正则表达式匹配单词边界
- excel - 使用 For 循环选择 Access 中的特定字段并将它们粘贴到 Excel
- java - 当我的布局中的 NestedScrollView 在其下方添加更多小视图时,它变得迟缓
- django - 使用 Django 和 Angular 进行 Windows 身份验证?
- html - 当 col-*-* 存在时,Bootsrap col-* 不起作用,但它应该是默认值
- tensorflow - 交叉熵损失的权重