2017-10-11 2 views
0

Wir haben eine Staging-Umgebung und eine Produktionsumgebung. Wir können alles tun, was wir wollen, um neue Continuous Integration-Definitionen/Builds/Releases usw. zu testen. Jede Umgebung hat ein Git Repo.Spiegel Produktion git Repo in Staging-Umgebung

Derzeit habe ich zwei lokale repos. Eine für die Inszenierung und eine für die Produktion. 99% der Zeit arbeiten wir in der Produktion, weil wir Build/Release-Definitionen nicht oft ändern. Wir machen jedoch gerade Änderungen und ich muss den Staging-Git-Repo-Code mit dem Produktionscode aktualisieren.

Also, ich im Grunde nur den Code kopieren und aus lokaler Produktion Repo-Verzeichnis (abzüglich etwaiger git zugehörigen Dateien) in den Staging einfügen, drücken Sie dann auf die den Server Staging.

Das ist lahm, und ich will das nicht mehr tun, jeder. Also, was wäre eine effizientere Einrichtung? Im Idealfall würde die Inszenierung die Produktion lediglich "spiegeln", aber wir möchten nicht, dass Änderungen im Staging die Produktion beeinflussen.

Antwort

2

Ich weiß nicht wirklich, wessen Idee es war zwei separate repos für die Inszenierung und Produktion zu haben, aber ich habe keine solche Einrichtung sehr oft (oder vielleicht sogar überhaupt) gesehen. Wenn Sie Code für das gleiche Produkt in beiden Repos versionieren, dann wäre die offensichtliche Lösung hier, nur ein einzelnes Repo für alles zu verwenden. Sie würden in diesem einzigen Repo Staging- und Produktionsfilialen haben, und jetzt, wenn Sie Features von Staging zu Produktion oder umgekehrt verschieben müssten, hätten Sie Dinge wie Zusammenführen und Rebasing an Ihren Fingerspitzen.

+0

Es ist wirklich mehr für die CI/Server-Konfigurationsprüfung. Aktualisieren Sie tfs-Versionen, Netzwerkkonfigurationen usw., so dass die Git-Konfiguration nur dann verwendet wird, wenn Änderungen vorgenommen werden, die sich auf andere Teams auswirken können. Diese Konfiguration gehört also nicht zu unserem normalen Arbeitsablauf. – jparram

+0

@jparram Ich bin nicht vertraut mit den Feinheiten Ihrer Einrichtung, aber wenn Sie Informationen zwischen zwei Filialen in der gleichen Repo in Git kommunizieren müssen, ist es relativ einfach. Wenn Sie zwischen zwei Zweigen in _different_ reposements dasselbe machen müssen, dann sind es Äpfel mit Orangen, und Sie landen ungefähr dort, wo Sie jetzt sind, indem Sie Dinge manuell kopieren oder vielleicht ein Skript schreiben, um dasselbe zu tun. –

+0

danke für Ihre Zeit. Nach dem zweiten Kopieren und Einfügen habe ich es geschrieben ... war aber neugierig, ob es andere Optionen gab, wenn verschiedene Repos im Mix sind. – jparram

0

Nach dem, was Sie gesagt haben, müssen Sie nur 1 Repo mit zwei Hauptzweige erstellen: dev und master. Wann immer Sie den Code verwenden möchten, zum Beispiel wie Sie das sagten:

Kopieren Sie den Code aus dem lokalen Produktionsrepo-Verzeichnis (ohne git-bezogene Dateien) zum Staging, und drücken Sie dann auf den Staging-Server.

Stattdessen Kasse von Ast staging zu staging-test dann git pull --rebase origin master, so sollte die Zweig Inszenierung mit master Code eingebunden werden.

Sie können einen Blick auf GitFlow nehmen: https://www.atlassian.com/git/tutorials/comparing-workflows

0

Sie können einen git Haken add on git push auf Ihre lokale Produktion Repo, die dann schaltet auf Ihrem lokalen Staging-Repo, zieht aus dem lokalen Produktion Repo, und legt an das Remote-Staging-Repo.