2011-03-17 91 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