From 1c39b15ef604db13c37e37080ba6294c163b0c5d Mon Sep 17 00:00:00 2001 From: Deen Sethanandha Date: Fri, 24 Feb 2012 16:06:05 -0800 Subject: [PATCH] Add scripts to create release notes from git log These script generates a list of commits from git log between and . The output of this script is in asciidoc format containting list of commits subject and body. Bug: issue 1272 Change-Id: I32b2ee055e81c5663128aafefd5f46c2e17e58c8 --- tools/gitlog2asciidoc.py | 83 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 tools/gitlog2asciidoc.py diff --git a/tools/gitlog2asciidoc.py b/tools/gitlog2asciidoc.py new file mode 100755 index 0000000000..6f063b29a4 --- /dev/null +++ b/tools/gitlog2asciidoc.py @@ -0,0 +1,83 @@ +#!/usr/bin/python +import sys +import re +import subprocess + +""" +This script generates a release note from the output of git log +between the specified tags. + +Arguments: +since -- tag name +until -- tag name + +Example Input: + + * + + + + + Bug: issue 123 + Change-Id: + Signed-off-by: + +Expected Output: + + * issue 123 + + + +""" + +if len(sys.argv) != 3: + sys.exit('Usage: ' + sys.argv[0] + ' ') +since_until = sys.argv[1] + '..' + sys.argv[2] +proc = subprocess.Popen(['git', 'log', '--reverse', '--no-merges', + since_until, "--format=* %s%n+%n%b"], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT,) + +stdout_value = proc.communicate()[0] + +subject = "" +message = [] + +for line in stdout_value.splitlines(True): + + if re.match('\* ', line) >= 0: + # Write change log for a commit + if subject != "": + # Write subject + sys.stdout.write(subject) + + # Write message lines + if message != []: + # Clear + from last line in commit message + message[-1] = '\n' + for m in message: + sys.stdout.write(m) + + # Start new commit block + message = [] + subject = line + continue + + # Move issue number to subject line + elif re.match('Bug: ', line) is not None: + line = line.replace('Bug: ', '').replace('\n',' ') + subject = subject[:2] + line + subject[2:] + # Move issue number to subject line + elif re.match('Issue: ', line) is not None: + line = line.replace('Issue: ', 'issue ').replace('\n',' ') + subject = subject[:2] + line + subject[2:] + + # Remove commit footers + elif re.match(r'((\w+-)+\w+:)', line) is not None: + continue + + else: + if line == '\n': + # Don't add extra blank line if last one is already blank + if message[-1] != '+\n': + message.append('+\n') + else: + message.append(line)