Software-Entwicklungsprozess: Welche Möglichkeiten Pull-Requests bieten sollten

Dank des Aufstiegs verteilter Versionskontrollen wie Git hat sich der Feedback-Prozess in der Software-Entwicklung dramatisch verbessert. Features wie Branching und einfaches Mergen eröffnen die Möglichkeit, kleinere Änderungen häufiger zu reviewen. Diese Art des Code-Reviews basiert auf dem Konzept der Pull-Requests. Sie bieten ein Forum, um vorgeschlagene Änderungen an der Code-Basis zu diskutieren, ehe sie in die gemeinsamen Branches gemergt werden (beispielsweise vor dem Mergen eines Feature-Branchs in den Master-Branch).

Die Popularität von Git und Pull-Requests hat sich exponentiell gesteigert. Die Vorteile von Reviews durch Kollegen – höhere Code-Qualität, geteiltes Wissen im Team, ein gemeinsamer Sinn für Ownership – und flexible Workflows in Git haben Teams aller Größenordnungen überzeugt. Und so bilden die Fähigkeiten im Zusammenhang mit Pull-Requests heute eine immer wichtiger werdende Anforderung, wenn es darum geht, Tools für die Verwaltung von Git-Repositories zu evaluieren. Dieser Artikel zeigt, welche Möglichkeiten Pull-Requests dem Entwicklungsteam bieten sollten und wie Bitbucket Server von Atlassian diese Anforderungen löst.

Reviewer bestimmen

In seiner grundlegenden Form ist ein Pull-Request einfach die Aufforderung, Änderungen in einen Ziel-Branch oder Fork zu mergen. Wenn man Pull-Requests um das Konzept von Reviewern erweitert, werden sie viel mehr als das, nämlich ein Forum für eine offene Diskussion über Code. Wenn ein Team oder Unternehmen ein Werkzeug sucht, um Git-Repositories zu managen, ist die Möglichkeit, Teammitglieder explizit als Reviewer zu definieren, in der Regel eine Grundanforderung. Woher sonst sollten die Kollegen wissen, dass Änderungen darauf warten, durchgesehen zu werden?

In Bitbucket Server ist dieser Prozess noch geschmeidiger, denn es gibt die Option, Standard-Reviewer für spezifische Arten von Branches festzulegen (z.B. Feature-, Hotfix- oder Bugfix-Branches). Spezialisierte Add-ons wie der Reviewer Suggester erweitern die Funktionalitäten nochmals.

Kommentare im Kontext

Ein Code-Review wird erst wertvoll durch Kommentare. Feedback im Kontext zu erhalten, gibt Pull-Request-Autoren einen Referenzpunkt für Verbesserungen. Reviewer können Änderungen vorschlagen oder dem Kollegen natürlich auch zu einem brillanten Stück Logik gratulieren.

In Bitbucket Server können Entwickler alle Arten von Kommentaren hinterlassen: zum Pull-Request insgesamt, zu Commits, zu bestimmten Dateien oder zu bestimmten Code-Zeilen in einer Datei. Jeder Entwickler hat seinen bevorzugten Weg, Code zu lesen und zu reviewen, und das Tool des Teams sollte das widerspiegeln.

Wird eine zweite Meinung zu einem bestimmten Code-Abschnitt benötigt? @-Mentions können sogar im Rahmen einer spezifischen Code-Zeile verwendet werden – beispielsweise um Spezialisten hinzuzuziehen, die etwas ansehen sollen, ohne sich mit dem gesamten Review herumschlagen zu müssen.

Iterative Reviews

Pull-Requests erzeugen Feedback-Schleifen: Ein Entwickler schreibt Code, sein Team reviewt diesen, der Entwickler baut Änderungen ein, das Team reviewt sie und gibt sie frei, der Entwickler mergt, und ein Vorgang ist erledigt. Wenn das Git-Management-Tool keinen Mechanismus bietet, um den Reviewer-Status oder die Review-Iterationen einzufangen – wie sollte man dann bezüglich des Prozesses im Bilde bleiben?

