我试图通过仅允许来自master
分支的push
命令来限制推送到test
分支。
如何判断push
来自哪个分支?
答案 0 :(得分:2)
您无法在接收和更新挂钩中使用传统方法。推动不要"来自"特别是在任何地方:钩子只需获取引用名称和SHA-1值的列表。
pre-receive
和update
次约会有机会批准或拒绝将标签refs/whatever
更改为新的SHA-1的每个请求(在您需要的情况下,您需要)查看标签是否具体refs/heads/master
)。 (pre-receive
和update
之间的区别在于前者获取stdin上的整个列表,包含旧的和新的SHA-1值,而后者一次获得一个更新作为参数,即,它为每个待更新的引用调用一次。单个push
可以推送许多引用更新。pre-receive
钩子可以验证整个集合,但只能说是的或者Nay到整体更新;如果它说是Yea,update
挂钩可以单独验证每个更新,并分别对每个更新说Yea或Nay。)
在完成所有更新后调用post-receive
挂钩,其中包含用于指向 oldsha X
的列表>现在指向 newsha "变化。
在所有情况下,没有源信息,只有原始SHA-1 - 这是有道理的,因为运行push
命令的任何人都可以这样做:
git push remote 1234567:refs/tags/foo
例如,创建一个指向对象1234567
的新标记,而不在其自己的仓库中实际拥有任何相应的标记。
为了使这类事情发挥作用,你可以完全拒绝推送到master
,并改变进程:用户推送到其他一些分支(甚至是不同的存储库),一旦结果被审查,现在审查的提交通过其他方式(手动或自动合并,从成功)引入master
。
答案 1 :(得分:0)
最快的方法是使用gitk:http://git-scm.com/docs/gitk