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
master
Zweig, zu dem sich jeder verpflichtet - Entwickler arbeiten über den lokalen
master
Spiegel oder einen lokalen Feature-Zweig - Devs Push - to - Servers
master
Zweig - Ü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).
git
code-reviews
DeepSpace101
quelle
quelle
Antworten:
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).
quelle
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?
quelle
push
ihre 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 environment
welche genauen GIT-Befehle (oder TortoiseGIT-Flow) meinen Sie?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.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 esgit pull
sowieso nur aus der Ferne: master - was die Probleme verursacht. Wie auch immer, Stevens Links waren großartig. Vielen Dank