Bitbucket Server löst dieses Problem durch Status-Buttons für Reviewer. Wenn der Autor beispielsweise Änderungen vornehmen muss, kann der Reviewer dies durch einen Klick auf Needs Work indizieren. Sind Änderungen eingeflossen, können Reviewer einfach herausfinden, was neu ist: Iterative Reviews sind ein Mechanismus, der es erlaubt, die Diffs nur auf die neuen Änderungen seit dem letzten Review zu beschränken. Es ist nicht nötig, Dateien manuell zu durchsuchen oder Code nochmals zu reviewen.

Workflow-Flexibilität

In die Erstellung eines Entwicklungs-Workflows fließen eine Menge Faktoren ein. Arbeitet das Team in einer stark regulierten Industrie? Wer soll Zugriff auf die Code-Basis haben? Welche Arten von Qualitäts-Checks braucht das Team? Die Liste lässt sich weiterführen. Deshalb ist Flexibilität so wichtig: Keine zwei Entwicklungsteams sind exakt gleich.

In Bitbucket Server können Teams definieren, wie ein Pull-Request gemergt wird (verfügbare Merge-Strategien sind merge commit, Fast Forward only und squash) und wann er gemergt wird (zum Beispiel erst dann, wenn es zwei Freigaben und einen durchgelaufenen Build gibt). Kein anderes Git-System kann eine solche Freiheit bieten. Mit Bitbucket Server definiert das Team, wie es arbeitet, und nicht das Tool.

Integration in die Tool-Landschaft

Und nicht zuletzt muss bei der Evaluation von Git-Management-Tools die Frage eine Rolle spielen, wie sich eine Lösung in das bestehende Tool-Set eingliedert. Software-Entwicklung sollte ein Prozess sein, der nicht von zu vielen Kontextwechseln gestört wird. Mit gut durchdachten Integrations wie beispielsweise den Smart Commits, die es ermöglichen, den Status von JIRA-Vorgängen über Commit-Nachrichten zu ändern, handhabt Bitbucket Server den Overhead für das Team. Das Zusammenspiel mit weiteren Atlassian-Systemen wie JIRA Software, HipChat und Bamboo ist erstklassig. Und wer andere Tools nutzt, findet auf dem Atlassian Marketplace eine Vielzahl von Lösungen für zusätzliche Integrations und Funktionserweiterungen.

Feedback von Teamkollegen reduziert das Bug-Aufkommen im Code. Es dient Entwicklern als Sicherheitsnetz und hilft sicherzustellen, dass das Team die höchste Codequalität ausliefert, zu der es fähig ist. Letztlich interessiert Kunden nur, ob das Produkt zuverlässig funktioniert oder nicht. Aus diesem Grund ist die Berücksichtigung von Code-Reviews und Pull-Requests bei der Evaluation von Git-Repository-Managern so wichtig.

Git und Bitbucket effektiv nutzen? Wir sind Ihr Partner!

Bitbucket bietet eine zentrale Lösung zum Management des gesamten distributierten Codes: Hier kommen alle Git-Repositories im Unternehmen zusammen, hier finden Entwickler immer die letzte offizielle Version eines Projekts, hier können Projektverantwortliche Berechtigungen kontrollieren, um sicherzustellen, dass die richtigen Nutzer Zugriff auf den richtigen Code haben. Möchten Sie mehr erfahren? Wir sind offizieller Vertriebspartner von Atlassian und einer der größten Atlassian Experts weltweit. Gerne unterstützen wir Sie bei der Evaluierung, Lizenzierung und Adaption von Bitbucket.

Weiterführende Infos

99 Argumente für Bitbucket Server (vormals Stash) als Git-Repository-Manager
Neue Enterprise-Features in Bitbucket für Git-Entwicklungsteams: Smart Mirroring, Git Large File Storage, Projekte
Branch-basierte Git-Workflows adaptieren
Echte Integration: Das Zusammenspiel von JIRA, Stash und Bamboo
So funktioniert die Lizenzierung von Atlassian-Produkten