Wir haben derzeit 2 Filialen:
%Vor%current_version ist ein Zweig, in dem derzeit alle Entwickler arbeiten.
Wir starten eine nächste Version und erstellen next_version von einem Punkt in current_version aus, während die Arbeit an current_version noch andauert. In next_version machen wir etwas Entwicklung und in den nächsten Monaten wird die Filiale unsere Hauptstelle werden, wo alle Entwicklung gemacht wird.
Da es bei current_branch eine Entwicklung gibt, dachten wir in regelmäßigen Abständen (sagen wir einmal pro 2 Wochen), next_version umzustempeln. Dies, um beide Zweige synchron zu halten, wenn alle Entwickler schließlich current_branch löschen und zu next_release wechseln, enthält next_release alle integrierten und getesteten Funktionen von current_branch.
Das Problem ist Rebasing. Tatsächlich werden die letzten Commits von current_branch mit next_version zusammengefügt. Wenn ich also den Verlauf der commited-Dateien in next_release untersuchen werde, sehe ich nur die Zusammenführungs-Commits und nicht den Verlauf (commits / authors / annotation) von current_version.
Vermisse ich etwas?
Nein, Sie haben nichts verpasst. Dies ist ein großes Problem bei der Verwendung von SVN für die Versionskontrolle.
Bei meinem letzten Job bin ich immer wieder darauf gestoßen. Jedes Mal, wenn jemand etwas an current_branch verpfändet (um bei Ihrer Terminologie zu bleiben), müsste die Commit-Nachricht manuell kopiert werden, damit sie in der Merge-Commit-Nachricht verwendet werden kann. Das wurde schnell zu einem großen Schmerz.
Aus diesem Grund hat eine neue Software zur Versionskontrolle bessere Mischfunktionen (Git, Mercurial und Bazaar) hervorgebracht.
BEARBEITEN: Offenbar hat SVN dieses Problem behoben. SVN 1.5 und höher enthalten merge-sensitive Logs und Annotationen . Verwenden Sie das Flag --use-merge-history (-g) mit svn merge und svn three, um die Commit-Nachrichten aus dem verbundenen Zweig zu sehen.