web-dev-qa-db-fra.com

Meilleures pratiques pour la configuration git multiplateforme?

Le contexte

Un certain nombre de fichiers de configuration utilisateur de mon application sont conservés dans un référentiel git pour un partage facile sur plusieurs machines et plates-formes. Parmi ces fichiers de configuration se trouve .gitconfig qui contient les paramètres suivants pour la gestion des caractères de saut de ligne de retour chariot

[core]
    autocrlf = true
    safecrlf = false

Problème

Ces paramètres sont également appliqués sur une plate-forme GNU/Linux, ce qui provoque des erreurs obscures.

Question

Quelles sont les meilleures pratiques pour gérer ces différences spécifiques aux plates-formes dans les fichiers de configuration?

Solution proposée

Je me rends compte que ce problème pourrait être résolu en ayant une branche pour chaque plate-forme et en gardant les trucs communs dans le maître et en fusionnant avec la branche de la plate-forme lorsque le maître avance. Je me demande s'il existe des solutions plus faciles à ce problème?

50
Bas Bossink

J'ai passé en revue ce type de paramètre de configuration (crlf) dans la question:
distribution de la configuration git avec le code.

La conclusion était:

 *. Java + crlf 
 *. Txt + crlf 
 ... 
  • éviter de faire tout type de conversion de type de fichiers qui n'en ont pas besoin, en raison des divers effets secondaires d'une telle conversion sur les fusions, git status, Environnement Shell et svn import (voir " distribution de la configuration git avec le code " pour les liens et les références).
  • évitez toute conversion crlf si vous le pouvez.

Maintenant, en ce qui concerne le problème spécifique des paramètres par plate-forme , la branche n'est pas toujours le bon outil, en particulier pour les données non liées au programme (c'est-à-dire ces paramètres ne sont pas liés à ce que vous développez, seulement au VCS stockant l'historique de votre développement)

Comme indiqué dans la question Git: Comment maintenir deux branches d'un projet et fusionner uniquement les données partagées? :

votre vie sera beaucoup plus simple si vous placez le code dépendant du système dans différents répertoires et gérez les dépendances multiplateformes dans le système de construction (Makefiles ou tout ce que vous utilisez).

Dans ce cas, alors que les branches peuvent être utilisées pour du code dépendant du système, je recommanderais un répertoire pour les outils de prise en charge des paramètres dépendants du système, avec un script capable de construire le .gitattributes fichier pour appliquer le bon paramètre en fonction de la plate-forme de déploiement du référentiel.

32
VonC

N'activez jamais autocrlf, cela ne provoque que des maux de tête et des douleurs.

Il n'y a aucune excuse pour utiliser \r\n sur Windows, tous les éditeurs décents (par définition) peuvent gérer \n.

53
hasen