Feature Branch
Inhalt
Was ist ein Feature Branch?
Ein Feature Branch ist eine Kopie der Hauptcodebasis, in der eine Person oder ein Team von Softwareentwicklern an einem neuen Feature arbeiten kann, bis es fertig ist.
Wenn viele Ingenieure an der gleichen Codebasis arbeiten, ist es wichtig, eine Strategie für die Zusammenarbeit der einzelnen Personen zu haben. Um zu vermeiden, dass sich die Änderungen der anderen gegenseitig überschreiben, erstellen die Ingenieure ihre eigenen Kopien der Codebasis, die so genannten Zweige. In Anlehnung an einen Baum wird der Master-Zweig manchmal auch als Stamm bezeichnet. Der Prozess, bei dem die Änderungen einer einzelnen Kopie in den Hauptstamm integriert werden, wird als Zusammenführung bezeichnet.
Feature Branch Entwicklungsprozess
Bei der Entwicklung von Feature Branches führen einzelne Ingenieure oder Teams von Ingenieuren ihren Zweig erst zusammen, wenn ein Feature fertiggestellt ist. Manchmal arbeiten sie wochen- oder monatelang an einer separaten Kopie. Diese lange Zeitspanne kann den Prozess der Zusammenführung erschweren, da sich der Stamm oder der Master wahrscheinlich geändert hat, weil andere Entwickler ihre Zweige zusammengeführt haben. Dies wird als Merge-Konflikt bezeichnet.
Die Entwicklung von Feature Branches und das Zusammenführen von Quellcode wird in einer Versionskontrollsoftware wie Git gehandhabt, am bekanntesten ist der Dienst Github. Der Hauptzweig und die Feature Branches befinden sich in diesem Code-Repository (oder Repo) und Entwickler checken den Code aus, um einen neuen Zweig zu erstellen, von dem aus sie arbeiten.
Sobald die Änderungen am Code vorgenommen wurden, stellt der Entwickler eine so genannte Pull-Anfrage, d.h. er bittet andere Entwickler im Team um eine Überprüfung des Codes, 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 eingebunden und Teil des Hauptprojekts werden.
Die Entwicklung von Git-Zweigen ist eine Methode zur Verwaltung vieler Ingenieure, die an der gleichen Codebasis arbeiten. Moderne Teams verlassen sich oft auf kontinuierliche Integration und trunk-basierte Entwicklung, um Probleme mit Fehlerkorrekturen und Merge-Konflikten zu vermeiden, die durch das Verzweigungsmodell der Codeentwicklung entstehen. Auf diese Weise lassen sich Probleme vermeiden, wenn mehrere Personen an derselben Codebasis arbeiten, und es wird ein detailliertes Protokoll darüber geführt, welches Stück Code von wem, wann und wo hinzugefügt wurde. Dieser Prozess wird auch als Rebasing bezeichnet.
Was ist bei Problemen mit einem Feature Branch zu tun?
Einer der Vorteile der Entwicklung in einem Feature Branch besteht darin, dass er sich nicht auf Ihren Mainline-Code auswirkt, bis Sie ihn wieder einbinden. Mit einem Git-Workflow können Sie mithilfe der Versionskontrollfunktionen zu früheren Versionen zurückkehren.
Im Folgenden finden Sie einige gängige Git-Funktionen, die Ihnen bei der Diagnose und dem Rollout eines Hotfixes helfen
-
Verwenden Sie git pull, um den neuesten Code aus dem Hauptzweig herunterzuladen. Wenn Sie den Code aus dem Hauptzweig herunterladen, ist dieser Befehl ein Synonym für git pull master origin.
-
Verwenden Sie git push, um den von Ihnen aktualisierten Code an Ihren Entwicklungszweig zurückzusenden.
-
Git branch war wahrscheinlich der Befehl, den Sie ausgeführt haben, um von Ihrem Hauptzweig abzuzweigen.
-
MitGit checkout können Sie zu verschiedenen Versionen eines Zweigs wechseln. Damit teilen Sie Git mit, in welcher Version Sie Ihre Änderungen am Code aufzeichnen möchten, bevor Sie ihn wieder veröffentlichen.
-
Git merge ist im Wesentlichen das Gegenteil einer Git-Verzweigung. Damit können Sie Ihre Änderungen wieder in den Mainline-Code einfügen, von dem Sie verzweigt haben, und die Verzweigung entfernen.
Mit diesen Befehlen kann das Devops-Team seine Entwicklungsarbeit auswerten und das Versionskontrollsystem nutzen, um bestimmte Versionen zu debuggen und bei Bedarf zurückzusetzen. Wenn Sie in einem Unternehmen mit vielen Teammitgliedern an der gleichen Codebasis arbeiten und Feature Branches verwenden, können Sie so Probleme schnell diagnostizieren.
Warum Verzweigungsstrategien verwenden
Durch die Verwendung von Feature Branches wird jedes Feature in einem eigenen Bereich isoliert, der von der Versionskontrollsoftware (in der Regel Git) überwacht wird. So können Sie an neuen, experimentellen Funktionen arbeiten, ohne dass sich dies direkt auf den Mainline-Code auswirkt, und dennoch alle neuen Versionen und Aktualisierungen abrufen, die während der Arbeit an der neuen Funktion entstanden sind. Dies ist besonders hilfreich in Teams, in denen mehrere Teammitglieder an demselben zentralen Code-Repository arbeiten.
Ein separater Zweig isoliert Probleme und Entwicklungen in einem Versionszweig, der nach Fertigstellung wieder zusammengeführt werden kann. Ein Git-Workflow und klare Kommunikationslinien zwischen Entwicklern und Ingenieuren können dazu beitragen, Konflikte zu beseitigen und zu ermöglichen, dass verschiedene Zweige des Codes gleichzeitig entwickelt werden können, ohne sich gegenseitig zu behindern.
Als Teil einer Branch-Strategie ist es wichtig, sich nicht nur auf den Gitflow zu konzentrieren, sondern auch auf Feature Branch-Workflow-Praktiken wie Branch-Namenskonventionen und Code-Review. Die Versionskontrolle ist eine außerordentlich hilfreiche Funktion, die es mehreren Teammitgliedern ermöglicht, den Code zu überprüfen, bevor er veröffentlicht wird.
Einige gängige Namenskonventionen für Feature Branches:
-
Beschreiben Sie, um welches Feature es sich handelt.
-
Fassen Sie sich kurz, verwenden Sie nicht mehr Worte als nötig. Wenn mehr Erklärungen erforderlich sind, fügen Sie diese der Beschreibung hinzu.
-
Schreiben Sie es so, dass andere Entwickler und Techniker verstehen können, woran gearbeitet wird.
Auch wenn Sie an mehreren neuen Funktionen gleichzeitig arbeiten, ist es sinnvoll, für jede einzelne Funktion einen eigenen Zweig zu erstellen, damit diese nicht miteinander in Konflikt geraten.
Wenn Sie fertig sind, verwenden Sie eine Pull-Anfrage, um Ihren Code von anderen Teammitgliedern überprüfen zu lassen und ihn wieder in das zentrale Repository einzubinden. Es ist eine schlechte Praxis, Ihren eigenen Code zusammenzuführen und zu überprüfen. Es kann immer unvorhergesehene Probleme mit Ihrer speziellen Funktion geben, die andere bei der Überprüfung feststellen könnten.
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 Feature Branches zu verhindern. Kontinuierliche Integration und Praktiken wie Feature Flag können Entwicklern helfen, Code schneller bereitzustellen und weniger Zeit damit zu verbringen, verschiedene Codeversionen miteinander abzugleichen.