
HI Sean,
On Sun, 3 May 2020 at 15:55, Sean Anderson seanga2@gmail.com wrote:
By default patman generates a combined changelog for the cover letter. This may not always be desireable.
desirable
Many patches may have the same changes. These can be coalesced with "Series-process-log: uniq", but this is imperfect. Similar changes like "Move foo to patch 7" will not be merged with the similar "Move foo to this patch from patch 6".
Changes may not make sense outside of the patch they are written for. For example, a change line of "Add check for bar" does not make sense outside of the context in which bar might be checked for. Some changes like "New" or "Lint" may be repeated many times throughout different change logs, but carry no useful information in a summary.
Lastly, I like to summarize the broad strokes of the changes I have made in the cover letter, while documenting all the details in the appropriate patches. I think this make it easier to get a good feel for what has
makes
changed, without making it difficult to wade through every change in the whole series.
This patch adds two new tags to add changelog entries which only appear in the cover letter, or only appear in the commit. Changes documented with "Commit-changes" will only appear in the commit, and will not appear in the cover letter. Changes documented with "Cover-changes" will not appear in any commit, and will only appear in the cover letter.
Signed-off-by: Sean Anderson seanga2@gmail.com
(no changes since v2)
Changes in v2:
- Add documentation for new tags
- Switch to using commit tags for changelog control, instead of command-line options
tools/patman/README | 17 +++++++++ tools/patman/patchstream.py | 73 ++++++++++++++++++++++--------------- tools/patman/patman.py | 2 +- tools/patman/series.py | 13 ++++++- 4 files changed, 73 insertions(+), 32 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
(with fixes added)
Also please can you rebase on mainline as there is a minor conflict in series.py
diff --git a/tools/patman/README b/tools/patman/README index d1d9891c4c..5a67a49e88 100644 --- a/tools/patman/README +++ b/tools/patman/README @@ -247,6 +247,23 @@ Series-changes: n to update the log there and then, knowing that the script will do the rest.
+Commit-changes: n +- This line will not appear in the cover-letter changelog +<blank line>
This tag is like Series-changes, except changes in this changelog will
only appear in the changelog of the commit this tag is in. This is
useful when you want to add notes which may not make sense in the cover
letter. For example, you can have short changes such as "New" or
"Lint".
+Cover-changes: n +- This line will only appear in the cover letter +<blank line>
This tag is like Series-changes, except changes in this changelog will
only appear in the cover-letter changelog. This is useful to summarize
changes made with Commit-changes, or to add additional context to
changes.
Patch-cc: Their Name <email> This copies a single patch to another email address. Note that the Cc: used by git send-email is ignored by patman, but will be diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py index df3eb7483b..f29ad87e70 100644 --- a/tools/patman/patchstream.py +++ b/tools/patman/patchstream.py @@ -24,11 +24,8 @@ re_allowed_after_test = re.compile('^Signed-off-by:') # Signoffs re_signoff = re.compile('^Signed-off-by: *(.*)')
-# The start of the cover letter -re_cover = re.compile('^Cover-letter:')
-# A cover letter Cc -re_cover_cc = re.compile('^Cover-letter-cc: *(.*)') +# Cover letter tag +re_cover = re.compile('^Cover-([a-z-]*): *(.*)')
# Patch series tag re_series_tag = re.compile('^Series-([a-z-]*): *(.*)') @@ -65,7 +62,7 @@ class PatchStream: def __init__(self, series, name=None, is_log=False): self.skip_blank = False # True to skip a single blank line self.found_test = False # Found a TEST= line
self.lines_after_test = 0 # MNumber of lines found after TEST=
self.lines_after_test = 0 # Number of lines found after TEST= self.warn = [] # List of warnings we have collected self.linenum = 1 # Output line number we are up to self.in_section = None # Name of start...END section we are in
@@ -73,7 +70,8 @@ class PatchStream: self.section = [] # The current section...END section self.series = series # Info about the patch series self.is_log = is_log # True if indent like git log
self.in_change = 0 # Non-zero if we are in a change list
self.in_change = None # Name of the change list we are in
self.change_version = 0 # Non-zero if we are in a change list self.blank_count = 0 # Number of blank lines stored up self.state = STATE_MSG_HEADER # What state are we in? self.signoff = [] # Contents of signoff line
@@ -124,6 +122,14 @@ class PatchStream: self.skip_blank = True self.section = []
- def ParseVersion(self, value, line):
"""Parse a version from a *-changes tag"""
Args:
Returns:
try:
return int(value)
except ValueError as str:
raise ValueError("%s: Cannot decode version info '%s'" %
(self.commit.hash, line))
[..]
Regards, Simon