diff --git a/announce.sh b/announce.sh index 5de1417..f10bd53 100755 --- a/announce.sh +++ b/announce.sh @@ -107,6 +107,14 @@ function get_tag_meta { echo "$TAG_META" | grep "^meta:$fieldname:" | cut -f2 -d' ' } +# How far back should we look for release info? If there is no +# explicit metadata (signaled by passing "-"), use whatever previous +# version number we were able to detect. +DIFF_START=$(get_tag_meta diff-start) +if [[ "$DIFF_START" == "-" ]]; then + DIFF_START="$PREVIOUS_VERSION" +fi + # The series name is part of the commit message left by release.sh. SERIES=$(get_tag_meta series) @@ -148,7 +156,7 @@ if [[ "$INCLUDE_PYPI_LINK" == "yes" ]]; then include_pypi_link="--include-pypi-link" fi -echo "$PREVIOUS_VERSION to $VERSION on $SERIES" +echo "$DIFF_START to $VERSION on $SERIES" relnotes_file="$RELNOTESDIR/$SHORTNAME-$VERSION" @@ -159,7 +167,7 @@ release-notes \ --series $SERIES \ $stable \ $first_release \ - . "$PREVIOUS_VERSION" "$VERSION" \ + . "$DIFF_START" "$VERSION" \ $include_pypi_link \ | tee $relnotes_file diff --git a/releasetools/cmds/propose_final_releases.py b/releasetools/cmds/propose_final_releases.py index 7cdc068..b31e1b0 100644 --- a/releasetools/cmds/propose_final_releases.py +++ b/releasetools/cmds/propose_final_releases.py @@ -28,11 +28,19 @@ PROJECT_TEMPLATE = '''\ VERSION_TEMPLATE = '''\ - version: {version} + diff-start: {diff_start} projects: {projects} ''' +def get_prior_branch_point(version): + "Assuming we always branch on the rc1 tag..." + parts = version.split('.') + prior = int(parts[0]) - 1 + return '{}.0.0.0rc1'.format(prior) + + def main(): parser = argparse.ArgumentParser() parser.add_argument( @@ -88,8 +96,10 @@ def main(): print('# not a release candidate') continue new_version = latest_release['version'].split('.0rc')[0] + diff_start = get_prior_branch_point(new_version) deliverable_data['releases'].append({ 'version': new_version, + 'diff_start': diff_start, 'projects': latest_release['projects'], }) print('new version for {}: {}'.format(os.path.basename(filename), @@ -101,6 +111,7 @@ def main(): for p in latest_release['projects']) new_block = VERSION_TEMPLATE.format( version=new_version, + diff_start=diff_start, projects=projects, ).rstrip() + '\n' with open(filename, 'a') as f: