是否可以创建一个服务器端预接收git钩子来拒绝--force推送,但不拒绝--force-with-lease推送
发布于 2021-07-23 08:32:24
没有办法做到这一点,因为它们看起来与服务器完全相同。
Git ref更新的工作方式是客户端请求服务器将给定的ref从旧值更新为新值。在服务器端,Git可以判断旧值是否是新值的祖先(常规推送)或不是(强制推送),并采取相应的行动。但是,在这两种情况下,旧的值必须与服务器上的当前值匹配;如果不匹配,ref更新将失败,因为这意味着您已经与其他正在推动的人竞争。
在大多数情况下,当您使用--force进行引用更新时,旧的值是服务器在其引用通告中通告的任何值。--force-with-lease所做的是,它要求Git指定旧值,而不是从服务器已通告的内容,而是从远程跟踪分支或用户指定的值。但是,服务器并不知道用户已经指定了这个选项。它所知道的就是旧值是否匹配(这始终是必需的),以及它是否是新值的父级(在这种情况下是强制推送)。
https://stackoverflow.com/questions/68485169
复制相似问题