Question

Contexte

Un certain nombre de mes applications les fichiers de configuration de l'utilisateur sont conservés dans un dépôt git pour faciliter le partage entre plusieurs machines et de multiples plates-formes. Parmi ces fichiers de configuration est .gitconfig qui contient les paramètres suivants pour la manipulation des caractères retour chariot de saut de ligne

[core]
    autocrlf = true
    safecrlf = false

Problème

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

Question

Quelles sont les meilleures pratiques pour le traitement de ces différences spécifiques de la plate-forme dans les fichiers de configuration?

Solution proposée

Je me rends compte ce problème pourrait être résolu en ayant une branche pour chaque plate-forme et de garder les choses communes dans le maître et la fusion avec la branche de la plate-forme lorsque maître se déplace vers l'avant. Je me demande s'il y a des plus facile solutions à ce problème?

Était-ce utile?

La solution

J'ai examiné ce genre de paramètre de configuration (crlf) largement dans la question:
distribution configuration git avec le code .

La conclusion était:

*.java +crlf
*.txt +crlf
...
  • éviter de faire toute sorte de conversion de type de fichiers qui ne ont pas besoin, en raison de divers effet secondaire d'une telle conversion sur les fusions, git status, environnement shell et svn import (voir « distributing configuration git avec le code » pour les liens et les références).
  • éviter toute conversion de crlf tout à fait si vous le pouvez.

Maintenant, en ce qui concerne la question spécifique de Paramètres par plates-formes , la branche n'est pas toujours l'outil, en particulier pour les données non liées au programme (c.-à-; ces paramètres ne sont pas liés à ce que vous développez , pour le stockage VCS l'histoire de votre développement)

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

  

votre vie sera beaucoup plus simple si vous mettez le code dépendant du système dans des répertoires différents et de traiter avec les dépendances inter-plate-forme dans le système de construction (Makefile ou tout ce que vous utilisez).

Dans ce cas, alors que les branches pourraient être utilisé pour le code dépendant du système, je recommande le répertoire des outils d'aide à paramètres dépendant du système, avec un script capable de construire le fichier .gitattributes approprié d'appliquer le bon réglage en fonction du déploiement repo la plate-forme.

Autres conseils

Ne jamais tourner autocrlf sur, il provoque rien d'autre que des maux de tête et douleurs.

Il n'y a aucune excuse à utiliser \r\n sur les fenêtres, tous les éditeurs décents (par définition) peut gérer \n.

Je pense que vous devriez avoir le .gitconfig dépendent du système d'exploitation, l'utilisateur utilise. Les utilisateurs de Windows ne ont pas besoin autocrlf du tout alors que les utilisateurs de Linux font. Par exemple. enregistrer les fichiers texte avec CRLF et Git convertir les fichiers automatiquement et en arrière pour les utilisateurs de Linux.

Vous pouvez également consulter .gitattributes , qui vous permet de définir quels fichiers sont convertis et qui ne sont pas. Si vous avez les fichiers de configuration dans un seul endroit, vous pouvez définir que la conversion ne se fait dans ce répertoire juste pour être du bon côté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top