2011-03-17 92 views
0

我在windows和linux/mac上都使用git倉庫。當我在Windows上創建新的文件,或者在某些文本編輯器進行編輯,文件模式更改爲775,我可以得到git的忽略與git添加鉤子/讓git忽略新文件的文件模式

git config core.filemode false 

文件模式的變化,但我也想大多數新文件有模式664(不是775)。我想出了迄今爲止最好的是pre-commit鉤子

git diff --cached --name-only | egrep -v '\.(bat|py|sh|exe)' | xargs -d"\n" chmod 664 
git diff --cached --name-only | egrep -v '\.(bat|py|sh|exe)' | xargs -d"\n" git add 

但這確實錯了的事情,如果我添加了一個新的文件,然後commiting之前再次編輯它,然後COMMITED無添加它。有沒有更好的方法來做到這一點,或者像預先添加或後添加鉤子一樣?

編輯:git diff --cached --name-only也給了我已刪除的文件,所以我真正想要的是一樣的東西git diff --cached --name-only --diff-filter=ACMRTUXB

回答

1

而不是使用chmod和讀取,您可以使用git update-index --chmod=-x <files>直接修改索引。

0

看看Git屬性。你可以在那裏處理它。塗抹/清潔可能是一種處理它的方法。

+0

污跡和乾淨似乎是對文件內容起作用的過濾器。有沒有辦法讓他們對元數據採取行動? (將clean操作設置爲chmod -x會導致錯誤。) – 2011-03-18 05:56:24