diff options
-rw-r--r-- | docs/manpages/gbp-rpm-ch.sgml | 10 | ||||
-rwxr-xr-x | gbp/scripts/rpm_ch.py | 22 | ||||
-rw-r--r-- | 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 37a42726..59adaa5a 100644 --- a/docs/manpages/gbp-rpm-ch.sgml +++ b/docs/manpages/gbp-rpm-ch.sgml @@ -286,6 +286,16 @@ </listitem> </varlistentry> <varlistentry> + <term><option>--commit-msg=</option><replaceable>MSG-FORMAT</replaceable> + </term> + <listitem> + <para> + Format string for the commit message when committing changes + (when <option>--commit</option> is given). + </para> + </listitem> + </varlistentry> + <varlistentry> <term><option>--tag</option> </term> <listitem> diff --git a/gbp/scripts/rpm_ch.py b/gbp/scripts/rpm_ch.py index b509bd39..3caaac2e 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 b8c3bcaf..b69c517e 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') |