All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@s-opensource.com>
To: "Tobin C. Harding" <me@tobin.cc>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jonathan Corbet <corbet@lwn.net>,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH v2] doc: add maintainer book
Date: Mon, 27 Nov 2017 19:01:23 -0200	[thread overview]
Message-ID: <20171127190123.47a7cad5@vento.lan> (raw)
In-Reply-To: <20171127205303.GO17858@eros>

Em Tue, 28 Nov 2017 07:53:03 +1100
"Tobin C. Harding" <me@tobin.cc> escreveu:

> On Mon, Nov 27, 2017 at 04:57:30PM -0200, Mauro Carvalho Chehab wrote:
> > Em Sat, 25 Nov 2017 08:44:19 +1100
> > "Tobin C. Harding" <me@tobin.cc> escreveu:
> > 
> > > There is currently very little documentation in the kernel on maintainer
> > > level tasks. In particular there are no documents on creating pull
> > > requests to submit to Linus.
> > > 
> > > Quoting Greg Kroah-Hartman on LKML:
> > > 
> > >     Anyway, this actually came up at the kernel summit / maintainer
> > >     meeting a few weeks ago, in that "how do I make a
> > >     good pull request to Linus" is something we need to document.
> > > 
> > >     Here's what I do, and it seems to work well, so maybe we should turn
> > >     it into the start of the documentation for how to do it.
> > > 
> > > (quote references: kernel summit, Europe 2017)
> > > 
> > > Create a new kernel documentation book 'how to be a maintainer'
> > > (suggested by Jonathan Corbet). Add chapters on 'configuring git' and
> > > 'creating a pull request'.
> > > 
> > > Most of the content was written by Linus Torvalds and Greg Kroah-Hartman
> > > in discussion on LKML. This is stated at the start of one of the
> > > chapters and the original email thread is referenced in
> > > 'pull-requests.rst'.
> > > 
> > > Signed-off-by: Tobin C. Harding <me@tobin.cc>
> > > ---
> > > 
> > > v2:
> > >  - Change title of book, suggested by Dan Williams.
> > > 
> > > thanks,
> > > Tobin.
> > > 
> > >  Documentation/index.rst                    |   1 +
> > >  Documentation/maintainer/conf.py           |  10 ++
> > >  Documentation/maintainer/configure-git.rst |  34 ++++++
> > >  Documentation/maintainer/index.rst         |  10 ++
> > >  Documentation/maintainer/pull-requests.rst | 178 +++++++++++++++++++++++++++++
> > >  5 files changed, 233 insertions(+)
> > >  create mode 100644 Documentation/maintainer/conf.py
> > >  create mode 100644 Documentation/maintainer/configure-git.rst
> > >  create mode 100644 Documentation/maintainer/index.rst
> > >  create mode 100644 Documentation/maintainer/pull-requests.rst
> > > 
> > > diff --git a/Documentation/index.rst b/Documentation/index.rst
> > > index cb7f1ba5b3b1..a4fb34dddcf3 100644
> > > --- a/Documentation/index.rst
> > > +++ b/Documentation/index.rst
> > > @@ -52,6 +52,7 @@ merged much easier.
> > >     dev-tools/index
> > >     doc-guide/index
> > >     kernel-hacking/index
> > > +   maintainer/index
> > >  
> > >  Kernel API documentation
> > >  ------------------------
> > > diff --git a/Documentation/maintainer/conf.py b/Documentation/maintainer/conf.py
> > > new file mode 100644
> > > index 000000000000..81e9eb7a7884
> > > --- /dev/null
> > > +++ b/Documentation/maintainer/conf.py
> > > @@ -0,0 +1,10 @@
> > > +# -*- coding: utf-8; mode: python -*-
> > > +
> > > +project = 'Linux Kernel Development Documentation'
> > > +
> > > +tags.add("subproject")
> > > +
> > > +latex_documents = [
> > > +    ('index', 'maintainer.tex', 'Linux Kernel Development Documentation',
> > > +     'The kernel development community', 'manual'),
> > > +]
> > > diff --git a/Documentation/maintainer/configure-git.rst b/Documentation/maintainer/configure-git.rst
> > > new file mode 100644
> > > index 000000000000..78bbbb0d2c84
> > > --- /dev/null
> > > +++ b/Documentation/maintainer/configure-git.rst
> > > @@ -0,0 +1,34 @@
> > > +.. _configuregit:
> > > +
> > > +Configure Git
> > > +=============
> > > +
> > > +This chapter describes maintainer level git configuration.
> > > +
> > > +Tagged branches used in :ref:`Documentation/maintainer/pull-requests.rst
> > > +<pullrequests>` should be signed with the developers public GPG key. Signed
> > > +tags can be created by passing the ``-u`` flag to ``git tag``. However,
> > > +since you would *usually* use the same key for the same project, you can
> > > +set it once with
> > > +::
> > > +
> > > +	git config user.signingkey "keyname"
> > > +
> > > +Alternatively, edit your ``.git/config`` or ``~/.gitconfig`` file by hand:
> > > +::
> > > +
> > > +	[user]
> > > +		name = Jane Developer
> > > +		email = jd@domain.org
> > > +		signingkey = jd@domain.org
> > > +
> > > +You may need to tell ``git`` to use ``gpg2``
> > > +::
> > > +
> > > +	[gpg]
> > > +		program = /path/to/gpg2
> > > +
> > > +You may also like to tell ``gpg`` which ``tty`` to use (add to your shell rc file)
> > > +::
> > > +
> > > +	export GPG_TTY=$(tty)
> > > diff --git a/Documentation/maintainer/index.rst b/Documentation/maintainer/index.rst
> > > new file mode 100644
> > > index 000000000000..fa84ac9cae39
> > > --- /dev/null
> > > +++ b/Documentation/maintainer/index.rst
> > > @@ -0,0 +1,10 @@
> > > +==========================
> > > +Kernel Maintainer Handbook
> > > +==========================
> > > +
> > > +.. toctree::
> > > +   :maxdepth: 2
> > > +
> > > +   configure-git
> > > +   pull-requests
> > > +
> > > diff --git a/Documentation/maintainer/pull-requests.rst b/Documentation/maintainer/pull-requests.rst
> > > new file mode 100644
> > > index 000000000000..0ca9f9bfd679
> > > --- /dev/null
> > > +++ b/Documentation/maintainer/pull-requests.rst
> > > @@ -0,0 +1,178 @@
> > > +.. _pullrequests:
> > > +
> > > +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.
> > > +
> > > +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.
> > > +Misrepresentation was unintentional but inevitable, please direct abuse to
> > > +Tobin C. Harding <me@tobin.cc>.
> > > +
> > > +Original email thread::
> > > +
> > > +	http://lkml.kernel.org/r/20171114110500.GA21175@kroah.com
> > > +
> > > +
> > > +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 the developers tree whom you intend to send the pull request to.
> > > +
> > > +Name your branch in a semi-useful manner, some developers like to use
> > > +``for-linus`` for patches that are going to Linus. Greg uses
> > > +``char-misc-next`` for his ``char/misc`` driver patches to be merged into
> > > +``linux-next``.
> > 
> > The name of the branch doesn't really matter. At the Linux media tree, I just
> > use "master" and "fixes" at the public maintainer's repository:
> > 	 https://git.linuxtv.org/media_tree.git/
> > 
> > I don't care much on pushing branches from the tree at kernel.org, from
> > where Linus pick my work:
> > 	https://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git/
> > 
> > I still push some branches there from time to time, but just because I
> > was lazy enough to remove something from my scripts :-)
> > 
> > Also, Linus also uses "master" on his public tree ;-)
> > 
> > Locally, I actually use different names for my work branch (patchwork)
> > and I have a "v4l_for_linus" branch from where I generate pull requests
> > (with can either have a snapshot of "patchwork" or "fixes" branch,
> > depending if the pull request is for a merge window or not). My internal
> > names are mapped into the public ones via .git/config, like:
> > 
> > 	[remote "media_tree"]
> > 		push = refs/heads/patchwork:refs/heads/master
> > 		...
> > 
> > In the past, I was using a different naming there, with the Kernel
> > version on it, but somewhere in the past I opted to just use "master".
> > The rationale is that people usually expect that the main development
> > stuff to be on a "master" repository of a random git tree. Also, when
> > I need, I create topic branches.
> > 
> > Anyway, the point is that the branch name actually depends on how
> > each maintainer/each subsystem works.
> > 
> > So, I would remove the above paragraph, as I doubt there is a general
> > rule for developer/maintainer's tree branches, and the name there
> > doesn't matter much - except on subsystems that use topic branches.
> > 
> > > +In order to create the pull request you must first tag the branch that you
> > > +have just created. Name the tag with something useful that you can
> > > +understand if you run across it in a few weeks, and something that will be
> > > +"unique".  Continuing Greg's example of the ``char-misc`` tree, for the
> > > +patches to be sent to Linus for the 4.15-rc1 merge window (as stated in the
> > > +above linked thread) he would name the tag 'char-misc-4.15-rc1'.
> > > +::
> > > +
> > > +	git tag -s char-misc-4.15-rc1 char-misc-next
> > > +
> > 
> > Now, the tag is what really matter, as this is what everybody sees on
> > merges, on every clone of upstream's tree.
> > 
> > In the past, most maintainers were using something like for-linus or for_linus.
> > 
> > IMHO, not mentioning the subsystem's origin at the tag's name is a bad
> > practice,  as it makes harder to identify what tree was merged, specially
> > during the merge window, where a lot merges happen on the first days. If 
> > you take a look at the recent logs, most maintainers add the name of the
> > subsystem at their pull request branch/tag nowadays:
> > 
> > 	https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=grep&q=merge+branch
> > 
> > (still, you would see some using tags/branches named "for_linus",
> > "fixes" , etc)
> > 
> > So, I would change it to something like that:
> > 
> > "In order to create the pull request you must first tag the branch that you
> >  have just created. It is recommended to choose a meaningful tag name,
> >  in a way that you and others can understand, even after some time.
> >  A good practice is to always include a name that will remind the
> >  subsystem of origin and the Kernel version the pull request's aiming.
> >  So, for example, a pull  request with miscelaneous 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::
> > 
> > 	git tag -s char-misc-4.15-rc1 char-misc-next"
> > 
> > -
> > 
> > On a side note, in the case of media, I opt to name the tags with
> > a sequencial number that it is unrelated to the rc version:
> > 
> > 	https://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git/refs/tags
> > 
> > Internally, I use a script that checks the last tag, and increments 1,
> > if the upstream Kernel version is the same as the one at the last tag.
> > 
> > The reason is that it I don't submit pull requests for every single
> > -rc kernel, and, sometimes, I end by submitting more than one pull
> > request for a single -rc version (usually for -rc1).
> > 
> > Regards,
> > Mauro
> 
> Thanks for your suggestions Mauro. Unless any other comments come in on
> this I'll work your changes into the next version.

Ok.

> Is there a _correct_ spelling of 'kernel'? Should it be capitalized or
> not? You use 'Kernel' but the rest of the document uses 'kernel', I
> think we should have a single spelling (at least inside a single
> document).

I always use Kernel when referring to The Linux Kernel, as I'm 
not talking about any other kernel, but about a particular one.
For me, "Kernel" is a shortcut for its full name (as "Linux"
would be another shortcut - but I prefer Kernel, because it leads
no doubts that I'm talking about only its core). IMO,
that is the proper way to refer to it, in English.

Yet, I saw others that don't capitalize it.

Regards,
Mauro

  reply	other threads:[~2017-11-27 21:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-24 21:44 [PATCH v2] doc: add maintainer book Tobin C. Harding
2017-11-25  7:56 ` Greg Kroah-Hartman
2017-11-25  8:22   ` Tobin C. Harding
2017-11-25  8:51     ` Greg Kroah-Hartman
2017-11-27 18:57 ` Mauro Carvalho Chehab
2017-11-27 20:53   ` Tobin C. Harding
2017-11-27 21:01     ` Mauro Carvalho Chehab [this message]
2017-11-27 22:38       ` Tobin C. Harding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171127190123.47a7cad5@vento.lan \
    --to=mchehab@s-opensource.com \
    --cc=corbet@lwn.net \
    --cc=dan.j.williams@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=me@tobin.cc \
    --cc=torvalds@linux-foundation.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.