Est-il possible de configurer .gitignores spécifiques à distance?
Question
Y at-il un moyen simple de configurer différents fichiers .gitignore pour différentes télécommandes? J'ai un dépôt que je pousse à la fois Heroku et Github. J'ai besoin database.yml pour Heroku, mais ne veulent pas certaines des informations à être poussé jusqu'à Github. Donc je besoin d'un fichier .gitignore différent pour chacun des télécommandes.
J'ai essayé d'avoir deux branches distinctes, qui ne tient pas compte database.yml, et qui ne fonctionne pas. Le problème est que quand j'extrayez de la branche Heroku et retourne dans ma branche github, le fichier entier database.yml est parti.
Des conseils?
La solution
Je ne sais pas quoi que ce soit au sujet des exigences pour Heroku - espérons-Justice est juste et vous pouvez simplement éviter le problème. Si vous ne pouvez pas, ou si quelqu'un d'autre trouve ce qui ne peut pas ...
Si vous voulez que les deux télécommandes pour être des miroirs (les mêmes commits), ils doivent nécessairement avoir les mêmes fichiers dans ces commits. Donc, vous avez deux choix: ont file-for-repo-B
dans tous les dépôts, même si elles ne ont pas besoin ou utiliser avec deux branches d'un flux de travail un peu en désordre: master
et for-repo-B
. La seule différence entre les deux branches seraient les commits touchant file-for-repo-B
; la for-repo-B
branche serait toujours de fusionner master
(mais jamais l'inverse!). Maintenant, vous avez juste une branche différente vérifié dans B repo, et tout est bon.
Autres conseils
Ne pas mettre des informations de base de données dans database.yml. Au lieu de cela, utilisez les variables d'environnement Heroku.
Vous devez versionnée a:
-
database.yml
avec seulement les variables, et - un script capable de remplacer ces variables par les bonnes valeurs en fonction du serveur distant où cette
database.yml
est déployée.
Ensuite, vous utilisez le script comme maculage pilote de filtre d'attribut :
Chaque fois que vous la caisse (et créer un arbre de travail) sur un serveur distant, le script est exécuté et modifier les variables en conséquence, vous donnant un fichier database.yml
personnalisé.
Si l'un des la télécommande n'a pas besoin de ce fichier database.yml
, il peut encore être là, mais vidé par le script de maculage.