[U-Boot] [RFC PATCH v2 0/1] Patch submission script

Simon Glass sjg at chromium.org
Fri Oct 21 00:39:24 CEST 2011


(sorry to change this so quickly, but in splitting out the files I introduced
a bug)

What is this?
=============

This tool is a python script which:
- Creates patch directly from your branch
- Cleans them up
- Inserts a cover letter and change lists
- Sends them out to selected people

It is intended to automate patch creation and make it a less
error-prone process. It is useful for U-Boot and Linux work so far,
since it uses the kernel's checkpatch.pl script.

It is configured almost entirely by tags it finds in your commits. So
for example if you put:

Series-to: fred.blogs at napier.co.nz

in one your commits, the series will be sent there (only one 'to' is
allowed at present).

How to use this tool
====================

This tool requires a certain way of working:

- Maintain a number of branches, one for each patch series you are
working on
- Add tags into the commits within each branch to indicate where the
series should be sent, cover letter, version, etc. Most of these are
normally in the top commit so it is easy to change them with 'git
commit --amend'
- Each branch tracks the upstream branch, so that this script can
automatically determine the number of commits in it
- Check out a branch, and run this script to create and send out your
patches

How to configure it
===================

Create a file ~/.config/patman directory like this:

>>>>

[alias]
me: Simon Glass <sjg at chromium.org>

u-boot: U-Boot Mailing List <u-boot at lists.denx.de>
mikef: Mike Frysinger <vapier at gentoo.org>
wolfgang: Wolfgang Denk <wd at denx.de>
albert: Albert ARIBAUD <albert.u.boot at aribaud.net>
<<<<

This contains useful aliases for people you want to send patches to
you. Note: This should probably use git's alias feature instead.

Find checkpatch.pl from a Linux kernel tree, and put it in
~/bin/checkpatch.pl

How to run it
=============

First do a dry run:

$ ./tools/scripts/patman/patman -n

If it can't detect the upstream branch, try telling it how many patches
there are in your series:

$ ./tools/scripts/patman/patman -n -c5

This will create patch files in your current directory and tell you who
it is thinking of sending them to. Take a look at the patch files.

How to add tags
===============

To make this script useful you must add tags like the following. Most
can only appear once. They must appear in the first column of a line.

 Series-to: email / alias
        Email address / alias to send patch series to

 Series-cc: email / alias, ...
        Email address / alias to Cc patch series to (you can add this
        multiple times)

 Series-version: n
        Sets the version number of this patch series

 Series-prefix: prefix
        Sets the subject prefix. Normally empty but it can be RFC for
        RFC patches, or RESEND if you are being ignored.

 Cover-letter:
 This is the patch set title
 blah blah
 more blah blah
 END
        Sets the cover letter contents for the series. The first line
        will become the subject of the cover letter

 Series-notes:
 blah blah
 blah blah
 more blah blah
 END
        Sets some notes for the patch series, which you don't want in
        the commit messages, but do want to send, The notes are joined
        together and put after the cover letter. Can appear multiple
        times.

 Signed-off-by: Their Name <email>
        A sign-off is added automatically to your patches (this is
        probably a bug). If you put this tag in your patches, it will
        override your default signoff.

 Tested-by: Their Name <email>
 Acked-by: Their Name <email>
        These indicate that someone has acked or tested your patch.
        When you get this reply on the mailing list, you can add this
        tag to the relevant commit and the script will include it when
        you send out the next version. If 'Tested-by:' is set to
        yourself, it will be removed. No one will believe you.

 Series-changes: n
 - Guinea pig moved into its cage
 - Other changes ending with a blank line
 <blank line>
        This can appear in any commit. It lists the changes for a
        particular version n of that commit. The change list is
        created based on this information. Each commit gets its own
        change list and also the whole thing is repeated in the cover
        letter.

        By adding your change lists into your commits it is easier to
        keep track of what happened. When you amend a commit, remember
        to update the log there and then, knowing that the script will
        do the rest.

Various other tags are silently removed, like these Chrome OS and
Gerrit tags:

BUG=...
TEST=...
Change-Id:
Review URL:
Reviewed-on:
Reviewed-by:

Exercise for the reader: Try adding some tags to one of your current
patch series and see how the patches turn out.

Other thoughts
==============

This script has been split into sensible files but still needs work.
Most of these are indicated by a TODO in the code.

It would be nice if this could handle the In-reply-to side of things.

The git Cc: tag should be respected.

The tests are incomplete. Use the -t flag to run them.

There might be a few other features not mentioned in this README. They
might be bugs.

Changes in v2:
- Fix up use of Color in series.py (avoid runtime error)

Simon Glass (1):
  Add patch submission script all in one commit

 tools/scripts/patman/.gitignore     |    1 +
 tools/scripts/patman/README         |  202 +++++++++++++++++
 tools/scripts/patman/checkpatch.py  |  154 +++++++++++++
 tools/scripts/patman/command.py     |   72 ++++++
 tools/scripts/patman/commit.py      |   77 +++++++
 tools/scripts/patman/gitutil.py     |  212 +++++++++++++++++
 tools/scripts/patman/patchstream.py |  426 +++++++++++++++++++++++++++++++++++
 tools/scripts/patman/patman         |    1 +
 tools/scripts/patman/patman.py      |  127 +++++++++++
 tools/scripts/patman/series.py      |  232 +++++++++++++++++++
 tools/scripts/patman/settings.py    |   50 ++++
 tools/scripts/patman/terminal.py    |   86 +++++++
 tools/scripts/patman/test.py        |  248 ++++++++++++++++++++
 13 files changed, 1888 insertions(+), 0 deletions(-)
 create mode 100644 tools/scripts/patman/.gitignore
 create mode 100644 tools/scripts/patman/README
 create mode 100644 tools/scripts/patman/checkpatch.py
 create mode 100644 tools/scripts/patman/command.py
 create mode 100644 tools/scripts/patman/commit.py
 create mode 100644 tools/scripts/patman/gitutil.py
 create mode 100644 tools/scripts/patman/patchstream.py
 create mode 120000 tools/scripts/patman/patman
 create mode 100755 tools/scripts/patman/patman.py
 create mode 100644 tools/scripts/patman/series.py
 create mode 100644 tools/scripts/patman/settings.py
 create mode 100644 tools/scripts/patman/terminal.py
 create mode 100644 tools/scripts/patman/test.py

-- 
1.7.3.1



More information about the U-Boot mailing list