Wie tragen Sie Patches zum Drupal-Kern bei?

10

Was ist der richtige Prozess, um Patches zum Drupal-Kern beizutragen?

Angenommen, ich finde einen Fehler im Drupal-Kern, behebe ihn und erstelle einen Patch . Wie reiche ich es ein?

Wenn der Fehler in Drupal 7 vorliegt, muss ich ihn auch in Drupal 8 beheben und zwei Patches einreichen? Gilt dies auch für Dokumentationsfehler / -verbesserungen?

Benötigen alle Patches auch einen Unit-Test?

mpdonadio
quelle
3
Derzeit suche ich nach Antworten, vorausgesetzt, ich habe bereits ein Konto auf drupal.org, weiß, wie man Git verwendet, wie man den Kern überprüft und wie man Git-Patches erstellt. Sobald wir gute Antworten haben, können wir diese Antwort mit Anmerkungen versehen oder hinzufügen.
mpdonadio
Da dies eine Antwort auf ein Problem ist, das ein Kernbetreuer unter meta.drupal.stackexchange.com/questions/2325 angesprochen hat , wird die Post-Benachrichtigung erzwungen. Wir brauchen eine gute Zusammenfassung des Prozesses, insbesondere zu den obigen Fragen. Antworten, die nur auf andere Seiten verlinken, werden herabgestuft und / oder gelöscht. Ich hoffe, dass diese Frage als Ressource dient, auf die wir DA-Benutzer hinweisen können, wenn sie ein Problem mit dem Kern finden.
mpdonadio

Antworten:

6

Wenn der Fehler in Drupal 7 vorliegt, muss ich ihn auch in Drupal 8 beheben und zwei Patches einreichen?

Wenn der Fehler in der zu entwickelnden Version (in diesem Fall Drupal 8) und in der vorherigen Version (Drupal 7) vorhanden ist, sollte der Fehler zuerst in der aktuell entwickelten Version und dann in der / den vorherigen Version (en) behoben werden.

Wenn der Fehler in der neuesten entwickelten Version nicht vorhanden ist, z. B. weil der Fehler für eine Funktion gilt, die entfernt wurde oder die bereits geändert wurde, sollte der Patch für die Version vor der aktuell entwickelten Version bereitgestellt werden.

Der folgende Workflow lautet:

  • Zuerst wird der Patch für die neueste Version erstellt und zur Überprüfung eingereicht, auch wenn er sich noch in der Entwicklung befindet (wie im Fall von Drupal 8).
  • Sobald dieser Patch auf Drupal angewendet wurde, wird ein Patch erstellt, der für die vorherige Version gilt, und zur Überprüfung eingereicht

Sie können Patches für zwei Drupal-Versionen gleichzeitig erstellen. Da für den Patch für die neueste Drupal-Version jedoch Änderungen erforderlich sein können, ist es besser, an dem Patch für die aktuell entwickelte Version zu arbeiten, als an zwei verschiedenen Patches, die beide erforderlich sind verändert sein.

Siehe auch: Backport-Richtlinie .

Gilt dies auch für Dokumentationsfehler / -verbesserungen?

Ja tut es. Auch in diesem Fall muss der Patch für die vorherige Version bereitgestellt werden, wenn die aktuell entwickelte Version die Funktion / Methode entfernt hat, auf die sich die Dokumentation bezieht.

Benötigen alle Patches auch einen Unit-Test?

Wenn der Patch für die Dokumentation vorgesehen ist, sind keine Tests erforderlich. Der auf http://qa.drupal.org ausgeführte Testbot überprüft den Drupal-Code, nachdem der Patch angewendet wurde. Wenn der Patch Syntaxfehler einführt (z. B. weil der Kommentar vor dem erforderlichen geschlossen wird), meldet der Testbot einen Fehler über den Patch, bevor die Tests ausgeführt werden.

Wenn der Patch für eine neue Funktion vorgesehen ist, sind die Tests erforderlich.

Wenn der Patch einen Fehler beheben soll, können die Tests von den Betreuern verlangt werden, wenn noch kein Test vorhanden ist, der eine bestimmte Funktion überprüft. Der Test ist im Allgemeinen erforderlich, um zu vermeiden, dass derselbe Fehler erneut eingeführt wird, wenn in Zukunft derselbe Code geändert wird. Wenn der Fehler lediglich eine Variable ist, die initialisiert, aber nie von einer Funktion / Methode verwendet wird, sind die Tests wahrscheinlich nicht erforderlich.

kiamlaluno
quelle
Kann dasselbe Problem Patches für mehrere Kernversionen enthalten?
mpdonadio
1
Wenn das Problem für mehr als eine Version gilt, kann es Patches für jede interessierte Version enthalten.
Kiamlaluno
Ist es immer so, dass zuerst der D8-Patch und dann die D7-Version eingereicht wird? Oder gibt es Fälle, in denen es angebracht ist, beide gleichzeitig einzureichen?
mpdonadio
Sie können Patches für zwei verschiedene Versionen einreichen, aber der Patch, der zuerst angewendet wird, gilt für die neueste Version. Es ist besser, zuerst den Patch für die neuere Version zu erstellen, da für den Patch möglicherweise Änderungen erforderlich sind.
Kiamlaluno
3

Jede Projektseite auf drupal.org hat oben eine Registerkarte "Versionskontrolle". Es bietet nicht nur einen guten Überblick über alle Code-Repository-Optionen für das jeweilige Projekt, sondern alle Beispiele für git-Befehle sind auch auf das Projekt zugeschnitten. Sie können es sogar interaktiv auf eine bestimmte Version ändern.

Für Drupal Core finden Sie diese Seite unter http://drupal.org/project/drupal/git-instructions

Wenn Sie Ihren Patch erstellt haben, hängen Sie die Patch-Datei einfach an ein Problem an, in dem erläutert wird, was Ihr Patch bewirkt.

Zwei wichtige Dinge, die Sie beachten sollten, sind sicherzustellen, dass der Patch mit ".patch" endet, und den Status auf "Needs review" zu setzen. Dies, damit der Testbot es bemerkt und seinen Test automatisch ausführt.

Neuer Code muss immer von Tests begleitet werden .

Beachten Sie, dass dies durch Projekte deaktiviert werden kann und einige dies auch tun. Für Drupal Core ist es jedoch aktiviert, sodass alle Patches getestet werden.

Weitere Informationen finden Sie unter http://drupal.org/contribute/development .

Tsvenson
quelle
Dies ist ein guter Anfang.
mpdonadio