[U-Boot] RFC - PatchTrack Specification

Graeme Russ graeme.russ at gmail.com
Tue Jul 24 02:37:05 CEST 2012


Hi All,

Here's a quick-and-dirty specification for a patch tracking tool...

PatchTrack is designed to help alleviate some of the load from custodians
manging a email based work flow accepting patches from a large community
of contributors

Functionality:
 - Monitor an electronic mailing list, extracting patches as they are
   posted to the list
 - Group patchsets that are posted using x/y style numbering. The patches
   within the set are grouped under the 0/y patch
 - Run arbitrarily defined stand-alone sanity checks on each patch. For
   example, the 'checkpatch' script can be run to check that each incoming
   patch obeys the style rules of the project
 - Associate each patch with a git repository. Association is determined
   by tags in the patch subject header
 - Maintain the revision history of each patch
 - Maintain community comments sent to the mailing list for each patch
 - Collect Ack'd, Nack'd, Tested, etc. community feedback (the feedback
   tags are configurable)
 - Maintain a 'patch stack' of unapplied patches for each configure
   repository. The patch stack is maintained as a 'first in, first served'
   list of patches
 - Test that each patch stack applies to the HEAD of the associated git
   repository
 - Re-test that the patch stack applies whenever the HEAD of the
   associated git repository changes


Interface:
The primary interface to PatchTrack is emails extracted from a configured
mailbox.

PatchTrack also provides a web-based interface which allows a user to
visualise the patch stack for each repository. For each configured
repository, the web interface will display associated patches in
chronologically ordered rows. Each row is a single patch. patch sets
are grouped together using the timestamp of the fist patch. The following
information is displayed in each row:
 - Patch name/subject
 - Author
 - Number of received Ack, Nack, Tested, etc. feedbacks

The colour of each row indicates the 'quality' of the patch:
 - Red indicates the patch does not apply cleanly. Red patches are not
   actually in the patch stack but are displayed for completeness
 - Orange indicates that the patch does apply but has failed one or more
   of the configured sanity checks
 - Yellow indicates that the patch applies and passed all configured sanity
   checks
 - Green indicates that the patch has been accepted by a maintainer. All
   green patches are placed at the top of the stack (i.e. they are always
   applied first) in order of acceptance (not submission order)
 - White indicates that the patch has been applied to the repository

Clicking on any row will expand the row (clicking again will collapse the
row). An expanded row displays the following information:
 - Ack'd, Nack'd, Tested, etc. tags
 - Sanity check results
 - Patch apply result
 - Comments
 - Patch body

The web interface will provide an authenticated login. When a maintainer of
a repository is logged in, they can:
 - Reject a patch, removing it from the patch stack entirely
 - Accept a patch. When a patch is accepted, PatchTrack will check that the
   patch applies cleanly to the HEAD of previously accepted patches
 - Apply the top 'x' accepted patches the git repository
 - Purge applied patches from PatchTrack


More information about the U-Boot mailing list