Metainformationen zur Seite

pull request

Ein pull request ist eine Bitte, eine Reihe von Änderungen einzuspielen. Die Arbeitsweise läuft meist wie folgt:

  • Entwickler forkt das Repository
  • Entwickler erstellt einen separaten branch, dessen Name das Problem beschreibt. Wenn ein Problem in foo in der bar-Komponente gelöst wird, dann z.B. mit git branch fix-foo-bar. Für ganz einfache Änderungen braucht ihr das nicht unbedingt. Wer bereits erstellte commits umändern will, muss etwas tricksen.
  • Entwickler korrigiert Probleme / schreibt Erweiterungen. Dabei kann man ruhig mehrere Commits erstellen. Optimal ist, wenn jeder Commit eine kleinere Änderung ist, z.B.
    • lasse foo weiterlaufen, falls bar ausfällt
    • Unittest für Fehler in foo.bar
    • Korrigiere bar-Komponente in foo
    • Aktualisiere Dokumentation von foo.bar für häufige Fehlerursachen
  • Entwickler pusht seine Änderungen zum eigenen Repository.
  • Entwickler klickt auf den Pull Request-Button und gibt eine Nachricht ein.
  • Maintainer schaut sich die Änderungen, verlangt ggf. Verbesserungen
  • Maintainer spielt die Änderungen in die Software ein.

Mehr zu pull requests auf github.

pull request-Nachricht

Die Nachricht eines pull-Requests sollte aus folgenden Informationen bestehen:

  • Eine Zusammenführung (1 Satz), was der pull request macht (Korrigiere foo.bar, wenn baz passiert). Der Titel ist eine Kurzform davon (Korrigiere foo.bar).
  • Wenn möglich einen Verweis auf das issue. Am besten einfach indem man (closes #42) an den Titel anhängt.
  • Eine kurze Beschreibung, wie das Problem diagnostiziert wurde, oder wofür das Feature nützlich ist, etwa Wenn baz in einer Vollmondnacht gilt und foo zwei Anfragen kurz hintereinander bekommt, wird in foo.bar der Zugriff nicht richtig serialisiert.

So nicht

Geänderte Dateien: foo/bar.h, foo/bar.c / foo/bar/README, foo/components.c, foo/util.h

Diese Information wird automatisch generiert. Klickt einfach auf diff, um sie selber zu sehen.

Titel: Issue #42
Text: #42

Der pull request sollte allein aussagekräftig sein.

Titel: Die bar-Komponente in foo ist manchmal fehlerhaft. Dieser pull request fix...
Text: ...t sie, wenn baz eintritt.

Titel und Text müssen alleine aussagekräftig sein. Nicht jeder liest sie zusammen.

Titel: Korrigiere bar-Komponente
Text: Dieser pull request korrigiert foo.bar, wenn baz passiert.
      Außerdem wird der bug #42 (Fehler beim Aufbauen der Netzwerkverbindung) gelöst
      Weiterhin wird in der xy-Komponente jetzt facebook unterstützt

Ein pull Request sollte ein Thema haben. Erstelle mehrere Branches (mit [code]git checkout -b[/code]) für mehrere Änderungen.

diffs

Manche Projekte (wie z.B. lxc) wollen lieber diffs haben. Dafür erstellt man einen oder mehrere git-commits mit der Option -s und ruft dann git format-patch auf:

# Änderungen im Editor machen
git ci -a -s -m 'Fixed stuff'
git format-patch -n HEAD^

Der Patch ist dann in der Datei 0001-fixed-stuff.patch.