J'ai une caisse git. Toutes les autorisations de fichiers sont différentes de ce que git pense qu'elles devraient être, elles apparaissent donc toutes comme modifiées.
Sans toucher au contenu des fichiers (je veux juste modifier les autorisations), comment puis-je définir toutes les autorisations de fichiers sur ce que git pense qu'elles devraient être?
git
file
file-permissions
Dale Forester
la source
la source
Réponses:
Git garde une trace de la permission des fichiers et expose les changements de permission lors de la création de correctifs à l'aide de
git diff -p
. Il nous suffit donc de:En une ligne:
vous pouvez également l'ajouter comme alias à votre configuration git ...
... et vous pouvez l'invoquer via:
Notez que si votre shell est
bash
, assurez-vous d'utiliser'
au lieu de"
guillemets autour du!git
, sinon il sera remplacé par la dernièregit
commande que vous avez exécutée.Merci à @Mixologic pour avoir souligné qu'en utilisant simplement
-R
ongit diff
, lased
commande encombrante n'est plus requise.la source
fatal: unrecognized input
Essayer
git config core.fileMode false
Depuis la
git config
page de manuel:la source
git checkout origin/master
les autorisations de fichier affectées au serveur soient définies sur ma copie de travail locale? Parce que chaque fois que je construis V8 pour ArangoDB, les autorisations de fichier sont modifiées afin que l'accès soit refusé à l'ensemble du dossier de construction (même avec des droits élevés; Windows 7+ c'est-à-dire). J'ai besoin de corriger toutes les autorisations de fichiers locaux avant de pouvoir continuer le processus de génération. Pouvez-vouscore.filemode false
résoudre ce problème aussi? Je soupçonne git de définir des autorisations Linux sur ma machine Windows. Les scripts de construction pourraient simplement les conserver et appliquer les mêmes autorisations aux fichiers nouvellement créés ...filemode
àfalse
!Git ne stocke pas les autorisations de fichiers autres que les scripts exécutables. Pensez à utiliser quelque chose comme git-cache-meta pour enregistrer la propriété et les autorisations des fichiers.
Git ne peut stocker que deux types de modes: 755 (exécutable) et 644 (non exécutable). Si votre fichier était de 444 git, il en aurait 644.
la source
umask
ainsi que d'un paramètre de configuration, voir stackoverflow.com/a/12735291/125150 ....a mode of 100644, which means it’s a normal file. Other options are 100755, which means it’s an executable file; and 120000, which specifies a symbolic link. The mode is taken from normal UNIX modes but is much less flexible — these three modes are the only ones that are valid for files (blobs) in Git (although other modes are used for directories and submodules).
fonctionnera dans la plupart des cas, mais si vous avez des outils de diff externes comme meld installés, vous devez ajouter --no-ext-diff
était nécessaire dans ma situation
la source
Vous pouvez également essayer un crochet de pré / post-paiement qui pourrait faire l'affaire.
Voir: Personnaliser Git - Git Hooks
la source
J'utilise git de cygwin sur Windows, la
git apply
solution ne fonctionne pas pour moi. Voici ma solution, exécutezchmod
sur chaque fichier pour réinitialiser ses autorisations.la source
git diff -p
utilisé dans la réponse de muhqu peut ne pas montrer toutes les divergences.core.filemode
estfalse
(qui est la valeur par défaut pour MSysGit)Ce code lit directement les métadonnées à la place:
Une doublure non destinée à la production (remplace entièrement les masques):
(Le crédit pour "$ '\ 0'" va à http://transnum.blogspot.ru/2008/11/bashs-read-built-in-supports-0-as.html )
la source
La chose la plus simple à faire est de simplement revenir sur les autorisations. Comme @kroger l'a noté, git ne suit que les bits exécutables. Donc, vous avez probablement juste besoin de l'exécuter
chmod -x filename
(ou+x
si c'est ce qui est nécessaire).la source
git show
: diff --git a / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java b / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java index cd6fa6a..e5b0935 100644 That peu en gras, il y a les autorisations de fichier.100644
à100755
. Je ne pense pas que vous méritez un downvote; Git devrait être rejeté. Il est tellement cassé à bien des égards à tellement de niveaux différents ...L'
etckeeper
outil peut gérer les autorisations et avec:Vous pouvez l'utiliser pour d'autres répertoires que
/etc
.Installez en utilisant votre gestionnaire de paquets ou obtenez les sources du lien ci-dessus.
la source