[LINUX] Création de demandes d'extraction

À l'origine, il fait partie du code source du noyau Linux, il sera donc traité comme GPLv2 (reconnaissance qu'il devrait l'être).

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.

Ce chapitre décrit comment un responsable crée et envoie des demandes d'extraction à d'autres responsables. Cela permet de transférer les modifications de l'arborescence d'un responsable vers l'arborescence d'un autre responsable.

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.

Ce texte a été écrit par Tobin C. Harding à partir d'un commentaire fait par Greg Kroah-Hartman et Linus Torvalds à LKML (à cette époque, il n'était pas encore un mainteneur chevronné). Suggestions et corrections apportées par Jonathan Corbet et Mauro Carvalho Chehab. Les inexactitudes ne sont pas intentionnelles, mais inévitables. Si vous remarquez des erreurs, veuillez contacter 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.

Tout d'abord, vous devez inclure tous les correctifs que vous essayez d'inclure dans la demande d'extraction dans différentes branches. En général, vous êtes basé sur la branche de l'arborescence de développement à partir de laquelle vous envoyez des pull requests.

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.

Pour créer une pull request, vous devez d'abord baliser la branche que vous venez de créer. Il est recommandé que le nom de la balise soit quelque chose que les autres peuvent comprendre même après un certain temps. Une bonne pratique consiste à inclure le sous-système d'origine et la version du noyau cible dans le nom.

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 demande: Une requête d'extraction pour la version 4.15-rc1 du noyau pour d'autres éléments (divers), y compris les drivers / char, est nommée char-misc-4.15-rc1. Si une telle balise est fournie par une branche nommée char-misc-next, exécutez la commande suivante.

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).

Une balise signée appelée char-misc-4.15-rc1 est créée sur la base du recommit de la branche char-misc-next. Il est signé par votre clé gpg (voir Documentation / mainteneur / configure-git.rst)

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

Linus autorise uniquement les demandes d'extraction basées sur des balises signées. Les autres responsables peuvent être différents.

.

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.

Lorsque vous exécutez la commande ci-dessus, git ouvrira un éditeur et vous demandera d'écrire les détails de la balise. Dans ce cas, vous écrivez une pull request. Incluez un aperçu de "ce qui est inclus ici", "pourquoi il doit être fusionné" et "comment les tests ont été effectués, le cas échéant". Toutes ces informations sont contenues dans la balise elle-même, qui est alors la demande de fusion que le responsable effectue lors de la fusion de la demande d'extraction. Veuillez bien l'écrire car il restera dans l'arborescence du noyau pour le futur.

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.

En tout cas, du moins pour moi, l'important est le "message". Je tire et je veux comprendre pourquoi je dois tirer. Je veux également l'utiliser comme un message de fusion, ce qui devrait non seulement avoir un sens pour moi, mais aussi comme une histoire.

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.

Si vous pensez que quelque chose ne va pas avec la demande d'extraction, cela apparaîtra dans la description. Si vous travaillez avec un fichier que vous ne gérez pas, veuillez indiquer «pourquoi».

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..

Je vérifie quand même avec diffstat, et si je ne le mentionne pas, je serais plus méfiant. Aussi, si vous envoyez un nouveau truc après avoir envoyé une fenêtre de fusion (ou un correctif de bogue, mais cela semble très dangereux), en plus de "quoi faire" et "pourquoi faire ainsi" Veuillez également expliquer le «calendrier». Pourquoi cela n'est pas passé par la fenêtre de fusion.

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.

Il utilise à la fois une pull request dans l'e-mail et une balise signée, de sorte que vous pouvez écrire votre travail à l'intérieur de la balise signée, en fonction de votre flux de travail (il sera également automatiquement envoyé à l'e-mail de pull request). Vous pouvez également transformer la balise signée en un espace réservé qui ne contient rien d'intéressant et expliquer le travail plus tard lorsque vous soumettez réellement la demande d'extraction.

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.

Et bien sûr, j'édite le message. Parfois, c'est un formatage trivial (indentation ou citation entière), mais parfois une partie du message est compréhensible une fois tirée (suivi de problèmes personnels que j'essaie d'envoyer immédiatement avec conflit). Le contexte du message de validation de fusion n'a pas de sens, j'essaie donc de le rendre significatif.

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.

Corrigez les erreurs notables (erreurs de prononciation) ou la grammaire incorrecte, surtout si vous n'êtes pas de langue maternelle (même si vous êtes de langue maternelle). Cependant, j'en manque aussi et j'en ajoute.

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.

Il existe un correctif majeur pour le patch char / misc ∧ pour la fenêtre de fusion 4.15-rc1.

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:

Cela inclut le nouvel ensemble de fonctionnalités habituel ajouté à tous les pilotes fous, ainsi que les nouveaux sous-systèmes suivants:

  • 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: un jeu de pilotes pour la dernière architecture de bus de voyage dans le temps qui fournit des E / S au CPU avant qu'il ne soit demandé pour un traitement ininterrompu.

  • 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: En raison de l'impact de time_travel_controllers à l'échelle du système, un nouvel ensemble de pilotes de décalage de relativité était nécessaire pour accueillir les trous noirs nouvellement formés qui pourraient inhaler le processeur. Ce sous-système gère cela d'une manière qui neutralise le problème. Il existe une option Kconfig qui les force à être activées en cas de besoin, de sorte que le problème ne se produit pas.

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.)

Ces correctifs ont été testés sur toutes les dernières versions de linux-next et tous les problèmes d'origine trouvés ont été résolus. (Il n'y avait pas d'option Kconfig correspondante dans la dernière version de l'arborescence linux-netxt, donc je suis désolé si vous l'avez placée près de Canberra)

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.

Le format du message de balise est similaire à git commit id. Assurez-vous de vous déconnecter avec une ligne en haut, "Objet du résumé" et en bas.

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

Maintenant que nous avons une balise signée locale, nous devons la pousser vers un endroit où nous pouvons la lancer.

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:

La dernière chose à faire est de créer un message de demande d'extraction. git facilite cela en utilisant la commande git request-pull. Cependant, j'ai besoin d'un peu d'aide pour décider sur quoi tirer et sur quoi le baser (pour voir les changements corrects à tirer et le diffstat). La commande suivante générera une pull request.

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).

Cela nécessite que git utilise le protocole git: // pour pull pour comparer les différences entre l'emplacement de la balise'char-misc-4.15-rc1 'au début de la branche master. (Dans mon cas, c'était la dernière place dans l'arborescence linux ramifiée, généralement -rc release). Si vous souhaitez utiliser https: // à la place, vous pouvez le remplacer (notez que certaines personnes ont des problèmes de pare-feu avec https git pull dans ce cas).

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.

Si le dépôt n'a pas la balise char-misc-4.15-rc1, il vérifiera lors de l'extraction, git se plaindra s'il n'est pas là. En fait, il est utile de se rappeler de pousser vers un lieu public.

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.

La sortie de "git request-pull" comprend l'emplacement de l'arbre git, la balise spécifique à extraire et le texte intégral. Une description de la balise (c'est pourquoi la balise doit fournir les informations appropriées). Il crée également un diffstat pour la demande d'extraction et un court journal des validations individuelles fournies par la demande d'extraction.

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 a répondu qu'il avait tendance à préférer le protocole git: //. D'autres responsables peuvent avoir des goûts différents. Gardez également à l'esprit que https: // peut être un meilleur choix si vous souhaitez effectuer une pull request sans balise signée. Voir le fil d'origine pour plus d'informations.

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:

La demande d'extraction est envoyée de la même manière qu'un patch normal. Envoyez-le au responsable sous forme de courrier électronique, et si nécessaire, envoyez CC LKML et une liste spécifique au sous-système. Les demandes d'extraction adressées à Linus ont généralement le sujet suivant:

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

Recommended Posts

Création de demandes d'extraction
demandes