Wir sind ein kleiner ISV-Shop und versenden normalerweise jeden Monat eine neue Version unserer Produkte. Wir verwenden Subversion als Code-Repository und Visual Studio 2010 als IDE. Ich bin mir bewusst, dass viele Leute Mercurial und andere verteilte Versionsverwaltungssysteme befürworten, aber an diesem Punkt sehe ich nicht, wie wir davon profitieren könnten, aber ich könnte mich irren.
Unser Hauptproblem ist, wie Zweige und Hauptstamm synchron bleiben.
So machen wir es heute:
- Neue Version freigeben (automatisch ein Tag in Subversion erstellen)
- Arbeiten Sie weiter an der Hauptleitung, die nächsten Monat veröffentlicht wird
Und der Zyklus wiederholt sich jeden Monat und funktioniert perfekt. Das Problem tritt auf, wenn eine dringende Servicefreigabe freigegeben werden muss. Wir können es nicht aus dem Hauptstamm (2) lösen, da es sich in einer starken Entwicklung befindet und nicht stabil genug ist, um dringend freigegeben zu werden.
In diesem Fall machen wir Folgendes:
- Erstellen Sie einen Zweig aus dem Tag, das wir in Schritt (1) erstellt haben.
- Fehlerbehebung
- Testen und freigeben
- Schieben Sie das Wechselgeld zurück in den Hauptkoffer (falls zutreffend).
Unser größtes Problem ist die Zusammenführung dieser beiden (Zweig mit Haupt). In den meisten Fällen können wir uns nicht auf die automatische Zusammenführung verlassen, weil z.
- Es wurden viele Änderungen am Hauptstamm vorgenommen
- Das Zusammenführen komplexer Dateien (wie Visual Studio XML-Dateien usw.) funktioniert nicht sehr gut
- Ein anderer Entwickler / ein anderes Team hat Änderungen vorgenommen, die Sie nicht verstehen und die Sie nicht einfach zusammenführen können
Was Sie also denken, ist die beste Vorgehensweise, um diese beiden unterschiedlichen Versionen (Zweig und Haupt) synchron zu halten. Wie geht's?