diff --git a/gitdch b/gitdch index dbe3b52..9e7d26e 100755 --- a/gitdch +++ b/gitdch @@ -227,14 +227,6 @@ if not options.quiet or not options.logfile: repo = git.Repo(options.git_path) -log.info('Generate changelog from git commits') - -versions = [] -tag_commits = dict( - (tag.commit.binsha, tag) - for tag in repo.tags -) - def clean_deb_version(version_name): """ Clean debian version name """ @@ -246,6 +238,21 @@ def clean_deb_version(version_name): return version_name +if not options.version: + log.info('Detect current version from git tags & commits') + options.version = clean_deb_version( + repo.git.describe('--always', '--tags') + ) + log.info('Currrent version detected: %s', options.version) +log.info('Generate changelog from git commits') + +versions = [] +tag_commits = dict( + (tag.commit.binsha, tag) + for tag in repo.tags +) + + def add_version(): """ Add version info """ global messages # pylint: disable=global-statement @@ -264,12 +271,7 @@ def add_version(): tag = None version_commit = None -version = ( - options.version or - clean_deb_version( - repo.git.describe('--always', '--tags') - ) -) +version = options.version messages = [] for commit in repo.iter_commits(rev=options.revision): log.debug('Commit %s (%s)', commit, commit.summary) @@ -350,10 +352,15 @@ else: if options.release_notes: log.info('Generate Markdown release notes') release_notes_lines = ['# Changelog:\n\n'] - release_notes_lines.extend([ - '* {0}\n'.format(message) - for message in versions[0]['messages'] - ]) + if versions: + release_notes_lines.extend([ + '* {0}\n'.format(message) + for message in versions[0]['messages'] + ]) + else: + release_notes_lines.extend([ + '* Release version {0}\n'.format(options.version) + ]) log.info( 'Write generated Markdown release notes in file %s', options.release_notes)