2

У меня есть система разработки Ubuntu, использующая git для управления файлами, но мне нравится выполнять редактирование в QTCreator в другой системе (Windows), поэтому у меня есть сетевой диск Windows, сопоставленный с сервером Ubuntu.

Тем не менее, кажется, что всякий раз, когда я сохраняю файл, он добавляет флаг выполнения на окнах. Иногда оно меняется с 664 на 764, а иногда я видел, как оно меняется на 777.

Так что я делал chmod 644 до того, как начал делать git add, но это скорее боль в заднице, и иногда я забываю.

Есть ли хороший способ предотвратить добавление +x в windows/QT или просто автоматически добавить git add в файлы chmod 664 my .c и .h перед установкой / фиксацией?

Спасибо

1 ответ1

3

Редактировать:

Решением может быть присвоение переменной core.fileMode false в вашем ~/.gitconfig . Это заставляет git игнорировать исполняемый бит.

Если вы используете файловую систему FAT, вы можете также установить для core.ignorecase значение true .

Старый ответ

Предполагая, что вы делаете коммит на Linux, вы можете использовать ловушку, в данном случае .git/hooks/pre-commit:

#!/bin/sh
find . -type f -not -perm 0644 -exec chmod 644 {} \+
find . -type d -not -perm 0755 -exec chmod 755 {} \+
git add .

Это несколько грубо в том смысле, что все файлы и каталоги вызываются с определенным разрешением. Возможно, вы захотите добавить команды chmod для определенных файлов, если они должны иметь другие разрешения между find и git add . С другой стороны, это коротко и просто.

Более сложное решение может использовать git diff --cached --name-only чтобы проверить, какие файлы на самом деле будут зафиксированы, и исправит только те. Но это будет более сложным и не будет исправлять случайные изменения разрешений.

#!/bin/sh
FILES=$(git diff --cached --name-only)
chmod 644 $FILES

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .