Wie kann man parallele Versionen in Git am besten verwalten?

9

Ich habe ein gut etabliertes Software-Toolkit, das aber oft kleine Verbesserungen benötigt (hauptsächlich um Kompatibilitätsprobleme mit Produkten von Drittanbietern zu bewältigen). Ich möchte nun eine "neue" Version (verbesserte API) erstellen, die auf dem Original basieren wird - das wird sich im Laufe der Zeit von der bestehenden Zweigstelle unterscheiden, aber für ein paar Jahre werde ich das Original "live" behalten müssen bestehende Kunden, die es für die Kompatibilität benötigen. Natürlich muss ich auch sicherstellen, dass die "Tweaks" auch auf die "neue" Version angewendet werden, da solche Probleme (in am meisten cases!) gelten auch für die "neue" Version.

Also - mein idealer (einfacher) Workflow wäre:

  1. Bei der Arbeit an der "neuen" Version - Änderungen gelten nur für diese Version.
  2. Bei der Arbeit an der "alten" Version, alle resultierenden Änderungen würde (so automatisch wie möglich!) auf beide Versionen angewendet werden Sobald ich mit ihnen glücklich bin (wenn ich begehe, unterwerfe oder was auch immer).

Mir ist klar, dass gelegentliche manuelle Eingriffe erforderlich sein werden, bei denen Zusammenschlüsse widersprüchlich sind, aber ich würde erwarten, dass dies selten ist, basierend auf der Erfahrung manueller Änderungen in der Vergangenheit.

Im Moment versuche ich, VSS aufzugeben (ja - lache mich weiter aus, weil du so lange wach gehalten hast!), und ich hatte gehofft, Git würde das leicht machen, aber bisher scheint es nicht so irgendwelche "einfachen" Lösungen, mit den Vorschlägen, die ich gesehen habe, dass alles um "Rebase" herum aufgebaut ist, was mir "falsch" erscheint, da Rebase viele andere Dinge zu tun scheint, wie das Umschreiben von Geschichte, wenn alles, was ich brauche, ein einfaches wäre , echte "vorwärts gehen" basierend auf den Änderungen von der anderen Branche.

  • Fehle ich hier etwas?
  • Gibt es einen einfacheren, genau definierten Weg, dies zu tun?
  • Wäre ich besser mit einem anderen Quellcode-Kontrollsystem als mit Git?

Alle Gedanken sehr geschätzt!

    
medconn 22.04.2012, 09:17
quelle

2 Antworten

5

Sie könnten einfach die Änderungen von Ihrem alten Zweig mit der neuen Version zusammenführen.

Lassen Sie mich näher auf die Ablehnung eingehen: Wenn Sie nicht der einzige Entwickler sind, der an der Codebasis arbeitet, würde ich Ihnen nicht empfehlen, Rebase für dieses spezielle Problem zu verwenden. Beachten Sie, dass die Verwendung von Rebase nur für private Zweige seit dem Neuschreiben des Verlaufs empfohlen wird und somit alle Commits ungültig werden, für die ein erneutes Commit als Vorgänger vorliegt.

Wenn Sie die alten Versionszweigänderungen auf Ihre neue Version umbuchen, werden Sie den Verlauf des neuen Versionszweigs jedes Mal neu schreiben, wenn Sie Änderungen von der alten in die neue Version bringen müssen. Dies bedeutet, dass jede Arbeit, die mit einer Basis in der neuen Version ausgeführt wurde, dh ein Feature-Zweig für ein Feature, das exklusiv für die neue Version ist, verloren geht, da das ursprüngliche Commit nicht mehr existiert.

    
Simon Stender Boisen 22.04.2012 09:24
quelle
0

Sehen Sie sich Git flow an - ein Ansatz für die Verzweigung für diese Art von Features mit Werkzeugen, um es zu unterstützen. Im Grunde genommen tust du es für jeden neuen Tweak auf einem neuen Zweig, der vor dem gemeinsamen Vorfahren der Zweige, die du pflegst, verwurzelt ist, und dann verschmelzt du diesen mit jedem von ihnen.

    
Novelocrat 22.04.2012 19:13
quelle

Tags und Links