50 votes

Les meilleures pratiques pour la configuration multi-plateformes git?

Contexte

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

[core]
    autocrlf = true
    safecrlf = false

Problème

Ces paramètres obtient également appliqué sur un système GNU/Linux, la plateforme causes obscures erreurs.

Question

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

Solution proposée

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

59voto

hasenj Points 36139

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

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

33voto

VonC Points 414372

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

La conclusion est la suivante:

*.java +crlf
*.txt +crlf
...
  • éviter de faire toute sorte de conversion de type de fichiers qui n'en ont pas besoin, en raison des effets secondaires de cette conversion sur la fusion, git status, de l'environnement de shell et d' svn import (voir "distribution de configuration git avec le code" pour les liens et les références).
  • éviter tout crlf de conversion tout à fait si vous le pouvez.

Maintenant, concernant la question spécifique de par les paramètres de plateforme, de la direction générale n'est pas toujours le bon outil, en particulier pour les non-données associées au programme (j'.e; ces paramètres ne sont pas liés à ce que vous êtes en développement, seulement pour le VCS stockage de l'histoire de votre développement)

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

votre vie sera beaucoup plus simple si vous mettez le système dépendant de code dans différents répertoires et de traiter avec la croix-plate-forme de dépendances dans le système de génération (les Makefiles ou ce que vous utilisez).

Dans ce cas, alors que les branches pourrait être utiliser pour dépend du système de code, je vous recommande de répertoire pour les outils de support de système dépendant de paramètres, avec un script capable de construire la appropriée .gitattributes le fichier d'appliquer le droit en fonction de l'opération de déploiement de la plate-forme.

1voto

Tomek Szpakowicz Points 5340

Ne pas mettre d' autocrlf et safecrlf en .gitconfig à tous.

Il pourrait ne pas fonctionner dans votre cas, mais fonctionne bien dans la mienne. Les paramètres par défaut pour le courant git versions sont pour la plupart des plates-formes. Version Linux/unix utilise autocrlf=false et msysgit est (par défaut) installé presetted pour autocrlf=auto.

Je recommande msysgit sur cygwin git si vous faites de la non-cygwin développement sur Windows.

Parfois j'ai besoin de paramètres différents pour certains projets. Puis je l'ai mis sur le référentiel de niveau.

-2voto

Makis Points 3861

Je pense que vous devriez avoir le .gitconfig dépendent du système d'exploitation à l'aide de l'utilisateur. Les utilisateurs de Windows n'ont pas besoin de autocrlf à tous, tandis que les utilisateurs de Linux ne. E. g. enregistrer les fichiers de texte avec crlf et ont Git convertir automatiquement les fichiers en arrière et en avant pour les utilisateurs de Linux.

Vous pourriez également vouloir vérifier .gitattributes, qui vous permet de définir les fichiers sont convertis et qui ne le sont pas. Si vous avez les fichiers de configuration dans un seul endroit, vous pouvez définir que la conversion n'est effectuée dans ce répertoire, juste pour être sur le côté sécuritaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X