Codeüberprüfungsprozess bei Verwendung von GIT als Repository?

9

Was ist der beste Prozess für die Codeüberprüfung bei Verwendung von GIT? Wir haben einen externen GIT-Anbieter (Unfuddle) und haben Einschränkungen bei der Ressourcennutzung. Daher können wir nicht für jeden Entwickler dedizierte Remote-Repositorys haben.

Aktueller Prozess:

  • Wir haben einen GIT-Server mit einem masterZweig, zu dem sich jeder verpflichtet
  • Entwickler arbeiten über den lokalen masterSpiegel oder einen lokalen Feature-Zweig
  • Devs Push - to - Servers masterZweig
  • Überprüfung des Anforderungscodes durch Entwickler beim letzten Festschreiben

Problem:

  • Jeder Fehler in der Codeüberprüfung ist bereits im Master, wenn er abgefangen wird.
  • Schlimmer noch, normalerweise hat jemand ein paar Stunden verbrannt, um herauszufinden, was passiert ist ...

Also möchten wir

  • Codeüberprüfung VOR der Übermittlung an den 'Master'.
  • Haben Sie einen Prozess, der mit einem globalen Team zusammenarbeitet (keine Over-the-Shoulder- Bewertungen!)
  • Etwas, bei dem ein einzelner Entwickler nicht an seinem Schreibtisch / Computer sitzen muss, um eingeschaltet zu werden, damit jemand anderes fernsteuern kann (menschliche Abhängigkeit beseitigen, Entwickler gehen zu verschiedenen Zeitzonen nach Hause).

Wir verwenden TortoiseGIT für eine visuelle Darstellung einer Liste geänderter Dateien, unterschiedlicher Dateien usw. Einige von uns wechseln in eine GIT-Shell, wenn die GUI nicht ausreicht, aber im Idealfall möchten wir, dass der Workflow einfach und GUI-basiert ist (Ich möchte, dass das Tool jede Last lindert, nicht meine Entwickler).

DeepSpace101
quelle
Führen Sie vor dem Festschreiben einen Komponententest durch?
Guy Coder
@ GuyCoder: Meistens tun wir das.
DeepSpace101
Wenn Ihr Host keine Codeüberprüfungsfunktion bietet, erhalten Sie einen besseren Host. Schauen Sie sich Gerrit an und sehen Sie, ob Sie einen Host finden, der es bereitstellt.
Mattnz

Antworten:

15

Ein einfaches, aber effektives Modell ist das GitHub-Pull-Anforderungsmodell , bei dem die Mitwirkenden Anfragen "Bitte in meinem Code zusammenführen" einreichen. Ein Betreuer überprüft die Änderungssätze und entscheidet, ob sie mehr Arbeit benötigen oder zum Zusammenführen geeignet sind. Er kann dann in den Hauptzweig übergehen. Committer dürfen in der Regel nicht direkt in den Master-Zweig pushen (dies kann an Ihren Geschmack angepasst werden, wir erlauben "kleinere" Commits, direkt einzusteigen).

Steven Schlansker
quelle
Wir haben ein enges Team von 7 professionellen Entwicklern (im Vergleich zu anonymen Mitwirkenden) weltweit, sodass es sicher ist, dass jeder einzelne direkt an unseren Remote-Master weitergeleitet wird. Obwohl es sich um einen Link + Intro gegen eine eigenständige Antwort handelt, die ich bevorzuge, ist dies in diesem Fall sinnvoll. Tolles Schreiben unter Link, danke!
DeepSpace101
@Sid Mit einem 3-köpfigen Team würde ich nicht zulassen, dass sie alle zum Meister drängen.
Andrew T Finnell
Pull-Anfragen sind auch in Rhodecode und Atlassian Stash verfügbar
dukeofgaming
2
@ Andrew: Warum nicht? Es gibt viele Probleme, die entstehen können, wenn die gesamte Teamarbeit über einen Choke-Punkt geleitet wird. Diese können alle gemildert werden, aber eine Einzelpunkt-Befehls- und Kontrollstruktur ist für einige Situationen besser geeignet als für andere.
Mattnz
1

Git ist ein verteiltes Versionskontrollsystem: Haben Sie nicht nur ein Repo mit einem Zweig!

Sie können mehrere Repositorys einrichten - eines für jeden Entwickler - und eines für das Master-Repo. Wenn einer ihrer Zweige zum Zusammenführen bereit ist, fordert der Entwickler eine Zusammenführung an und seine Änderungen werden von seinem Zweig / Repo in den Master gezogen.

Bevor diese Zusammenführung tatsächlich stattfindet, kann der Prüfer die Änderungen in seine Umgebung übernehmen und überprüfen, bevor er sie an den Master weiterleitet.

Zusätzliche Vorteile sind, dass ein Entwickler auf diese Weise so viele Zweige haben kann, wie er möchte, mit dem Namen, was er will, ohne sich gegenseitig zu stören oder sogar die schmutzige Wäsche des anderen so oft sehen zu müssen.


Außerdem lernen die Lingo: von „Devs verpflichten Server Master - Zweig“ meinst du , dass sie schieben ihre Veränderungen zu meistern?

Richard JP Le Guen
quelle
Ja, sie pushihre Arbeit. Wir können keine eindeutigen Remote-Repositorys auf dem GIT-Server haben, da wir einen GIT-Hoster bezahlen und diese pro Repository berechnen. Meinten Sie, mehrere Remote-Niederlassungen pro Entwickler zu haben? Und wenn Sie sagen, the reviewer can pull the changes into their environmentwelche genauen GIT-Befehle (oder TortoiseGIT-Flow) meinen Sie?
DeepSpace101
Nein, ich meine, Sie haben mehrere Repositories. eine pro Entwickler, und in diesem Repository können sie so viele Zweige haben, wie sie möchten. Was pull, weiß ich nicht , was der Befehl in TortoiseGit wäre - aber der Befehl git pull . Es ist das Gegenteil von einem Push - Sie ziehen Änderungen aus dem Remote-Repository, um Ihre Umgebung mit der Arbeit zu aktualisieren, die andere Entwickler möglicherweise geleistet haben.
Richard JP Le Guen
Ich weiß git pull:) ... Ich habe nach der vollständigen Syntax gefragt, um das Repo / Branch / Tag-System auf Push / Pulls zu überprüfen, auf die Sie sich bezogen haben. Im Moment machen wir es git pullsowieso nur aus der Ferne: master - was die Probleme verursacht. Wie auch immer, Stevens Links waren großartig. Vielen Dank
DeepSpace101
Für alle praktischen Zwecke ist in diesem Fall eine Verzweigung im gehosteten Repo genauso wie ein anderes Repo.
Mattnz