From 183b445c0f8eb84568df6e07cf34dcc3e1935cec Mon Sep 17 00:00:00 2001 From: Clark Boylan Date: Tue, 20 Mar 2018 16:12:20 -0700 Subject: [PATCH] Better Sem-Ver header handling This makes Sem-Ver header handling more reliable by ignoring any potential user configured git log output format. Instead PBR supplies its own format string that will output the commit message bodies in their entirety without wrapping and other whitespace formatting done for humans. Change-Id: I957a8c182585119534b4e02c34e7140a3e07d1d6 Related-Bug: 1738685 Fixes-Bug: 1704625 --- pbr/packaging.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pbr/packaging.py b/pbr/packaging.py index 38b4982f..1ff28da9 100644 --- a/pbr/packaging.py +++ b/pbr/packaging.py @@ -622,10 +622,14 @@ def _get_increment_kwargs(git_dir, tag): version_spec = tag + "..HEAD" else: version_spec = "HEAD" - changelog = git._run_git_command(['log', version_spec], git_dir) - header_len = len(' sem-ver:') + # Get the raw body of the commit messages so that we don't have to + # parse out any formatting whitespace and to avoid user settings on + # git log output affecting out ability to have working sem ver headers. + changelog = git._run_git_command(['log', '--pretty=%B', version_spec], + git_dir) + header_len = len('sem-ver:') commands = [line[header_len:].strip() for line in changelog.split('\n') - if line.lower().startswith(' sem-ver:')] + if line.lower().startswith('sem-ver:')] symbols = set() for command in commands: symbols.update([symbol.strip() for symbol in command.split(',')])