GitPython相当于“git remote show origin”?

时间:2012-10-01 21:20:09

标签: python git gitpython

我正在尝试更新一个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 中确定这个的正确方法是什么?

2 个答案:

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