62 votes

Collaboration Git - comment gérer les fichiers de configuration

Je suis en train d'écrire un petit script avec quelques simples variables en haut de la page. Je veux travailler avec un ami, mais nous ne sommes pas sûr de la façon de gérer les variables qui ont besoin d'être changé après le tirage, chaque fois, pour l'un de nous, l'ajout inutile indésirable dans git status. Je pensais simplement à la création de différentes branches nommées pour chacun de nous, et puis le maître aurez l'exemple des noms d'utilisateur défini, mais il semble ridicule d'avoir à faire tout le travail supplémentaire à la fusion. Nous pourrions avoir des variables passées au script comme des options, mais ce n'est pas souhaitée, ni la séparation à un autre fichier de configuration. Il serait bon d'avoir quelque chose comme une .gitignore mais seulement pour ignorer quelques lignes dans un fichier.

Comment cela peut-il être élégamment géré? Comment ce problème est-il habituellement?

Merci!

69voto

Mark Longair Points 93104

Vous ne pouvez pas se contenter d'ignorer les changements en particulier les lignes d'un fichier, j'ai peur, alors vous êtes probablement coincé avec le fait d'avoir un fichier de configuration séparé. Ci-dessous je ai énuméré les deux façons classiques de traiter avec cela, et un peu plus exotique:

Un exemple de fichier de configuration de git

Ici, vous devez garder un fichier config.sample dans git comme un exemple, mais l'application serait en fait d'utiliser les valeurs dans un fichier config qui est en .gitignore. L'application serait alors produire une erreur à moins d' config est présent. Vous devez vous rappeler de changer les valeurs dans le fichier d'exemple, lorsque vous ajoutez de nouvelles variables de configuration de votre personnel config le fichier. Dans ce cas, il est aussi une bonne idée d'avoir votre demande de vérifier que toutes les variables de configuration sont fixées, au cas où quelqu'un a oublié de mettre à jour leur config le fichier après modification pour l'échantillon.

Disposer d'un fichier de valeurs par défaut dans git

Vous gardez le fichier config.defaults dans git, qui est sensible valeurs de configuration par défaut aussi loin que possible. Votre demande de première configuration de sources de config.defaults puis de config (en .gitignore) pour éventuellement remplacer toutes les valeurs par défaut. Avec cette méthode, généralement vous ne voudriez pas faire une erreur pour config n'existe pas, de sorte que l'application fonctionne hors de la boîte pour les gens qui n'ont pas pris la peine de créer config.

À l'aide d'un unique fichier de configuration --assume-inchangé

Une troisième possibilité, qui je ne vous le recommande pas, dans ce cas, personnellement, serait d'avoir un fichier de configuration unique qui s'est engagé dans git, mais de les utiliser git update-index --assume-unchanged <FILE>, pour indiquer à git d'ignorer les changements. (Ceci est décrit plus loin dans ce blog.) Cela signifie que vos modifications locales dans le fichier de configuration ne sera pas validée avec git commit -a ou se présenter en git status.

7voto

Tomasz Zielinski Points 9300

La solution spécifique python/Django est d'avoir un fichier partagé `` qui est vérifié dans le référentiel, et un local importé à la fin de , qui remplace certains des paramètres avec des valeurs spécifiques à la ```` machine.

5voto

Noufal Ibrahim Points 32200

Dans mon cas, j'ai des variables "config" dans un fichier séparé (petit) comme le font tous les autres développeurs de l'équipe. Des choses comme mon emplacement de base de données, etc sont conservés là.c.- Nous mettons le nom de ce fichier dans notre `` de sorte qu'il n'est pas la version contrôlée, mais checkin un fichier "sample_config" afin que les nouveaux arrivants peuvent faire une copie et l'utiliser à leurs propres fins.

2voto

Mick Kelly Points 31

Autres options (pas élégantes mais peuvent être utiles):

  • Utilisation et pour votre fichier config
  • Demandez à une succursale nommée, par exemple, config qui a vos modifications de fichier config local et ensuite utiliser``

Deuxième option est bonne si vous avez besoin de garder les changements de config local dans le repo (quelque part).

1voto

yvess Points 510

Vous pouvez faire un référentiel supplémentaire pour les paramètres locaux et symlink les fichiers / folder à votre projet.

Pour plus de détails voir ma réponse sur un autre thread.

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