Hallo,

in der TroLUG arbeiten ja viele mit Git und Github, es gab ja auch schon
mehrere Vorträge dazu.

Mich würden mal eure Meinungen zum Umgang mit Pull Requests interessieren.

Was würdet ihr machen, wenn ihr zu einem von euch auf Github eingestellten
Projekt ohne vorherige Ankündung von einem bisher unbekannten User einen Pull
Request bekommt? Der Request führt mehrere thematisch unterschiedliche 
Änderungen
ein. Einen Teil davon möchte ich definitiv nicht übernehmen. Bei einem anderen
sehe ich prinzipiell die Notwendigkeit einer Änderung, aber es gibt mehrere
denkbare Optionen und ich bin noch unschlüssig. Der vom Sourcecode-Umfang her
größte Teil ist durchaus in Ordnung, müsste allerdings noch ein bisschen
überarbeitet werden, außerdem wurde bei der Dokumentation geschlampt. Der Pull
Request besteht aus einem einzelnen Commit mit allen Änderungen, ein 
Cherry-Picking
im Git-Sinne ist nicht möglich.

Einerseits freue ich mich ja, dass andere mit meinen Tools arbeiten und sich
an der Weiterentwicklung beteiligen wollen, und möche den Interessenten
nicht vergraulen. Andererseits möchte ich gewisse Mindesstandards
durchsetzen, immerhin erscheint das Projekt unter meinem Namen.

Ich sehe nun drei Möglichkeiten:

(1) Den Pull Request annehmen (in einem eigenen Branch), ihn nach meinen
Vorstellungen überarbeiten (und dabei Teile der neu eingeführten Funktionalität
wieder entfernen) und dann nach master mergen.

Das hat den Vorteil, dass die eine Hauptänderung unter dem Namen des Autors
in der Commit History erscheint, aber trotzdem keine unerwünschten
Änderungen in master Branch landen. Nachteile sind aber, dass ich eigentlich
einen Teil der Änderungen auch in einem Seitenbranch nicht sehen möchte,
schließlich kann jeder den später pullen (warum auch immer). Außerdem soll
es nicht den Eindruck erwecken, dass jeder alles abkippen kann und ich
hinter ihm aufräume.

(2) Den Pull Request ablehnen und die eine erwünschte Änderung selber (ggf.
per Copy-Paste aus dem Diff) durchführen.

Somit erscheint nur diese Änderung in der Commit History und die Dokumentation
wird sauber mitgeführt. Allerdings erscheint dieser Commit unter meinem
Namen, die Urheberschaft des Einreichers ist an der History nicht erkennbar
und Github führt ihn in den "Insights" weiterhin nicht als Beitragenden.

(3) Verhandeln mit dem Autor, bis er den Pull Request soweit anpasst, dass er
meinen Vorstellungen entspricht.

Das hat den Vorteil, dass dann sein Name zu seinem Code in der History 
erscheint.
Allerdings könnte er zwischendrin die Lust verlieren, insbesondere wenn sich
die Verhandlung über mehrere Iterationen hinzieht oder das Resultat sich zu weit
von seinem ursprünglichen Beitrag entfernt. Erschwerend kommt hinzu, dass ich 
mir
an der einen Stelle selber noch unsicher bin, welches die beste Lösung ist.

Was meint ihr?

Gruß, Harald

Antwort per Email an