[英]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.