Was ist ein Funktionszweig?

Ein Funktionszweig ist eine Kopie der Hauptcodebasis, in der eine Person oder ein Team von Softwareentwicklern an einer neuen Funktion arbeiten kann, bis sie fertig ist.

Wenn viele Ingenieure an derselben Codebasis arbeiten, ist es wichtig, eine Strategie für die Zusammenarbeit zu haben. Um zu vermeiden, dass sich die Änderungen der anderen gegenseitig überschreiben, erstellen die Ingenieure ihre eigenen Kopien der Codebasis, die sogenannten Zweige. In Anlehnung an einen Baum wird der Hauptzweig manchmal auch als Stamm bezeichnet. Der Prozess, bei dem die Änderungen der einzelnen Kopien in den Hauptstamm integriert werden, wird als Merging bezeichnet.

Prozess der Feature-Branch-Entwicklung

Bei der Feature-Branch-Entwicklung führen einzelne Ingenieure oder Ingenieurteams ihren Zweig erst zusammen, wenn ein Feature fertiggestellt ist, und arbeiten manchmal wochen- oder monatelang an einer separaten Kopie. Diese lange Zeitspanne kann den Prozess des Zusammenführens erschweren, weil sich der Stamm oder der Master wahrscheinlich verändert hat, weil andere Ingenieure ihre Zweige zusammengeführt haben. Dies wird als Merge-Konflikt bezeichnet.

Die Entwicklung von Feature-Branches und das Zusammenführen von Quellcode wird in Versionskontrollprogrammen wie Git und Github gehandhabt. Der Hauptzweig und die Funktionszweige befinden sich in diesem Code-Repository (oder Repo) und die Entwickler checken den Code aus, um einen neuen Zweig zu erstellen, an dem sie arbeiten.

Sobald die Änderungen am Code vorgenommen wurden, stellt der Entwickler einen so genannten Pull-Request oder eine Anfrage an andere Entwickler im Team, den Code zu überprüfen, um sicherzustellen, dass der lokale Zweig keine Fehler enthält und dass er auch keine Fehler verursacht, wenn er in den Hauptzweig eingebunden wird. Sobald ein Zweig gründlich überprüft wurde, kann er in den Hauptzweig eingefügt werden.

Die Entwicklung von Funktionszweigen ist eine Methode, um die Arbeit vieler Ingenieure an der gleichen Codebasis zu verwalten. Moderne Teams setzen oft auf kontinuierliche Integration und trunk-basierte Entwicklung, um Probleme mit Bugfixes und Merge-Konflikten zu vermeiden, die durch das Verzweigungsmodell der Codeentwicklung entstehen.

Kontinuierliche Integration und Feature-Branches

Eine Alternative zum Feature-Branch-Workflow ist die kontinuierliche Integration. Dabei handelt es sich um eine Softwareentwicklungsmethode, bei der neue Codeänderungen kontinuierlich in die Mainline oder den Stamm integriert werden, anstatt zu warten, bis ein neuer Feature-Branch wochen- oder monatelang in der Entwicklung ist und vom Hauptzweig abweicht.

Die kontinuierliche Integration, die auch als stammbasierte Entwicklung bezeichnet wird, trägt dazu bei, Merge-Konflikte zu minimieren, indem Änderungen kontinuierlich in einer einzigen Quelle zusammengeführt werden, um eine Verzweigung von Funktionen zu verhindern. Die kontinuierliche Integration und Praktiken wie Feature Flags helfen den Entwicklern, den Code schneller bereitzustellen und weniger Zeit mit dem Abgleich verschiedener Codeversionen zu verbringen.