git: jak mogę skonfigurować git, aby ignorował zmiany uprawnień do plików

21

Mam kilka projektów git na serwerze linux.

używam komputerów Mac i Linux do programowania. problem polega na tym, że uprawnienia systemu plików mac tak naprawdę nie działają tak jak w systemie Linux, więc wszystkie pliki wydają się znajdować na umask 0755. więc za każdym razem, gdy ściągam kod na moim komputerze Mac, git statuspokazuje, że wszystkie moje pliki są zmieniane i kiedy git diffgo używam pokazuje, że jedyną zmianą jest umask. jak mogę powiedzieć gitowi, aby nie zapisywał i sprawdzał zmiany w umask?

dzięki!

ufk
źródło
1
Jestem całkiem pewien, że OS X obsługuje uprawnienia w stylu uniksowym ...
grawity
1
umask i uprawnienia to nie to samo. Czy na pewno naprawdę wiesz, co tu robisz?
Marnen Laibow-Koser

Odpowiedzi:

28

Ustaw core.fileModewłaściwość konfiguracji na false. Możesz to łatwo zrobić za pomocą tego polecenia:

git config core.fileMode false
Łatki
źródło
Czy jest to ustawienie dla repozytorium, czy jest możliwe, aby działało to globalnie?
acme
2
@acme: Podobnie jak wszystkie ustawienia git, możesz ustawić je dla repozytorium, dla użytkownika lub całego systemu, nie przekazując odpowiednio dodatkowego przełącznika --globallub --system. Zobacz git help configszczegóły.
Łaty
Dzięki! Ale ustawienie globalne nie powoduje automatycznego dodania tego ustawienia do nowych repozytoriów, to tylko ustawienie na moim komputerze lokalnym?
acme 1'12
@ acme: Tak, ustawienie opcji --globalwpływa na wszystkie operacje w dowolnym repozytorium dostępnym lokalnie z kontem użytkownika. Nie wpływa to na nikogo innego. Aby ustawić go dla wszystkich użytkowników określonego repozytorium, musisz przełączyć ustawienie dla repozytorium na serwerze, do którego wszyscy się pchają.
Łaty
1

Mam mały skrypt powłoki, aby to przełączyć

cat ~ / bin / git-ignore-chmod-toggle

#!/bin/bash
# Copyright 2015 Alexx Roche, MIT license.
# based on http://superuser.com/a/261076

gitCHMODstate=$(git config --get core.fileMode)

# toggle with git config core.fileMode true 

if [ $gitCHMODstate == 'true' ];then
    echo "git now ignores file mode (chmod)"
    git config core.fileMode false
else
    echo "git not looks for files modes changed with chmod"
    git config core.fileMode true
fi

Dzięki temu mogę przełączać git, sprawdzać inne zmiany, a następnie szybko się włączać.

Alexx Roche
źródło