2024-09-30 02:23:12 发布
网友
我想使用dulwich从Python脚本执行以下命令:
$ git branch --contains <myCommitSha> | wc -l
我的目的是检查某个特定提交(sha)是否放置在多个分支中。在
当然,我认为可以从Python执行上面的命令并解析输出(解析分支的数量),但这是最后的解决方案。在
还有其他想法/意见吗?提前谢谢。在
当然,这个功能是为你自己设计的,但你自己不能实现。在
你也可以这样做(未经测试):
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>所做的,因为我不知道还有其他捷径。在
git branch contains <myCommitSha>
既然您的选择是(a)让python执行迭代,或者(b)让C执行相同的迭代,我就选择C。:)
当然,这个功能是为你自己设计的,但你自己不能实现。在
你也可以这样做(未经测试):
这将为您提供包含给定提交的所有分支头的列表,但运行时的运行时间为O(n*m),n将增加回购中的提交量,m将增加分支的数量。git实现的运行时可能是O(n)。在
以防有人想知道如何使用gitpython来实现这一点:
因为分支只是指向随机提交的指针,并且它们不会以任何方式“描述”树,所以没有任何东西将随机提交链接到分支。在
如果一个给定的提交是某个分支点所指向的提交的祖先,我唯一明智的方法是从分支顶部提交向下遍历所有祖先链。在
换句话说,在dulwich,我会遍历分支并向后遍历,看看链上是否有sha。在
我很确定这正是
git branch contains <myCommitSha>
所做的,因为我不知道还有其他捷径。在既然您的选择是(a)让python执行迭代,或者(b)让C执行相同的迭代,我就选择C。:)
相关问题 更多 >
编程相关推荐