Wir verwenden git für die meisten Webanwendungen, die wir in unserem Shop erstellen, und obwohl die Anwendungen selbst eine Vielzahl von Technologien (PHP, Rails usw.) verwenden, haben wir im Allgemeinen eine Bereitstellung und Produktion Server für jede Site. In der Regel verfügen diese Server über verschiedene Gruppen von Datenbankanmeldeinformationen sowie verschiedene umgebungsbasierte Konfigurationseinstellungen (z. B. Caching). In unserem Workflow werden in der Regel zwei Git-Zweige pro Projekt verwaltet: Master, der den Produktionsserver widerspiegelt, und Staging, der das Staging widerspiegelt. Neue Funktionen werden für die Bereitstellung (oder einen Unterzweig) entwickelt und nach Abschluss und Bereitstellung wieder mit dem Master zusammengeführt.Git: Anwendungskonfiguration und verschiedene Umgebungen
Meine Frage bezieht sich auf die beste Möglichkeit, die Konfigurationsdateien zu verwalten, die branchen- und umgebungsspezifisch sind. Ich habe die Antworten von ähnlichen Fragen here und here gesehen, und beide nicht wirklich erfüllt. Die beiden Hauptansätze scheinen zu sein: a) Verwenden von .gitignore-Ausschluss, um Konfigurationsdateien außerhalb der git-Sicht zu belassen, oder b) Schreiben von reflektierendem, umweltbewusstem Code, der z. Welche Datenbankanmeldeinformationen müssen basierend auf dem Hostnamen verwendet werden? Mein Problem mit a) ist, dass es nur einen Satz von Konfigurationsdateien in der Codebasis gibt (unabhängig vom aktuellen Zweig), so dass die Konfigurationsdateien der anderen Umgebung verloren gehen. b) andererseits scheint nur unnötige Modifikation der Codebasis in einer Weise zu erfordern, die sich nicht auf die Funktionalität der Anwendung bezieht.
Idealerweise hätte ich gerne einen Weg, um Konfigurationsdateien innerhalb eines bestimmten Zweiges zu "sperren", so dass ich immer die Master-Konfigurationsdateien erhalte, und wenn ich das Staging auschecke, bekomme ich die Staging-Konfigurationsdateien. Außerdem sollte das Zusammenführen von Staging in Master die Master-Konfigurationsdateien in keiner Weise beeinflussen. Bisher haben wir uns damit beschäftigt, Ordner mit umgebungsspezifischen Konfigurationsdateien außerhalb des git-Stammverzeichnisses zu haben und die entsprechenden Dateien bei der Bereitstellung manuell in die Codebasis zu verschieben, aber das ist natürlich unnötig hackig (und möglicherweise gefährlich).
Gibt es eine Möglichkeit, dies mit Git zu erreichen?
Vielen Dank für Ihre Aufmerksamkeit!
Würde http://stackoverflow.com/questions/2154948/how-can-i-track-system-specific-config-files-in-repo-project/2155355#2155355 kombiniert mit http: // stackoverflow .com/questions/3207575/how-do-i-open-source-meine-rails-apps-ohne-verschenken-die-apps-geheime-keys-und/3207608 # 3207608 Hilfe hier? – VonC