Lorsque vous utilisez Git sous Windows et que vous rapatriez le contenu d’un repository, le format des retours à la ligne dans les fichiers récupérés, est automatiquement défini. Cela peut être problématique lorsque vous devez exécuter un script shell dans un conteneur Docker. Avec le comportement par défaut, vous devez éditer les fichiers .sh à la main pour en modifier le format de retours à la ligne de Windows (CR-LF) à Unix (LF).
Bien sûr, ce comportement – bien que gênant – peut être modifié assez aisément. Soit via l’invite de commandes, soit à l’aide d’un petit fichier à ajouter à la racine du repository.
Solution 1 : modifier l’option globale
Il existe une commande permettant de modifier globalement le paramètre.
git config --global core.autocrlf false
Solution 2 : ajouter un fichier .gitattributes
Dans votre repository, vous pouvez ajouter un fichier .gitattributes qui contiendra le comportement à adopter selon le type de fichiers. Créez ce fichier à la racine du projet. Comme cela ne concerne que les scripts, nous allons simplement y ajouter le contenu suivant.
* text=auto
*.sh text eol=lf
Cela indique à l’exécutable git de forcer les retours à la ligne de type Unix pour les fichiers .sh, et d’utiliser le mode automatique pour le reste.
Vous pouvez dès lors sauvegarder et commit le fichier. Lorsque vous passerez d’une branche à l’autre, vos scripts auront toujours le bon format de retours à la ligne.
Si vous souhaitez obtenir davantage de documentation au sujet des attributs, rendez-vous sur le site de Git.
Voir aussi : Java – Log d’un repository SVN