我正在尝试更新一个Python脚本,该脚本使用子流程来检查一些本地存储库的状态,以及使用 GitPython 。 <{1}}的 GitPython 中的等效命令是什么,或者检查本地仓库可快进或 out-的更好方法是什么?约会(等)?
git remote show origin
最后两行是我主要关注的问题。通过迭代$ git remote show origin
* remote origin
Fetch URL: <url>
Push URL: <url>
HEAD branch: master
Remote branches:
XYZ tracked
master tracked
Local branches configured for 'git pull':
XYZ merges with remote XYZ
master merges with remote master
Local refs configured for 'git push':
XYZ pushes to XYZ (up to date)
master pushes to master (up to date)
和git.Repo.heads
并比较git.Repo.remotes.origin.refs
(等)哈希,看起来这可能通过 GitPython 实现。这似乎比上面的单个本机git命令要多得多,并且需要更多的工作来判断哪一方已经过时。我期待像.master.commit
这样的东西。在 GitPython 中确定这个的正确方法是什么?
答案 0 :(得分:1)
如果您需要每个分支的简明报告,我不知道比将git remote show origin
作为子进程运行更好的方法。如果您对单个分支感兴趣,假设您已完成提取,则可以检查您背后提交的提交数量
或像这样:
commits_behind = list(repo.iter_commits(
'{branch}..{tracking_branch}'.format(
branch=branch,
tracking_branch=repo.heads[branch].tracking_branch())))
commits_ahead = list(repo.iter_commits(
'{tracking_branch}..{branch}'.format(
branch=branch,
tracking_branch=repo.heads[branch].tracking_branch())))
答案 1 :(得分:1)
如果gitpython没有包含想要的功能,您可以使用(String)((ParseUser)post.get("writerId")).get("username")
。它直接调用git所以它非常方便,虽然我猜大多数它只是一个子进程'包装器:
git.cmd.Git()