簡體   English   中英

GIT-預提交文件限制

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM