E-mail Interface to the U-Boot Patch Tracking System
Submitting Patches
How E-mail Processing Works
The U-Boot Patch Tracking System is just one out of several databases
within the GNATS setup on our server. To submit a *patch*
†,
you send an e-mail message to the corresponding
"
-patches@bugs.denx.de" mail address. To submit a patch for
U-Boot, please send it to "==u-boot-patches@bugs.denx.de=="
† Note: only "patches" are accepted at this mail address; any
message that does not look like a patch will be rejected.
The processing of the incoming patches is performed by the script
parsepatches.pl:
- Purpose:
- The task of the
parsepatches.pl script is to verify that an
e-mail message contains a patch and to bring it into a format that is
easily digestible by GNATS.
The script handles both patches that come "inline" in the message body
and such that are included as MIME attachments.
- Function:
- The task to bring he e-mail message into a standard form in
performed by running
git-mailinfo. This has several advantages:
- This is the most complicated part of the task, so it is nice that
we can re-use existing code.
- We automatically benefit from upstream improvements by just keeping
git updated.
- Most of the problems that have to be handled when parsing a patch can
then be tested much easier and independent from the remaining setup.
git-mailinfo splits the e-mail message into 3 parts:
- information (Subject, Author, Date, E-mail address)
- Message (all text that does not belong to the patch itself)
- Patch
Additionally, we also parse the header of the e-mail to extract some
information that is ignored by git-mailinfo. We extract the followong
mail headers:
- Message-Id
- References
- In-Reply-To
- Organization
Finally, the script parses the "Message" part for well-known
(Signed-off|Acked|Tested|Reviewed)-by pseudo-headers.
E-mail addresses found in such headers are added to the "Notify-List".
All this information then gets assembled into a GNATS Problem Report,
which looks as follows (copy & paste from real code):
From: $info{author} <$info{email}>
To: GNATS
Subject:
X-ParsePatches-Version: $VERSION
>Synopsis: $info{subject}
>Originator: $info{author} <$info{email}>
>Submitter-Id: patch-submission
>Organization: $info{organization}
>Notify-List: $notify
>Category: unassigned-patches
>Class: patch
>Priority: low
>Severity: non-critical
>Message-Id: $info{msgid}
>In-Reply-To: $info{in_reply_to}
>References: $info{references}
>Patch-Date: $info{date}
>Fix: N/A
>Description:
HEAD
;
insert_file($pr, "$tempdir/msg-clean");
print $pr ">Patch:\n";
insert_file($pr, "$tempdir/patch");
Following up with Patch Submissions
-- WolfgangDenk - 01 Aug 2008