簡體   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