problèmes d'espace git
Conflits sur les espaces sucer
Les espaces ont fini par être une douleur horrible pour moi lors de l'utilisation de git.
git config apply.whitespace=strip
Semble augmenter vos chances d'avoir des conflits (lorsque vous vous déshabillez les espaces inutiles puis d'autres collaborateurs voient le dépouillé les espaces comme un changement à leurs commits?)
J'ai essayé quelques autres configurations pour apply.whitespace
dans le
passé, et peut-être que l'un des autres configs résout cela, ou peut-être qu'il y a
autres paramètres pour traiter les espaces que je viens de n'est pas encore sorti
à travers, mais je n'ai pas encore trouvé un moyen clair d'arriver là où je veux être.
Je veux résoudre silencieusement les conflits d'espaces:
Je ne veux jamais avoir un autre conflit sur les espaces. Si un autre committer modifie les espaces, ou je modifie les espaces et dois ensuite fusionner contre mes propres conflits, Je ne veux vraiment pas le savoir . Si quelqu'un change mon code de style K&R à un vrai style D'Accolade par changer les espaces, je préférerais que git autorise l'un ou l'autre des espaces configuration pour gagner sur avoir à voir les conflits à ce sujet. Je ne me soucie pas assez des espaces pour vouloir voir des conflits à ce sujet.
Donc... ... est - il possible que je puisse configurer git pour le faire?
Si cela fait une différence, voici ma version git, et mon actuel configuration:
tchalvak:~/ninjawars$ git --version
git version 1.6.0.4
tchalvak:~/ninjawars$
git config --list
color.branch=auto
color.diff=auto
color.status=auto
color.branch.current=yellow reverse
color.branch.local=yellow
color.branch.remote=green
color.diff.meta=yellow bold
color.diff.frag=magenta bold
color.diff.old=red bold
color.diff.new=green bold
color.status.added=yellow
color.status.changed=green
color.status.untracked=cyan
gui.recentrepo=/home/tchalvak/zd/htdocs/cms
apply.whitespace=strip
user.name=****
user.email=****
alias.co=checkout
github.user=tchalvak
github.token=****
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=...@github.com:tchalvak/ninjawars.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
2 réponses
Git1.6.0.4 semble un peu vieux, surtout si l'on considère que:
- dans 1.6.3.4, "
git apply --whitespace=fix
" n'a pas corrigé les espaces de fin sur un ligne incomplète - dans 1.6.3.2, "
whitespace
" attribut défini était destiné à détecter toutes les erreurs connues à git, mais il a dit à git d'ignorer les retours de chariot de fin.
Pourriez-vous essayer avec Git1. 6. 4. 1, et plutôt que de définir une configuration globale, définissez un attribut sur les fichiers que vous voulez le handle des espaces, comme ce patch décrit .
Dans un répertoire donné, créez un fichier .gitattributes
.
* -whitespace
Qui ignorera les erreurs 'espaces'.
Maintenant, cela n'empêchera aucun conflit en raison d'un manque de cohérence, mais cela peut valoir la peine d'essayer.
, Le patch était un test sur:
Ignore uniquement les erreurs d'espace dans les sous-répertoires
t/tNNNN-*.sh
ett/tNNNN
.
D'autres fichiers (comme les bibliothèques de test) devraient toujours être vérifier.
t/.gitattributes
t[0-9][0-9][0-9][0-9]-*.sh -whitespace
t[0-9][0-9][0-9][0-9]/* -whitespace
Remarque (Git 2.3.2+, T1 2015, commettre 0a80bc9, par Junio C Hamano aka gitster
) "git apply --whitespace=fix
" est plus silencieux:
"
git apply --whitespace=fix
" Correction d'erreurs d'espace dans la commune lignes de contexte, mais l'a fait sans rapport.Lorsque le correctif entrant contient des erreurs d'espace dans une ligne de contexte commune (c'est-à-dire une ligne qui devrait être trouvée et qui n'est pas modifiée par le correctif),"
apply --whitespace=fix
" corrige les erreurs d'espace la ligne a, en plus de l'erreur d'espace sur une ligne qui est mise à jour par le correctif.
Cependant, nous n'avons pas compté et signalé que nous avons corrigé les erreurs d'espaces sur ces lignes.
Si vous souhaitez activer ces paramètres, vous devez planifier une journée où tout le code source de votre projet est uniformément dépouillé, en exécutant un script ou en enregistrant chaque fichier à partir d'un éditeur qui effectuera la bande lors de la sauvegarde. Ensuite, tous les commits futurs seront surveillés par les paramètres, donc tout devrait aller de l'avant.