2011-10-20 52 views
0

我仍在瀏覽其他類似的問題,但我還沒有完全找到我在找什麼,並希望得到一些幫助。GIT - 預先提交文件限制

我需要一個GIT repo,其中包含幾個目錄,每個目錄都有不同擴展名的文件。因此,例如:

A \ < - 目錄將有* .a文件只

乙\ < - B目錄下會有* .B文件只

Ç\ < - C目錄將有* .c,* .d和* .f文件只有

我知道我需要使用預先提交鉤來檢查驗證,但我不確定最好的方式來做到這一點。直接的答案似乎跳轉到每個目錄,並確保只有預期的擴展存在,但這可能會是一個相當長或複雜的腳本,因爲一些目錄允許有多個(有時是10個或更多)文件擴展名。

如果知道更簡單的方法,我很樂意聽到任何建議。

回答

1

您可能想要解析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$' 

這將產生其不要在末名的所有文件的列表「。一個」。將directory-A'\.a$'替換爲變量,然後您可以遍歷目錄/正則表達式對的列表。