git add hook / получение git, чтобы игнорировать режимы файлов новых файлов - PullRequest
0 голосов
/ 17 марта 2011

Я работаю с git-репозиторием как для Windows, так и для Linux / Mac. Когда я создаю новые файлы в окнах или редактирую их в некоторых текстовых редакторах, режим файлов изменяется на 775. Я могу получить git, чтобы игнорировать изменения режима файлов с помощью

git config core.filemode false

но я также хочу, чтобы большинство новых файлов имели режим 664 (не 775). Лучшее, что я придумала до сих пор, это хук перед фиксацией

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

но это делает не так, если я добавил новый файл, затем отредактировал его перед фиксацией, а затем зафиксировал без добавления. Есть ли лучший способ сделать это, или что-то вроде ловушки перед добавлением или после добавления?

Редактировать: git diff --cached --name-only также дает мне файлы, которые были удалены, так что я действительно хочу что-то вроде git diff --cached --name-only --diff-filter=ACMRTUXB

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Вместо использования chmod и чтения вы можете использовать git update-index --chmod=-x <files> для непосредственного изменения индекса.

0 голосов
/ 17 марта 2011

Посмотрите на атрибуты git. Вы можете справиться с этим там. Пятно / чистый может быть способ справиться с этим.

...