Hi. Motivation example: $ git commit-mklog -a -b 'PR other/106370,PR other/12345'
Preserving a space from git gcc-mklog hook to contrib/mklog.py seems pretty challenging. Thus I recommend preserving extra mklog args via env where it's encoded in JSON format. Thoughts? Thanks, Martin contrib/ChangeLog: * git-commit-mklog.py: Do not parse -b argument. Pass mklog_args as json environment variable. * mklog.py: Parse GCC_MKLOG_ARGS and append it to sys.argv. * prepare-commit-msg: Do not append GCC_MKLOG_ARGS to args. --- contrib/git-commit-mklog.py | 9 +++++---- contrib/mklog.py | 5 +++++ contrib/prepare-commit-msg | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/contrib/git-commit-mklog.py b/contrib/git-commit-mklog.py index eda3fc4a892..c7e90c8262f 100755 --- a/contrib/git-commit-mklog.py +++ b/contrib/git-commit-mklog.py @@ -24,6 +24,7 @@ # to mklog.py script. import argparse +import json import os import subprocess @@ -32,8 +33,7 @@ if __name__ == '__main__': myenv = os.environ.copy() parser = argparse.ArgumentParser(description='git-commit-mklog wrapped') - parser.add_argument('-b', '--pr-numbers', action='store', - type=lambda arg: arg.split(','), nargs='?', + parser.add_argument('-b', '--pr-numbers', help='Add the specified PRs (comma separated)') parser.add_argument('-p', '--fill-up-bug-titles', action='store_true', help='Download title of mentioned PRs') @@ -44,12 +44,13 @@ if __name__ == '__main__': myenv['GCC_FORCE_MKLOG'] = '1' mklog_args = [] if args.pr_numbers: - mklog_args.append(f'-b {",".join(args.pr_numbers)}') + mklog_args += ['-b', args.pr_numbers] if args.fill_up_bug_titles: mklog_args.append('-p') if mklog_args: - myenv['GCC_MKLOG_ARGS'] = ' '.join(mklog_args) + # wrap mklog arguments with JSON + myenv['GCC_MKLOG_ARGS'] = json.dumps(mklog_args) if args.co: for author in args.co.split(','): diff --git a/contrib/mklog.py b/contrib/mklog.py index cd5ef0bcc74..fe530ebf773 100755 --- a/contrib/mklog.py +++ b/contrib/mklog.py @@ -28,6 +28,7 @@ import argparse import datetime +import json import os import re import subprocess @@ -336,6 +337,10 @@ def skip_line_in_changelog(line): if __name__ == '__main__': + extra_args = os.getenv('GCC_MKLOG_ARGS') + if extra_args: + sys.argv += json.loads(extra_args) + parser = argparse.ArgumentParser(description=help_message) parser.add_argument('input', nargs='?', help='Patch file (or missing, read standard input)') diff --git a/contrib/prepare-commit-msg b/contrib/prepare-commit-msg index 5da878458cd..969847df6f4 100755 --- a/contrib/prepare-commit-msg +++ b/contrib/prepare-commit-msg @@ -78,4 +78,4 @@ else tee="cat" fi -git $cmd | $tee | git gcc-mklog $GCC_MKLOG_ARGS -c "$COMMIT_MSG_FILE" +git $cmd | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE" -- 2.37.1