[英]GIT - pre-commit file restriction
我仍在尋找其他類似的問題,但是我還沒有找到我想要的東西,希望能有所幫助。
我需要一個GIT存儲庫,其中包括幾個目錄,每個目錄的文件具有不同的擴展名。 因此,例如:
A \\ <-目錄將僅具有* .a文件
B \\ <-B目錄將僅具有* .b文件
C \\ <-C目錄將僅具有* .c,*。d和* .f文件
我知道我需要使用pre-commit掛鈎來檢查驗證,但是我不確定最好的方法。 最直接的答案似乎是跳轉到每個目錄並確保僅存在預期的擴展名,但這可能會成為一個相當長/復雜的腳本,因為某些目錄允許使用多個(有時為10個或更多)文件擴展名。
如果知道更簡單的方法,我很樂意聽取任何建議。
您可能想解析Git命令的輸出。 最明顯的選擇是:
git diff --cached --name-only --diff-filter=ACR
這將打印所有已添加(A),已復制(C)和已重命名(R)文件的列表。 如果需要,您還可以檢查已修改的文件(M),但是只要您不讓它們首先進入,就沒有必要。 --name-only
使您無法獲得實際的差異,-- --cached
告訴它查看索引(臨時區域)而不是工作樹,該樹可能包含未分級的更改。 然后,您可以對每個打印的文件名進行所需的任何驗證。
或者,您可以逐目錄執行diff目錄,以簡化驗證過程,例如:
git diff --cached --name-only --diff-filter=ACR directory-A | grep -v '\.a$'
這將產生一個名稱不以“ .a”結尾的所有文件的列表。 將directory-A
和'\\.a$'
替換為變量,然后可以遍歷目錄/正則表達式對的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.