我遇到这种情况,我的预接收挂钩脚本只需要允许名称以Tag_
例如,我有一个包含3个文件的提交,
Tag_a
Tagb
Tag_c
现在,我的预接收脚本应仅允许Tag_a
和Tag_b
,但不允许Tagb
。
我在Stack Overflow上的某处读到如果我们拒绝一个文件并允许推送其他文件,那么提交的哈希(sha1)值可能会改变。
所以我的问题是,有没有办法实现这个目标?
答案 0 :(得分:1)
不要偷偷摸摸。只要拒绝整个提交,用户应该--amend
承诺排除不允许的文件并尝试再次推送。
答案 1 :(得分:0)
pre-receive
或update
挂钩只能接受或拒绝整个引用名称。这是一个全有或全无的交易。您可以检查建议的树,但是您必须弄清楚ref-name所指向的前一个位置的变化。
例如,如果您收到refs/heads/zog
从d4df144c36f26c7887e5f8a74812f06a3b0338ec
移动到5e013711f5d6eb3f643ef562d49a131852aa4aa1
的内容,则需要查看在这些点之间添加(或删除)的所有提交,并查看每次提交中正在进行的树更改。然后,您可以确定分支名称可以更改,或者它不正常,基本上就是这样。新提交可能将旧的提交作为其(单个)父级,或者它可能具有另一个新提交作为其父级,而后者又具有第三次新提交等等(并且任何新提交可以是与多个父级的合并。 )