L'approche que vous devrez utiliser dépend de la façon dont votre référentiel est public. Si cela ne vous dérange pas ou ne vous souciez pas de changer tous les SHA parce que vous êtes plus ou moins le seul à l'utiliser, mais que vous voulez régler ce problème pour toujours, vous pouvez lancer un git filter-branch
et appliquer dos2unix
à tous fichiers dans chaque commit. (Si vous partagez le référentiel, tout le monde a besoin de plus ou moins pour le renouveler complètement, donc c'est potentiellement dangereux.)
Donc la meilleure option et aussi un moyen plus simple serait de le changer seulement dans les têtes actuelles . Cela signifie que vos commits passés ont encore \r\n
terminaisons mais à moins que vous ne fassiez beaucoup de sélection du passé, cela ne devrait pas poser de problème. Les outils diff peuvent se plaindre un peu plus souvent, bien sûr, mais normalement, vous ne faites que des différences avec les commits à proximité, donc ce problème se résout au fur et à mesure que les commits s'accumulent.
Et les fins de ligne UNIX sont standard, vous avez raison à ce sujet. La meilleure approche consiste à configurer votre éditeur pour qu'il n'écrit ces fins que sur Windows. Sinon, il existe également un paramètre autocrlf
que vous pouvez utiliser.
Ajout à la partie réécriture historique:
La dernière fois que je l'ai fait la même chose, j'ai utilisé la commande suivante pour modifier tous les fichiers de fins unix.
#!/bin/bash
all2dos() { find * -exec dos2unix {} \; }
export -f all2dos
git filter-branch -f --tree-filter 'all2dos' --tag-name-filter cat --prune-empty -- --all
question connexe pour les personnes intéressées par ce: http://stackoverflow.com/questions/446244/are-crlf-lines-ok-in-a-rails-project-deployed-on-linux – Blixt