web-dev-qa-db-fra.com

Fusion sans conflits d'espaces

J'ai un problème avec un grand commit qui change d'environ mille lignes de code, en supprimant les espaces blancs à la fin des lignes et en supprimant les espaces avant les tabulations.

Il y a également environ 50 demandes d'attraction pour ce projet, qui auront toutes des conflits lorsque mon commit sera fusionné. Est-ce que git peut être configuré de telle sorte que lors de la fusion de commits futurs, il ignore les conflits où l'un d'entre eux est juste un changement d'espace?

Modifier git lui-même ou utiliser un outil tiers n'est pas possible, mais utiliser un hook suffit.

163
callumacrae
 git merge -Xignore-all-space

Ou (plus précis)

 git merge -Xignore-space-change

devrait être suffisant pour ignorer tous les conflits liés à l’espace lors de la fusion.

Voir git diff :

--ignore-space-change

Ignorer les changements dans la quantité d'espaces.
Ceci ignore les espaces en fin de ligne et considère que toutes les autres séquences d’un ou plusieurs caractères d’espace sont équivalentes.

--ignore-all-space

Ignorer les espaces lors de la comparaison de lignes.
Ceci ignore les différences, même si une ligne a des espaces blancs tandis que l'autre ligne n'en a aucune.

ks1322 ajoute dans les commentaires un bon conseil:

Il vaut la peine de fusionner avec --no-commit et examinez la fusion avant la validation réelle .


Le OP Callum Macrae indique que, dans ce cas, la fusion se poursuit sans interruption et que les espaces de fin contenus dans les correctifs de demande d'extraction sont appliqués aux fichiers locaux.
Cependant, le PO utilise un hook de pré-validation qui prend en charge les espaces de fin.
(Je suppose un peu similaire à celui-ci , aussi référencé ici ).


Le hook de pré-validation du PO est référencé ici :

En plus de supprimer les espaces blancs de fin, il supprime un à trois espaces avant les tabulations (la largeur de la tabulation est définie sur 4) et ajoute des EOL.
J'ai eu des rapports selon lesquels le code qui ajoute l'EOL supprime le fichier dans Windows, mais je n'ai pas été en mesure de le répliquer.

222
VonC