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):
# 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")
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)
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')