Права доступа к файлам Git в Windows

Я прочитал несколько вопросов о разрешениях файлов в Git, и я все еще немного смущен. У меня есть РЕПО на GitHub, разветвленное от другого. После слияния они должны быть идентичными. Однако:

$ git diff --summary origin/epsilon master/epsilon
 mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee
 mode change 100644 => 100755 ants/util/block_test.sh
 mode change 100644 => 100755 manager/mass_skill_update.py
 mode change 100644 => 100755 worker/jailguard.py
 mode change 100644 => 100755 worker/release_stale_jails.py
 mode change 100644 => 100755 worker/start_worker.sh

Я попытался изменить права доступа к файлам, но это не изменяет результаты diff.

5 ответов


Я нашел решение о том, как изменить разрешения (также) на Windows здесь:http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

например, следующая команда добавляет разрешение user execute в произвольный файл:

git update-index --chmod=+x <file>

из другого вопроса здесь, в stackoverflow: как сделать git игнорировать изменения режима файла (chmod)?

попробуй:

git config core.filemode false

С git-config (1):

   core.fileMode
       If false, the executable bit differences between the index and the
       working copy are ignored; useful on broken filesystems like FAT.
       See git-update-index(1). True by default.

удобный One-liner для Git Bash:

find . -name '*.sh' | xargs git update-index --chmod=+x

он будет отмечать все .sh файл как исполняемый файл. После этого, вы просто должны git commit.


Если вы используете Cygwin git (или Linux git, я полагаю), есть хороший шанс, что ваше ядро.настройка filemode была установлена на уровне проекта в $projdir/.git / config . Я обнаружил, что мне нужно было сделать следующее, чтобы мой Cygwin git и мой Windows git хорошо сосуществовали в файловой системе Windows без несуществующих изменений файлового кода, появляющихся все время:

  • удалите ядро настройки линии.filemode в $projdir/.git / config
  • в Windows git запустите " git config --глобальное ядро.filemode false"

Это позволяет моему Cygwin git продолжать видеть изменения filemode, которые обычно актуальны, в то же время инструктируя Windows git игнорировать изменения filemode, которые он видит, которые обычно являются ложными срабатываниями.


я исправил это, изменив разрешения файлов в Ubuntu, commit, push и все в порядке. Кажется, это просто не будет работать с msysgit на Windows/NTFS.