AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Versionsverwaltung - zwei große Branches zusammenführen, aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

Ein Thema von DieDolly · begonnen am 24. Mär 2019 · letzter Beitrag vom 9. Apr 2019
Antwort Antwort
Seite 1 von 2  1 2      
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 24. Mär 2019, 18:45
Bald ist es soweit und ich muss zwei Branches zusammenführen.
Ich habe einen Hauptbranch in dem ich arbeite, einen weiteren in dem ich Neuerungen ins Programm einbaue und einen master Branch.

Mein Neuerungen-Branch unterscheidet sich mittlerweile sehr stark vom Hauptbranch. Es gibt so gut wie keine Unit im Programm die ich nicht geändert habe.
Wie führe / merge ich beide Branches ohne Kopfschmerzen, Hunderten von Konflikten und einem eventuellen Datenverlust? Mein Hauptbranch liegt mittlerweile 17 Commits und weitere 53 geänderte noch un-committete Dateien zurück.

Geändert von DieDolly (24. Mär 2019 um 18:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 24. Mär 2019, 19:13
Schwierig. Hast du mal ein "git merge" laufen lassen, um zu gucken ob es überhaupt so viele Konflikte gibt?

Die Möglichkeiten sehe ich grob wie folgt:
1) Hauptbranch einstellen, Neuerungen als nächste Version bringen.
1a) Du kannst den Merge einfach lösen, indem du stumpf eine Seite nimmst. Ist nachher leider nicht so transparent.
1b) Du benennst den Hauptbranch um in "Version 1.2" (oder was es inzwischen ist) und ernennst den anderen zum neuen Hauptbranch.
2) Durchbeißen und alle Mergekonflikte einzeln lösen

Um die auch Tipps zu geben, so etwas in Zukunft zu vermeiden:
1. Besser sind viele kleine Commits. "53 geänderte noch un-committete Dateien" wären für mich schon per se ein Alptraum. Sowas kommt vielleicht mal vor, wenn man eine Unit umbenannt hat - dann sollte man aber schnell einen commit machen
2. Viele Feature-Branches statt eines großen. Du kannst die Bugfixes für deinen Hauptbranch ja in einem kleinen Branch machen, dort hinein mergen und dann (nach eventuellen Anpassungen) auch in den Neuerungen-Branch.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 24. Mär 2019, 19:45
Zitat:
1. Besser sind viele kleine Commits. "53 geänderte noch un-committete Dateien" wären für mich schon per se ein Alptraum. Sowas kommt vielleicht mal vor, wenn man eine Unit umbenannt hat - dann sollte man aber schnell einen commit machen
2. Viele Feature-Branches statt eines großen.
zu 1 - genau das musste ich leider oft machen
zu 2 - ich arbeite an einem einzigen Feature aktuell. Ist aber leider ein Monster-Teil.

Ich arbeite mit SmartGit. Kann irgendwas gewaltig schief gehen, wenn ich mal nur zum Spaß Feature mit Haupt mergen möchte?
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 24. Mär 2019, 20:04
Naja mit GIT kannst du ja prinzipiell immer wieder zurück gehen. Was du nicht machen solltest, wäre ein Push auf ein evlt. vorhandenes remote Repository. Denn dort wird es schwierig bis unmöglich, ungewollte Änderungen wieder rauszunehmen.

Was ich in solchen Fällen oft mache in denen ich mir unsicher bin ist, dass ich mir ein Backup des Projektordners mache und dann (in der Kopie oder eben im Original) den Test durchführe. Wenn danach noch alles funktioniert, dann ist alles wunderbar. Wenn nicht, wird eben das Backup wiederhergestellt.

Geändert von Aviator (24. Mär 2019 um 20:59 Uhr) Grund: Schreibfehler korrigiert
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 24. Mär 2019, 20:08
Zitat:
Was ich in solchen Fällen oft mache ich denen ich mir unsicher bin ist, dass ich mir ein Backup des Projektordners mache und dann (in der Kopie oder eben im Original) den Test durchführe. Wenn danach noch alles funktioniert, dann ist alles wunderbar. Wenn nicht, wird eben das Backup wiederhergestellt.
Ich denke so mache ich es. Ist zwar aufwendig und dauert etwas länger als einfach einen Test-Merge zu machen aber ich denke ich würde mich in den eigenen Hintern beißen wenn ich durch einen Fehler alles verliere.

Erst letzte Woche habe ich git diff --shortstat ausgeführt. Schon dutzende Male gemacht aber dieses mal ratterten die Dateinamen nur so durch die Konsole und Delphi meckerte dann, dass sich Dateien geändert hätten (das waren nach ein paar Prüfungen aber nur Datumswerte wie letzter Zugriff, Modifikation). Seit dem bin ich vorsichtiger.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#6

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 25. Mär 2019, 09:52
Schief gehen kann erstmal nichts, Du kannst ja immer noch zurück. Andererseits scheinst Du aber noch nicht so ganz auf git-Linie zu arbeiten. Versuch möglichst oft zu committen, zB nach jedem Refactoring, jedem Bugfix etc. Du musst ja nicht alles gleich pushen, falls Du nicht alleine an dem Projekt arbeitest. Aber häufige commits sind das A und O.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#7

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 25. Mär 2019, 13:59
Zitat:
Schief gehen kann erstmal nichts, Du kannst ja immer noch zurück. Andererseits scheinst Du aber noch nicht so ganz auf git-Linie zu arbeiten. Versuch möglichst oft zu committen, zB nach jedem Refactoring, jedem Bugfix etc.
Ich pushe nichts. Alles bleibt lokal auf meiner Entwicklermaschine. Nichts kommt auf Github.
Mein aktueller Refactor dauert schon 20 Committs und Hunderte Änderungen.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#8

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 8. Apr 2019, 22:49
Demnächst steht mein großer Merge an.
Ich habe eben noch eine andere Idee gehabt, wie ich das ohne Probleme machen kann. Was sagt ihr dazu?

Branches: dev, featureX, master.
featureX ist etwa 30 commits weiter als dev und master.

Ich bleibe in featureX, kopiere das gesamte Projektverzeichnis, checke dev aus, überschreibe das dev-Projektverzeichnis mit dem featureX-Projektverzeichnis und commite die Änderungen als meinen eigenen manuellen Merge.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 8. Apr 2019, 22:59
Ganz ehrlich? Was bringt dir ein neuer Branch, wenn du den alten sowieso überschreiben willst? Beim Überschreiben der Dateien gehen dir sämtliche Änderungen im Dev Branch verloren. Dann hättest du den FeatureX Branch auch nicht anlegen müssen. Wenn du sowieso alle Änderungen von Dev überschreiben bzw. FeatureX den Vorrang lassen willst, dann mach ein git merge FeatureX aus dem Dev Branch heraus. Laut deiner Logik dürfte dann auch kein Merge Conflict entstehen. Falls doch, siehst du wenigstens, wo du evtl. Änderungen im Dev Branch nicht mehr beachtet hast. Das kann aufwendig sein, aber immer besser als sich die Arbeit von einigen Tagen zunichte zu machen.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#10

AW: Versionsverwaltung - zwei große Branches zusammenführen, aber wie?

  Alt 8. Apr 2019, 23:03
Ich fahre seit einigen Monaten zweigleisig. Ich möchte regelmäßige Updates nicht vernachlässigen und dafür ist der dev Branch da. Der featureX Branch bekommt alles einverleibt, was ich seit einigen Monaten einbaue aber noch nicht reif für das wilde WWW ist.
Der dev branch soll schon noch der Hauptbranch nach master sein. Den featureX branch lösche ich, sobald das erledigt ist was ich da mache.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz