[LINUX] Pull-Anfragen erstellen

Ursprünglich ist es Teil des Quellcodes des Linux-Kernels, daher wird es als GPLv2 behandelt (Anerkennung, dass es sein sollte).

https://www.kernel.org/doc/html/latest/index.html

Licensing documentation

The following describes the license of the Linux kernel source code (GPLv2), how to properly mark the license of individual files in the source tree, as well as links to the full license text.

https://www.kernel.org/doc/html/latest/process/license-rules.html#kernel-licensing

https://www.kernel.org/doc/html/latest/maintainer/pull-requests.html

Creating Pull Requests

This chapter describes how maintainers can create and submit pull requests to other maintainers. This is useful for transferring changes from one maintainers tree to another maintainers tree.

In diesem Kapitel wird beschrieben, wie ein Betreuer Pull-Anforderungen erstellt und an andere Betreuer sendet. Auf diese Weise können Änderungen von einem Betreuerbaum auf einen anderen Betreuerbaum übertragen werden.

This document was written by Tobin C. Harding (who at that time, was not an experienced maintainer) primarily from comments made by Greg Kroah-Hartman and Linus Torvalds on LKML. Suggestions and fixes by Jonathan Corbet and Mauro Carvalho Chehab. Misrepresentation was unintentional but inevitable, please direct abuse to Tobin C. Harding me@tobin.cc.

Dieser Text wurde von Tobin C. Harding nach einem Kommentar von Greg Kroah-Hartman und Linus Torvalds von LKML verfasst (zu diesem Zeitpunkt war er noch kein erfahrener Betreuer). Vorschläge und Korrekturen von Jonathan Corbet und Mauro Carvalho Chehab. Falsche Angaben sind unbeabsichtigt, aber unvermeidlich. Wenn Sie Fehler bemerken, wenden Sie sich bitte an Tobin C. Harding [email protected].

Original email thread:

http://lkml.kernel.org/r/[email protected]

.

Create Branch

To start with you will need to have all the changes you wish to include in the pull request on a separate branch. Typically you will base this branch off of a branch in the developers tree whom you intend to send the pull request to.

Zunächst müssen Sie alle Fixes, die Sie in die Pull-Anforderung aufnehmen möchten, in verschiedene Zweige aufnehmen. Im Allgemeinen basieren Sie auf dem Zweig des Entwicklungsbaums, von dem aus Sie Pull-Anforderungen senden.

In order to create the pull request you must first tag the branch that you have just created. It is recommended that you choose a meaningful tag name, in a way that you and others can understand, even after some time. A good practice is to include in the name an indicator of the subsystem of origin and the target kernel version.

Um eine Pull-Anfrage zu erstellen, müssen Sie zuerst den soeben erstellten Zweig markieren. Es wird empfohlen, dass der Tag-Name etwas ist, das andere auch nach einer Weile verstehen können. Es wird empfohlen, das Ursprungssubsystem und die Zielkernversion in den Namen aufzunehmen.

Greg offers the following. A pull request with miscellaneous stuff for drivers/char, to be applied at the Kernel version 4.15-rc1 could be named as char-misc-4.15-rc1. If such tag would be produced from a branch named char-misc-next, you would be using the following command:

Greg beantragt: Die Pull-Anforderung für die Kernel-Version 4.15-rc1 für andere Elemente (Sonstiges), einschließlich Treiber / Zeichen, heißt char-misc-4.15-rc1. Wenn ein solches Tag von einem Zweig namens char-misc-next bereitgestellt wird, führen Sie den folgenden Befehl aus.

git tag -s char-misc-4.15-rc1 char-misc-next

that will create a signed tag called char-misc-4.15-rc1 based on the last commit in the char-misc-next branch, and sign it with your gpg key (see Documentation/maintainer/configure-git.rst).

Ein signiertes Tag mit dem Namen char-misc-4.15-rc1 wird basierend auf dem erneuten Festschreiben des Zweigs char-misc-next erstellt. Es wird mit Ihrem GPG-Schlüssel signiert (siehe Dokumentation / Betreuer / configure-git.rst).

Linus will only accept pull requests based on a signed tag. Other maintainers may differ.

Linus erlaubt nur Pull-Anfragen basierend auf signierten Tags. Andere Betreuer können anders sein.

.

When you run the above command git will drop you into an editor and ask you to describe the tag. In this case, you are describing a pull request, so outline what is contained here, why it should be merged, and what, if any, testing has been done. All of this information will end up in the tag itself, and then in the merge commit that the maintainer makes if/when they merge the pull request. So write it up well, as it will be in the kernel tree for forever.

Wenn Sie den obigen Befehl ausführen, öffnet git einen Editor und fordert Sie auf, die Tag-Details zu schreiben. In diesem Fall schreiben Sie eine Pull-Anfrage. Geben Sie einen Überblick über "Was ist hier enthalten?", "Warum muss es zusammengeführt werden?" Und "Wie wurden die Tests durchgeführt, falls vorhanden?". Alle diese Informationen sind im Tag selbst enthalten. Dies ist dann die Zusammenführungsanforderung, die der Betreuer beim Zusammenführen der Pull-Anforderung stellt. Bitte schreiben Sie es gut, da es für die Zukunft im Kernelbaum verbleiben wird.

As said by Linus:

Anyway, at least to me, the important part is the message. I want to understand what I'm pulling, and why I should pull it. I also want to use that message as the message for the merge, so it should not just make sense to me, but make sense as a historical record too.

Zumindest für mich ist die "Botschaft" das Wichtigste. Ich möchte verstehen, was ich ziehe und warum ich es ziehen muss. Ich möchte es auch als Nachricht zum Zusammenführen verwenden, was nicht nur für mich Sinn machen sollte, sondern auch als Geschichte.

Note that if there is something odd about the pull request, that should very much be in the explanation. If you're touching files that you don't maintain, explain why.

Wenn Sie der Meinung sind, dass mit der Pull-Anforderung etwas nicht stimmt, wird dies in der Beschreibung angezeigt. Wenn Sie mit einer Datei arbeiten, die Sie nicht pflegen, geben Sie bitte "Warum" an.

I will see it in the diffstat anyway, and if you didn't mention it, I'll just be extra suspicious. And when you send me new stuff after the merge window (or even bug-fixes, but ones that look scary), explain not just what they do and why they do it, but explain the timing. What happened that this didn't go through the merge window..

Ich erkundige mich trotzdem bei diffstat, und wenn ich es nicht erwähnen würde, wäre ich misstrauischer. Wenn Sie nach dem Senden eines Zusammenführungsfensters (oder einer Fehlerbehebung, die jedoch sehr gefährlich aussieht) ein neues Material senden, zusätzlich zu "Was ist zu tun?" Und "Warum?" Bitte erläutern Sie auch "Timing". Warum dies nicht durch das Zusammenführungsfenster ging.

I will take both what you write in the email pull request and in the signed tag, so depending on your workflow, you can either describe your work in the signed tag (which will also automatically make it into the pull request email), or you can make the signed tag just a placeholder with nothing interesting in it, and describe the work later when you actually send me the pull request.

Es wird sowohl eine Pull-Anfrage in der E-Mail als auch ein signiertes Tag verwendet, sodass Sie Ihre Arbeit abhängig von Ihrem Workflow in das signierte Tag schreiben können (es wird auch automatisch an die Pull-Anfrage-E-Mail gesendet). Alternativ können Sie das signierte Tag zu einem Platzhalter machen, der nichts Interessantes enthält, und die Aufgabe später erläutern, wenn Sie die Pull-Anforderung tatsächlich senden.

And yes, I will edit the message. Partly because I tend to do just trivial formatting (the whole indentation and quoting etc), but partly because part of the message may make sense for me at pull time (describing the conflicts and your personal issues for sending it right now), but may not make sense in the context of a merge commit message, so I will try to make it all make sense.

Und natürlich bearbeite ich die Nachricht. Manchmal ist es eine triviale Formatierung (Einrückung oder ganzes Zitieren), aber manchmal ist ein Teil der Nachricht beim Ziehen verständlich (aufgrund von Konflikten und persönlichen Problemen, die ich sofort zu senden versuche). Der Kontext der Merge-Commit-Nachricht ist nicht sinnvoll, daher versuche ich, sie aussagekräftig zu machen.

I will also fix any speeling mistaeks and bad grammar I notice, particularly for non-native speakers (but also for native ones ;^). But I may miss some, or even add some.

Korrigieren Sie erkennbare Fehler (Speeling Mistaeks) oder falsche Grammatik, insbesondere wenn Sie kein Muttersprachler sind (auch wenn Sie Muttersprachler sind). Ich vermisse aber auch einige und füge einige hinzu.

Linus

Greg gives, as an example pull request:

Char/Misc patches for 4.15-rc1

Here is the big char/misc patch set for the 4.15-rc1 merge window.

Es gibt eine wichtige Korrektur für den Char / Misc-Patch ∧ für das 4.15-rc1-Zusammenführungsfenster.

Contained in here is the normal set of new functions added to all of these crazy drivers, as well as the following brand new subsystems:

Dies beinhaltet die üblichen neuen Funktionen, die allen verrückten Treibern hinzugefügt wurden, sowie die folgenden neuen Subsysteme:

  • time_travel_controller: Finally a set of drivers for the latest time travel bus architecture that provides i/o to the CPU before it asked for it, allowing uninterrupted processing

--time_travel_controller: Ein Treibersatz für die neueste Zeitreisebusarchitektur, der der CPU E / A bereitstellt, bevor sie für eine unterbrechungsfreie Verarbeitung angefordert wird.

  • relativity_shifters: due to the affect that the time_travel_controllers have on the overall system, there was a need for a new set of relativity shifter drivers to accommodate the newly formed black holes that would threaten to suck CPUs into them. This subsystem handles this in a way to successfully neutralize the problems. There is a Kconfig option to force these to be enabled when needed, so problems should not occur.

--relativity_shifters: Aufgrund der systemweiten Auswirkungen von time_travel_controllern wurde ein neuer Satz von Relativity Shifter-Treibern benötigt, um neu gebildete Schwarze Löcher aufzunehmen, die die CPU einatmen könnten. Dieses Subsystem behandelt dies so, dass das Problem neutralisiert wird. Es gibt eine Kconfig-Option, mit der sie bei Bedarf aktiviert werden müssen, sodass das Problem nicht auftritt.

All of these patches have been successfully tested in the latest linux-next releases, and the original problems that it found have all been resolved (apologies to anyone living near Canberra for the lack of the Kconfig options in the earlier versions of the linux-next tree creations.)

Diese Patches wurden auf den neuesten Linux-Next-Versionen getestet und alle ursprünglich gefundenen Probleme wurden behoben. (In der neuesten Version des Linux-Netxt-Baums gab es keine entsprechende Kconfig-Option. Es tut mir leid, wenn Sie sie in die Nähe von Canberra stellen.)

Signed-off-by: Your-name-here your_email@domain

The tag message format is just like a git commit id. One line at the top for a “summary subject” and be sure to sign-off at the bottom.

Das Tag-Nachrichtenformat ähnelt der Git-Commit-ID. Stellen Sie sicher, dass Sie sich mit einer Zeile oben, "Betreff der Zusammenfassung" und unten abmelden.

Now that you have a local signed tag, you need to push it up to where it can be retrieved:

Nachdem wir ein lokal signiertes Tag haben, müssen wir es an einen Ort verschieben, an dem wir es starten können.

git push origin char-misc-4.15-rc1

Create Pull Request

The last thing to do is create the pull request message. git handily will do this for you with the git request-pull command, but it needs a bit of help determining what you want to pull, and on what to base the pull against (to show the correct changes to be pulled and the diffstat). The following command(s) will generate a pull request:

Als letztes müssen Sie eine Pull-Anforderungsnachricht erstellen. git macht dies mit dem Befehl git request-pull einfach. Ich brauche jedoch ein wenig Hilfe bei der Entscheidung, was ich ziehen und worauf ich mich stützen soll (um die richtigen Änderungen und das Diffstat zu sehen). Der folgende Befehl generiert eine Pull-Anforderung.

git request-pull master git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git/ char-misc-4.15-rc1

Quoting Greg:

This is asking git to compare the difference from the 'char-misc-4.15-rc1' tag location, to the head of the 'master' branch (which in my case points to the last location in Linus's tree that I diverged from, usually a -rc release) and to use the git:// protocol to pull from. If you wish to use https://, that can be used here instead as well (but note that some people behind firewalls will have problems with https git pulls).

Dazu muss git das git: // -Protokoll für Pull verwenden, um die Unterschiede zwischen der Position des Tags 'char-misc-4.15-rc1' und dem Beginn des Zweigs 'master' zu vergleichen. (In meinem Fall war es der letzte Platz im verzweigten Linux-Baum, normalerweise -rc release). Wenn Sie stattdessen https: // verwenden möchten, können Sie es ersetzen (beachten Sie, dass einige Benutzer in diesem Fall Firewall-Probleme mit https git pull haben).

If the char-misc-4.15-rc1 tag is not present in the repo that I am asking to be pulled from, git will complain saying it is not there, a handy way to remember to actually push it to a public location.

Wenn das Repository nicht über das Tag char-misc-4.15-rc1 verfügt, wird es beim Ziehen überprüft. Git beschwert sich, wenn es nicht vorhanden ist. In der Tat ist es nützlich, sich daran zu erinnern, an einen öffentlichen Ort zu pushen.

The output of 'git request-pull' will contain the location of the git tree and specific tag to pull from, and the full text description of that tag (which is why you need to provide good information in that tag). It will also create a diffstat of the pull request, and a shortlog of the individual commits that the pull request will provide.

Die Ausgabe von 'Git Request-Pull' enthält die Position des Git-Baums, das zu ziehende Tag und den vollständigen Text. Eine Beschreibung des Tags (aus diesem Grund muss das Tag die entsprechenden Informationen bereitstellen). Außerdem wird ein Diffstat für Pull-Anforderungen und ein kurzes Protokoll einzelner Commits erstellt, die von Pull-Anforderungen bereitgestellt werden.

Linus responded that he tends to prefer the git:// protocol. Other maintainers may have different preferences. Also, note that if you are creating pull requests without a signed tag then https:// may be a better choice. Please see the original thread for the full discussion.

Linus antwortete, dass er eher das git: // Protokoll bevorzuge. Andere Betreuer haben möglicherweise einen anderen Geschmack. Beachten Sie auch, dass https: // möglicherweise die bessere Wahl ist, wenn Sie eine Pull-Anfrage ohne signiertes Tag stellen möchten. Weitere Informationen finden Sie im Original-Thread.

Submit Pull Request

A pull request is submitted in the same way as an ordinary patch. Send as inline email to the maintainer and CC LKML and any sub-system specific lists if required. Pull requests to Linus typically have a subject line something like:

Die Pull-Anfrage wird wie ein regulärer Patch gesendet. Senden Sie es als Inline-Mail an den Betreuer und senden Sie gegebenenfalls CC LKML und eine subsystemspezifische Liste. Pull-Anfragen an Linus haben normalerweise das folgende Thema:

[GIT PULL] <subsystem> changes for v4.15-rc1

Recommended Posts

Pull-Anfragen erstellen
Anfragen