7

我正在使用自定义构建系统来管理大量 git 存储库并主要用 python 编写。

如果我可以编写一个命令来报告所有存储库的当前分支,然后报告“分支”的头部是否与“远程/来源/分支”的头部相同,那将节省我很多时间。

我们已经有一个命令可以在每个 git 存储库中运行一个 shell 命令,我正在寻找的是一种从 git 获取一些关于分支和远程/源/分支的相对位置的简单格式化信息的方法。要么是提交数量的差异,要么是一个简单的布尔值。

从 git 中获取这些信息的方法是什么,这将最大限度地减少我必须在 python 端进行的解析和处理量?

4

3 回答 3

19

如果你有足够新的 git 版本,你可以使用:

$ git rev-list --count --left-right branch...origin/branch
2   1

第一个数字,如果提交的数量在branch之前origin/branch,第二个是提交的数量在后面。所以这个分支有两个尚未提交到上游的提交,并且有一个上游提交还没有在我的本地分支中。

我相信引入 --count 时是 1.6 或 1.7。

于 2013-04-16T16:12:16.067 回答
1

git status显示您在远程跟踪分支之前/之后的提交次数。不过,您需要先执行 git fetch ,否则 git 无法知道是否有任何新内容进入远程。

于 2013-04-16T12:58:38.107 回答
1

如果branch确保是origin/branch(即可快速转发)的祖先,则

git log --oneline branch..origin/branch

应该打印它们之间的提交,每一个都在一行中。您可以在 python 或wc -l.

不确定是否存在简单通用的解决方案。和可能没有共同的祖先origin/branchbranch如果涉及孤儿分支。

于 2013-04-16T13:13:29.640 回答