繁体   English   中英

预先接收 git hook 以拒绝强制但允许强制与租约推送

[英]pre-receive git hook to reject force but allow force-with-lease push

是否可以创建一个服务器端 pre-receive git hook 来拒绝使用--force推送但不拒绝使用--force-with-lease推送?

没有办法做到这一点,因为它们看起来与服务器相同。

Git ref 更新的工作方式是客户端要求服务器将给定的 ref 从旧值更新为新值。 在服务器端,Git 可以判断旧值是否是新值的祖先(常规推送)或不是(强制推送),并相应地采取行动。 但是,无论哪种情况,旧值都必须与服务器上的当前值匹配; 如果没有,则 ref 更新将失败,因为这意味着您已经与正在推动的其他人进行了比赛。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

在大多数情况下,当您使用--force进行 ref 更新时,旧值是服务器在其 ref 广告中广告的值。 --force-with-lease作用是要求 Git 指定旧值,而不是来自服务器广告的旧值,而是来自远程跟踪分支或用户指定的值。 但是,服务器不知道用户已指定此选项。 它只知道旧值是否匹配(始终需要)以及它是否是新值的父值(在这种情况下是强制推送)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM