Gibt es eine Möglichkeit, remotespezifische .gitignores einzustellen?
Frage
Gibt es eine einfache Möglichkeit, verschiedene .gitignore -Dateien für verschiedene Fernbedienungen einzurichten? Ich habe ein Repository, das ich sowohl auf Heroku als auch auf Github drücke. Ich brauche database.yml für Heroku, möchte aber nicht, dass einige der Informationen auf GitHub gedrängt werden. Daher brauche ich eine andere .gitignore -Datei für jede der Fernbedienungen.
Ich habe versucht, zwei separate Zweige zu haben, eine, die database.yml ignoriert, und eine, die nicht. Das Problem ist, dass die gesamte Datenbank.yml -Datei verschwunden ist, wenn ich den Heroku -Zweig überprüfe und wieder in meine Github -Zweigstelle gehe.
Irgendwelche Tipps?
Lösung
Ich weiß nichts über die Anforderungen an Heroku - hoffentlich ist Gerechtigkeit richtig und Sie können das Problem einfach vermeiden. Wenn Sie nicht können oder wenn jemand anderes dies findet, der nicht ...
Wenn Sie möchten, dass die beiden Fernbedienungen Spiegel sind (die gleichen Commits haben), müssen sie per Definition die gleichen Dateien in diesen Commits haben. Sie haben also zwei Möglichkeiten: haben file-for-repo-B
In allen Repositories, auch wenn sie es nicht brauchen oder einen etwas unordentlichen Workflow mit zwei Zweigen verwenden: master
und for-repo-B
. Der einzige Unterschied zwischen den beiden Zweigen wäre die Berührung der Commits file-for-repo-B
; die Branche for-repo-B
würde sich immer von verschmelzen von master
(Aber nie umgekehrt!). Jetzt haben Sie nur einen anderen Zweig in Repo B ausgecheckt, und alles ist gut.
Andere Tipps
Stellen Sie keine Datenbankinformationen in Datenbank.yml ein. Verwenden Sie stattdessen Heroku -Umgebungsvariablen.
Sie sollten a: versionieren a:
database.yml
mit nur Variablen darin und- Ein Skript, das diese Variablen abhängig vom Remote -Server durch die richtigen Werte ersetzen kann
database.yml
wird eingesetzt.
Dann verwenden Sie das Skript als Fischattributfiltertreiber:
Jedes Mal, wenn Sie auf einem Remote -Server auschecken (und einen funktionierenden Baum erstellen), wird das Skript ausgeführt und ändert die Variablen entsprechend, sodass Sie einen benutzerdefinierten Bereich erhalten database.yml
Datei.
Wenn einer der Fernbedienung das nicht braucht database.yml
Datei, es kann immer noch da sein, aber vom Smudge -Skript geleert.