From 72fdb2c35c188ad2d14da68befc54241f592467e Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Thu, 5 Jun 2014 17:25:25 +0300 Subject: [PATCH] rpm-ch: implement --commit-msg option Signed-off-by: Markus Lehtonen --- docs/manpages/gbp-rpm-ch.sgml | 10 ++++++++++ gbp/scripts/rpm_ch.py | 22 ++++++++++++++++++---- tests/component/rpm/test_rpm_ch.py | 11 +++++++++++ 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/docs/manpages/gbp-rpm-ch.sgml b/docs/manpages/gbp-rpm-ch.sgml index 37a4272..59adaa5 100644 --- a/docs/manpages/gbp-rpm-ch.sgml +++ b/docs/manpages/gbp-rpm-ch.sgml @@ -286,6 +286,16 @@ + MSG-FORMAT + + + + Format string for the commit message when committing changes + (when is given). + + + + diff --git a/gbp/scripts/rpm_ch.py b/gbp/scripts/rpm_ch.py index b509bd3..3caaac2 100755 --- a/gbp/scripts/rpm_ch.py +++ b/gbp/scripts/rpm_ch.py @@ -356,11 +356,22 @@ def update_changelog(changelog, entries, repo, spec, options): top_section.append_entry(entry) return (tag, commit_info['author'], commit_info['committer']) -def commit_changelog(repo, changelog, author, committer, edit): +def create_commit_message(spec, options): + """Generate commit message""" + fields = spec.version + fields['version'] = version=RpmPkgPolicy.compose_full_version(spec.version) + fields['vendor'] = options.vendor + try: + return options.commit_msg % fields + except KeyError as err: + raise GbpError("Unknown key %s in commit-msg string, " + "only %s are accepted" % (err, fields.keys())) + +def commit_changelog(repo, changelog, message, author, committer, edit): """Commit changelog and create a packaging/release tag""" repo.add_files(changelog.path) - repo.commit_staged("Update changelog", author_info=author, - committer_info=committer, edit=edit) + repo.commit_staged(message, author_info=author, committer_info=committer, + edit=edit) def parse_args(argv): @@ -446,6 +457,8 @@ def parse_args(argv): # Commit/tag group options commit_grp.add_option("-c", "--commit", action="store_true", help="commit changes") + commit_grp.add_config_file_option(option_name="commit-msg", + dest="commit_msg") commit_grp.add_option("--tag", action="store_true", help="commit the changes and create a packaging/release" "tag") @@ -498,7 +511,8 @@ def main(argv): if options.commit: edit = True if editor_cmd else False - commit_changelog(repo, ch_file, author, committer, edit) + msg = create_commit_message(spec, options) + commit_changelog(repo, ch_file, msg, author, committer, edit) if options.tag: if options.retag and repo.has_tag(tag): repo.delete_tag(tag) diff --git a/tests/component/rpm/test_rpm_ch.py b/tests/component/rpm/test_rpm_ch.py index b8c3bca..b69c517 100644 --- a/tests/component/rpm/test_rpm_ch.py +++ b/tests/component/rpm/test_rpm_ch.py @@ -287,6 +287,17 @@ class TestRpmCh(RpmRepoTestBase): eq_(repo.get_commit_info('HEAD')['files'], {'M': ['foo.txt', 'gbp-test.spec']}) + def test_option_commit_msg(self): + """Test the --commit-msg cmdline option""" + repo = self.init_test_repo('gbp-test2') + + eq_(mock_ch(['--commit', '--since=HEAD^', '--commit-msg=Foo']), 0) + eq_(repo.get_commit_info('HEAD')['subject'], 'Foo') + + # Unknown key in format string causes failure + eq_(mock_ch(['--commit', '--since=HEAD^', '--commit-msg=%(foo)s']), 1) + self._check_log(-1, "gbp:error: Unknown key 'foo' in commit-msg string") + def test_tagging(self): """Test commiting/tagging""" repo = self.init_test_repo('gbp-test-native') -- 2.7.4