for entry in entries:
top_section.append_entry(entry)
-def commit_changelog(repo, changelog, author, committer, edit):
+def create_commit_message(spec, options):
+ """Generate commit message"""
+ fields = spec.version
+ fields['version'] = version=compose_version_str(spec.version)
+ fields['vendor'] = options.vendor
+ fields['pkg'] = spec.name
+ 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 to Git"""
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 build_parser(name):
# Commit 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")
return parser
def parse_args(argv):
if options.commit:
edit = True if editor_cmd else False
- commit_changelog(repo, ch_file, None, None, edit)
+ msg = create_commit_message(spec, options)
+ commit_changelog(repo, ch_file, msg, None, None, edit)
except (GbpError, GitRepositoryError, ChangelogError, NoSpecError) as err:
if len(err.__str__()):
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_option_editor_cmd(self):
"""Test the --editor-cmd and --spawn-editor cmdline options"""
repo = self.init_test_repo('gbp-test-native')