使用Python-dulwich检查哪些分支包含特定的git-commit-sha?

2024-09-30 02:23:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用dulwich从Python脚本执行以下命令:

$ git branch --contains <myCommitSha> | wc -l

我的目的是检查某个特定提交(sha)是否放置在多个分支中。在

当然,我认为可以从Python执行上面的命令并解析输出(解析分支的数量),但这是最后的解决方案。在

还有其他想法/意见吗?提前谢谢。在


Tags: git命令目的脚本branch数量分支解决方案
3条回答

当然,这个功能是为你自己设计的,但你自己不能实现。在

你也可以这样做(未经测试):

branches = [ref for ref in repo.refs.keys("refs/heads/") if
            any((True for commit in repo.get_walker(include=[repo.refs[ref]])
                 if commit.id == YOURSHA))]

这将为您提供包含给定提交的所有分支头的列表,但运行时的运行时间为O(n*m)n将增加回购中的提交量,m将增加分支的数量。git实现的运行时可能是O(n)。在

以防有人想知道如何使用gitpython来实现这一点:

repo.git.branch(' contains', YOURSHA)

因为分支只是指向随机提交的指针,并且它们不会以任何方式“描述”树,所以没有任何东西将随机提交链接到分支。在

如果一个给定的提交是某个分支点所指向的提交的祖先,我唯一明智的方法是从分支顶部提交向下遍历所有祖先链。在

换句话说,在dulwich,我会遍历分支并向后遍历,看看链上是否有sha。在

我很确定这正是git branch contains <myCommitSha>所做的,因为我不知道还有其他捷径。在

既然您的选择是(a)让python执行迭代,或者(b)让C执行相同的迭代,我就选择C。:)

相关问题 更多 >

    热门问题