#15 add git_release macro
Merged 5 years ago by clime. Opened 5 years ago by clime.

add git_release tests
clime • 5 years ago  
add bumped_release test
clime • 5 years ago  
add git_release
clime • 5 years ago  
file modified
+82 -16
@@ -21,6 +21,29 @@ 

      fi

  }

  

+ function git_version_appendices {

+     if [ -n "$1" ]; then

+         commit_count="$(git rev-list "$1"..HEAD | wc -l)"

+     else

+         commit_count="$(git rev-list HEAD 2> /dev/null | wc -l  || printf 0)"

+     fi

+ 

+     if [ "$commit_count" -eq 0 ]; then

+         commit_count_appendix=

+     else

+         commit_count_appendix=".git.$commit_count.$(git rev-parse --short HEAD)"

+     fi

+ 

+     latest_ctime="$(git_latest_ctime)"

+     if [ "$latest_ctime" -eq 0 ]; then

+         wtree_appendix=

+     else

+         wtree_appendix=".wtree.$(encode_decimal "$latest_ctime")"

+     fi

+ 

+     echo -n "${commit_count_appendix}${wtree_appendix}"

+ }

+ 

  function latest_merged_tag {

      if [ "$legacy_git" ]; then

          git for-each-ref --sort=-taggerdate refs/tags | cut -f2 |
@@ -246,30 +269,65 @@ 

          return

      fi

  

-     if [ -n "$latest_tag" ]; then

-         commit_count="$(git rev-list "$latest_tag"..HEAD | wc -l)"

-     else

-         commit_count="$(git rev-list HEAD 2> /dev/null | wc -l  || printf 0)"

+     if [ -z "$follow" ]; then

+         follow="$(echo "$latest_tag_version" | sed -E -n "s/^$lead\.([^.]*)$/\1/p")"

      fi

  

-     if [ "$commit_count" -eq 0 ]; then

-         commit_count_appendix=

-     else

-         commit_count_appendix=".git.$commit_count.$(git rev-parse --short HEAD)"

+     output "${lead}.${follow:-0}$(git_version_appendices "$latest_tag")"

+ }

+ 

+ function git_bumped_release {

+     declare pivot= latest_tag_release= "$@"

+ 

+     if [ -n "$pivot" ]; then

+         echo -n "$pivot"

+         return

      fi

  

-     latest_ctime="$(git_latest_ctime)"

-     if [ "$latest_ctime" -eq 0 ]; then

-         wtree_appendix=

-     else

-         wtree_appendix=".wtree.$(encode_decimal "$latest_ctime")"

+     pivot="${latest_tag_release}"

+ 

+     if echo "$pivot" | grep -q '[^0-9]'; then

+         log_error "$pivot is not a number. Please, bump release manually."

+         return 1

      fi

  

-     if [ -z "$follow" ]; then

-         follow="$(echo "$latest_tag_version" | sed -E -n "s/^$lead\.([^.]*)$/\1/p")"

+     bumped_pivot=$(( $pivot + 1 ))

+     echo -n "$bumped_pivot"

+ }

+ 

+ function git_release {

+     declare name="$(cached git_name)" pivot= "$@"

+ 

+     if [ -z "$name" ]; then

+         log_error "name cannot be empty."

+         return 1

      fi

  

-     output "${lead}.${follow:-0}${commit_count_appendix}${wtree_appendix}"

+     if echo "$pivot" | grep -q '-'; then

+         log_error "pivot cannot contain dashes."

+         return 1

+     fi

+ 

+     latest_tag="$(latest_merged_tag "$name")"

+     latest_tag_release="$(echo $latest_tag | sed -E -n "s/^$name-[^-]+-([^-]+)$/\1/p")"

+ 

+     if [ -n "$RELEASE_BUMP" ]; then

+         pivot="$(git_bumped_release pivot="$pivot" latest_tag_release="$latest_tag_release")"

+ 

+         retcode=$?

+         if [ $retcode -ne 0 ]; then

+             return $retcode

+         fi

+ 

+         output "$pivot"

+         return

+     fi

+ 

+     if [ -z "$pivot" ]; then

+         pivot="$latest_tag_release"

+     fi

+ 

+     output "${pivot:-0}$(git_version_appendices "$latest_tag")"

  }

  

  function git_vcs {
@@ -414,6 +472,10 @@ 

      git_version "$@"

  }

  

+ function git_dir_release {

+     git_release "$@"

+ }

+ 

  function git_dir_vcs {

      git_vcs subtree="$(git -C "$(dirname "$INPUT_PATH")" rev-parse --show-prefix)" "$@"

  }
@@ -444,6 +506,10 @@ 

      git_version "$@"

  }

  

+ function git_cwd_release {

+     git_release "$@"

+ }

+ 

  function git_cwd_vcs {

      git_vcs subtree="$(git -C "$(pwd)" rev-parse --show-prefix)" "$@"

  }

file modified
+30
@@ -20,6 +20,16 @@ 

  git_version name= # invalid

  git_version name="$(git_name)"

  

+ git_release

+ git_release name=foo

+ git_release pivot=1

+ git_release name=foo pivot=1

+ git_release pivot=x

+ git_release pivot=2.0

+ git_release pivot=1-1 # invalid

+ git_release name= # invalid

+ git_release name="$(git_name)"

+ 

  git_vcs

  git_vcs subtree=foo

  
@@ -66,6 +76,16 @@ 

  git_dir_version name= # invalid

  git_dir_version name="$(git_name)"

  

+ git_dir_release

+ git_dir_release name=foo

+ git_dir_release pivot=1

+ git_dir_release name=foo pivot=1

+ git_dir_release pivot=x

+ git_dir_release pivot=2.0

+ git_dir_release pivot=1-1 # invalid

+ git_dir_release name= # invalid

+ git_dir_release name="$(git_name)"

+ 

  git_dir_vcs

  git_dir_vcs subtree=foo

  
@@ -112,6 +132,16 @@ 

  git_cwd_version name= # invalid

  git_cwd_version name="$(git_cwd_name)"

  

+ git_cwd_release

+ git_cwd_release name=foo

+ git_cwd_release pivot=1

+ git_cwd_release name=foo pivot=1

+ git_cwd_release pivot=x

+ git_cwd_release pivot=2.0

+ git_cwd_release pivot=1-1 # invalid

+ git_cwd_release name= # invalid

+ git_cwd_release name="$(git_name)"

+ 

  git_cwd_vcs

  git_cwd_vcs subtree=foo

  

@@ -0,0 +1,8 @@ 

+ git_bumped_release

+ git_bumped_release pivot=1

+ git_bumped_release pivot=x

+ git_bumped_release pivot=1.0

+ git_bumped_release latest_tag_release=2

+ git_bumped_release pivot=4 latest_tag_release=2

+ git_bumped_release latest_tag_release=1.2 # invalid

+ git_bumped_release latest_tag_release=1.x # invalid

@@ -0,0 +1,20 @@ 

+ > git_bumped_release

+ ---

+ > git_bumped_release pivot=1

+ ---

+ > git_bumped_release pivot=x

+ ---

+ > git_bumped_release pivot=1.0

+ ---

+ > git_bumped_release latest_tag_release=2

+ ---

+ > git_bumped_release pivot=4 latest_tag_release=2

+ ---

+ > git_bumped_release latest_tag_release=1.2 # invalid

+ ERROR: git_bumped_release: 1.2 is not a number. Please, bump release manually.

+ git_bumped_release latest_tag_release=1.2 # invalid failed with value 1.

+ ---

+ > git_bumped_release latest_tag_release=1.x # invalid

+ ERROR: git_bumped_release: 1.x is not a number. Please, bump release manually.

+ git_bumped_release latest_tag_release=1.x # invalid failed with value 1.

+ ---

@@ -0,0 +1,8 @@ 

+ git_bumped_release: 1

+ git_bumped_release pivot=1: 1

+ git_bumped_release pivot=x: x

+ git_bumped_release pivot=1.0: 1.0

+ git_bumped_release latest_tag_release=2: 3

+ git_bumped_release pivot=4 latest_tag_release=2: 4

+ git_bumped_release latest_tag_release=1.2 # invalid: 

+ git_bumped_release latest_tag_release=1.x # invalid: 

@@ -0,0 +1,17 @@ 

+ #!/bin/bash

+ 

+ . ../lib.sh

+ 

+ repo=`mktemp -d`

+ outdir=`mktemp -d`

+ output=`mktemp`

+ 

+ prepare_input input $repo/input

+ 

+ touch output && cp output $output

+ 

+ generic_test preproc_opts="-C $repo" outdir=$outdir input=$repo/input expected_output=$output expected_log=log copy_only=$1

+ 

+ rm -rf $repo

+ rm -rf $outdir

+ rm $output

@@ -46,6 +46,28 @@ 

  ---

  > git_version name="$(git_name)"

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ---

  > git_vcs

  ---

  > git_vcs subtree=foo
@@ -128,6 +150,28 @@ 

  ---

  > git_dir_version name="$(git_name)"

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ---

  > git_dir_vcs

  ---

  > git_dir_vcs subtree=foo
@@ -210,6 +254,28 @@ 

  ---

  > git_cwd_version name="$(git_cwd_name)"

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ---

  > git_cwd_vcs

  ---

  > git_cwd_vcs subtree=foo

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 0.0.git.3.xxxxxxx

  

+ git_release: 0.git.3.xxxxxxx

+ git_release name=foo: 0.git.3.xxxxxxx

+ git_release pivot=1: 1.git.3.xxxxxxx

+ git_release name=foo pivot=1: 1.git.3.xxxxxxx

+ git_release pivot=x: x.git.3.xxxxxxx

+ git_release pivot=2.0: 2.0.git.3.xxxxxxx

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 0.git.3.xxxxxxx

+ 

  git_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -76,6 +86,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 0.0.git.3.xxxxxxx

  

+ git_dir_release: 0.git.3.xxxxxxx

+ git_dir_release name=foo: 0.git.3.xxxxxxx

+ git_dir_release pivot=1: 1.git.3.xxxxxxx

+ git_dir_release name=foo pivot=1: 1.git.3.xxxxxxx

+ git_dir_release pivot=x: x.git.3.xxxxxxx

+ git_dir_release pivot=2.0: 2.0.git.3.xxxxxxx

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 0.git.3.xxxxxxx

+ 

  git_dir_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_dir_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -132,6 +152,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 0.0.git.3.xxxxxxx

  

+ git_cwd_release: 0.git.3.xxxxxxx

+ git_cwd_release name=foo: 0.git.3.xxxxxxx

+ git_cwd_release pivot=1: 1.git.3.xxxxxxx

+ git_cwd_release name=foo pivot=1: 1.git.3.xxxxxxx

+ git_cwd_release pivot=x: x.git.3.xxxxxxx

+ git_cwd_release pivot=2.0: 2.0.git.3.xxxxxxx

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 0.git.3.xxxxxxx

+ 

  git_cwd_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_cwd_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  

@@ -46,6 +46,28 @@ 

  ---

  > git_version name="$(git_name)"

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ---

  > git_vcs

  ---

  > git_vcs subtree=foo
@@ -128,6 +150,28 @@ 

  ---

  > git_dir_version name="$(git_name)"

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ---

  > git_dir_vcs

  ---

  > git_dir_vcs subtree=foo
@@ -210,6 +254,28 @@ 

  ---

  > git_cwd_version name="$(git_cwd_name)"

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ---

  > git_cwd_vcs

  ---

  > git_cwd_vcs subtree=foo

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 0.0.git.1.xxxxxxx.wtree.xxxxxx

  

+ git_release: 0.git.1.xxxxxxx.wtree.xxxxxx

+ git_release name=foo: 0.git.1.xxxxxxx.wtree.xxxxxx

+ git_release pivot=1: 1.git.1.xxxxxxx.wtree.xxxxxx

+ git_release name=foo pivot=1: 1.git.1.xxxxxxx.wtree.xxxxxx

+ git_release pivot=x: x.git.1.xxxxxxx.wtree.xxxxxx

+ git_release pivot=2.0: 2.0.git.1.xxxxxxx.wtree.xxxxxx

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 0.git.1.xxxxxxx.wtree.xxxxxx

+ 

  git_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -76,6 +86,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 0.0.git.1.xxxxxxx.wtree.xxxxxx

  

+ git_dir_release: 0.git.1.xxxxxxx.wtree.xxxxxx

+ git_dir_release name=foo: 0.git.1.xxxxxxx.wtree.xxxxxx

+ git_dir_release pivot=1: 1.git.1.xxxxxxx.wtree.xxxxxx

+ git_dir_release name=foo pivot=1: 1.git.1.xxxxxxx.wtree.xxxxxx

+ git_dir_release pivot=x: x.git.1.xxxxxxx.wtree.xxxxxx

+ git_dir_release pivot=2.0: 2.0.git.1.xxxxxxx.wtree.xxxxxx

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 0.git.1.xxxxxxx.wtree.xxxxxx

+ 

  git_dir_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_dir_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -132,6 +152,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 0.0.git.1.xxxxxxx.wtree.xxxxxx

  

+ git_cwd_release: 0.git.1.xxxxxxx.wtree.xxxxxx

+ git_cwd_release name=foo: 0.git.1.xxxxxxx.wtree.xxxxxx

+ git_cwd_release pivot=1: 1.git.1.xxxxxxx.wtree.xxxxxx

+ git_cwd_release name=foo pivot=1: 1.git.1.xxxxxxx.wtree.xxxxxx

+ git_cwd_release pivot=x: x.git.1.xxxxxxx.wtree.xxxxxx

+ git_cwd_release pivot=2.0: 2.0.git.1.xxxxxxx.wtree.xxxxxx

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 0.git.1.xxxxxxx.wtree.xxxxxx

+ 

  git_cwd_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_cwd_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  

@@ -57,6 +57,31 @@ 

  ERROR: git_version: name cannot be empty.

  git_version name="$(git_name)" failed with value 1.

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ERROR: git_name: Could not get remote URL.

+ ERROR: git_release: name cannot be empty.

+ git_release name="$(git_name)" failed with value 1.

+ ---

  > git_vcs

  ERROR: git_vcs: Start by setting origin URL.

  git_vcs failed with value 1.
@@ -154,6 +179,31 @@ 

  ERROR: git_dir_version: name cannot be empty.

  git_dir_version name="$(git_name)" failed with value 1.

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ERROR: git_name: Could not get remote URL.

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name="$(git_name)" failed with value 1.

+ ---

  > git_dir_vcs

  ERROR: git_dir_vcs: Start by setting origin URL.

  git_dir_vcs failed with value 1.
@@ -251,6 +301,31 @@ 

  ERROR: git_cwd_version: name cannot be empty.

  git_cwd_version name="$(git_cwd_name)" failed with value 1.

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ERROR: git_name: Could not get remote URL.

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name="$(git_name)" failed with value 1.

+ ---

  > git_cwd_vcs

  ERROR: git_cwd_vcs: Start by setting origin URL.

  git_cwd_vcs failed with value 1.

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 

  

+ git_release: 0.wtree.xxxxxx

+ git_release name=foo: 0.wtree.xxxxxx

+ git_release pivot=1: 1.wtree.xxxxxx

+ git_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_release pivot=x: x.wtree.xxxxxx

+ git_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 

+ 

  git_vcs: 

  git_vcs subtree=foo: 

  
@@ -76,6 +86,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 

  

+ git_dir_release: 0.wtree.xxxxxx

+ git_dir_release name=foo: 0.wtree.xxxxxx

+ git_dir_release pivot=1: 1.wtree.xxxxxx

+ git_dir_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_dir_release pivot=x: x.wtree.xxxxxx

+ git_dir_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 

+ 

  git_dir_vcs: 

  git_dir_vcs subtree=foo: 

  
@@ -132,6 +152,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 

  

+ git_cwd_release: 0.wtree.xxxxxx

+ git_cwd_release name=foo: 0.wtree.xxxxxx

+ git_cwd_release pivot=1: 1.wtree.xxxxxx

+ git_cwd_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_cwd_release pivot=x: x.wtree.xxxxxx

+ git_cwd_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 

+ 

  git_cwd_vcs: 

  git_cwd_vcs subtree=foo: 

  

@@ -46,6 +46,28 @@ 

  ---

  > git_version name="$(git_name)"

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ---

  > git_vcs

  ---

  > git_vcs subtree=foo
@@ -128,6 +150,28 @@ 

  ---

  > git_dir_version name="$(git_name)"

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ---

  > git_dir_vcs

  ---

  > git_dir_vcs subtree=foo
@@ -210,6 +254,28 @@ 

  ---

  > git_cwd_version name="$(git_cwd_name)"

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ---

  > git_cwd_vcs

  ---

  > git_cwd_vcs subtree=foo

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 0.0.wtree.xxxxxx

  

+ git_release: 0.wtree.xxxxxx

+ git_release name=foo: 0.wtree.xxxxxx

+ git_release pivot=1: 1.wtree.xxxxxx

+ git_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_release pivot=x: x.wtree.xxxxxx

+ git_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 0.wtree.xxxxxx

+ 

  git_vcs: git+https://pagure.io/clime/test.git#HEAD:

  git_vcs subtree=foo: git+https://pagure.io/clime/test.git#HEAD:foo

  
@@ -76,6 +86,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 0.0.wtree.xxxxxx

  

+ git_dir_release: 0.wtree.xxxxxx

+ git_dir_release name=foo: 0.wtree.xxxxxx

+ git_dir_release pivot=1: 1.wtree.xxxxxx

+ git_dir_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_dir_release pivot=x: x.wtree.xxxxxx

+ git_dir_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 0.wtree.xxxxxx

+ 

  git_dir_vcs: git+https://pagure.io/clime/test.git#HEAD:

  git_dir_vcs subtree=foo: git+https://pagure.io/clime/test.git#HEAD:foo

  
@@ -132,6 +152,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 0.0.wtree.xxxxxx

  

+ git_cwd_release: 0.wtree.xxxxxx

+ git_cwd_release name=foo: 0.wtree.xxxxxx

+ git_cwd_release pivot=1: 1.wtree.xxxxxx

+ git_cwd_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_cwd_release pivot=x: x.wtree.xxxxxx

+ git_cwd_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 0.wtree.xxxxxx

+ 

  git_cwd_vcs: git+https://pagure.io/clime/test.git#HEAD:

  git_cwd_vcs subtree=foo: git+https://pagure.io/clime/test.git#HEAD:foo

  

@@ -46,6 +46,28 @@ 

  ---

  > git_version name="$(git_name)"

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ---

  > git_vcs

  ---

  > git_vcs subtree=foo
@@ -128,6 +150,28 @@ 

  ---

  > git_dir_version name="$(git_name)"

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ---

  > git_dir_vcs

  ---

  > git_dir_vcs subtree=foo
@@ -210,6 +254,28 @@ 

  ---

  > git_cwd_version name="$(git_cwd_name)"

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ---

  > git_cwd_vcs

  ---

  > git_cwd_vcs subtree=foo

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 0.0.wtree.xxxxxx

  

+ git_release: 0.wtree.xxxxxx

+ git_release name=foo: 0.wtree.xxxxxx

+ git_release pivot=1: 1.wtree.xxxxxx

+ git_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_release pivot=x: x.wtree.xxxxxx

+ git_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 0.wtree.xxxxxx

+ 

  git_vcs: git+https://pagure.io/clime/test.git#HEAD:

  git_vcs subtree=foo: git+https://pagure.io/clime/test.git#HEAD:foo

  
@@ -76,6 +86,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 0.0.wtree.xxxxxx

  

+ git_dir_release: 0.wtree.xxxxxx

+ git_dir_release name=foo: 0.wtree.xxxxxx

+ git_dir_release pivot=1: 1.wtree.xxxxxx

+ git_dir_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_dir_release pivot=x: x.wtree.xxxxxx

+ git_dir_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 0.wtree.xxxxxx

+ 

  git_dir_vcs: git+https://pagure.io/clime/test.git#HEAD:subdir2/

  git_dir_vcs subtree=foo: git+https://pagure.io/clime/test.git#HEAD:foo

  
@@ -132,6 +152,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 0.0.wtree.xxxxxx

  

+ git_cwd_release: 0.wtree.xxxxxx

+ git_cwd_release name=foo: 0.wtree.xxxxxx

+ git_cwd_release pivot=1: 1.wtree.xxxxxx

+ git_cwd_release name=foo pivot=1: 1.wtree.xxxxxx

+ git_cwd_release pivot=x: x.wtree.xxxxxx

+ git_cwd_release pivot=2.0: 2.0.wtree.xxxxxx

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 0.wtree.xxxxxx

+ 

  git_cwd_vcs: git+https://pagure.io/clime/test.git#HEAD:subdir1/

  git_cwd_vcs subtree=foo: git+https://pagure.io/clime/test.git#HEAD:foo

  

@@ -46,6 +46,28 @@ 

  ---

  > git_version name="$(git_name)"

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ---

  > git_vcs

  ---

  > git_vcs subtree=foo
@@ -128,6 +150,28 @@ 

  ---

  > git_dir_version name="$(git_name)"

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ---

  > git_dir_vcs

  ---

  > git_dir_vcs subtree=foo
@@ -210,6 +254,28 @@ 

  ---

  > git_cwd_version name="$(git_cwd_name)"

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ---

  > git_cwd_vcs

  ---

  > git_cwd_vcs subtree=foo

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 0.0.git.1.xxxxxxx

  

+ git_release: 0.git.1.xxxxxxx

+ git_release name=foo: 1

+ git_release pivot=1: 1.git.1.xxxxxxx

+ git_release name=foo pivot=1: 1

+ git_release pivot=x: x.git.1.xxxxxxx

+ git_release pivot=2.0: 2.0.git.1.xxxxxxx

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 0.git.1.xxxxxxx

+ 

  git_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -109,6 +119,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 0.0.git.1.xxxxxxx

  

+ git_dir_release: 0.git.1.xxxxxxx

+ git_dir_release name=foo: 1

+ git_dir_release pivot=1: 1.git.1.xxxxxxx

+ git_dir_release name=foo pivot=1: 1

+ git_dir_release pivot=x: x.git.1.xxxxxxx

+ git_dir_release pivot=2.0: 2.0.git.1.xxxxxxx

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 0.git.1.xxxxxxx

+ 

  git_dir_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_dir_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -198,6 +218,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 0.0.git.1.xxxxxxx

  

+ git_cwd_release: 0.git.1.xxxxxxx

+ git_cwd_release name=foo: 1

+ git_cwd_release pivot=1: 1.git.1.xxxxxxx

+ git_cwd_release name=foo pivot=1: 1

+ git_cwd_release pivot=x: x.git.1.xxxxxxx

+ git_cwd_release pivot=2.0: 2.0.git.1.xxxxxxx

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 0.git.1.xxxxxxx

+ 

  git_cwd_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_cwd_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  

@@ -46,6 +46,28 @@ 

  ---

  > git_version name="$(git_name)"

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ---

  > git_vcs

  ---

  > git_vcs subtree=foo
@@ -128,6 +150,28 @@ 

  ---

  > git_dir_version name="$(git_name)"

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ---

  > git_dir_vcs

  ---

  > git_dir_vcs subtree=foo
@@ -210,6 +254,28 @@ 

  ---

  > git_cwd_version name="$(git_cwd_name)"

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ---

  > git_cwd_vcs

  ---

  > git_cwd_vcs subtree=foo

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 0.0.git.2.xxxxxxx

  

+ git_release: 0.git.2.xxxxxxx

+ git_release name=foo: 1.git.1.xxxxxxx

+ git_release pivot=1: 1.git.2.xxxxxxx

+ git_release name=foo pivot=1: 1.git.1.xxxxxxx

+ git_release pivot=x: x.git.2.xxxxxxx

+ git_release pivot=2.0: 2.0.git.2.xxxxxxx

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 0.git.2.xxxxxxx

+ 

  git_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -77,6 +87,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 0.0.git.2.xxxxxxx

  

+ git_dir_release: 0.git.2.xxxxxxx

+ git_dir_release name=foo: 1.git.1.xxxxxxx

+ git_dir_release pivot=1: 1.git.2.xxxxxxx

+ git_dir_release name=foo pivot=1: 1.git.1.xxxxxxx

+ git_dir_release pivot=x: x.git.2.xxxxxxx

+ git_dir_release pivot=2.0: 2.0.git.2.xxxxxxx

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 0.git.2.xxxxxxx

+ 

  git_dir_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_dir_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  
@@ -134,6 +154,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 0.0.git.2.xxxxxxx

  

+ git_cwd_release: 0.git.2.xxxxxxx

+ git_cwd_release name=foo: 1.git.1.xxxxxxx

+ git_cwd_release pivot=1: 1.git.2.xxxxxxx

+ git_cwd_release name=foo pivot=1: 1.git.1.xxxxxxx

+ git_cwd_release pivot=x: x.git.2.xxxxxxx

+ git_cwd_release pivot=2.0: 2.0.git.2.xxxxxxx

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 0.git.2.xxxxxxx

+ 

  git_cwd_vcs: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

  git_cwd_vcs subtree=foo: git+https://pagure.io/clime/test.git#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:foo

  

@@ -57,6 +57,31 @@ 

  ERROR: git_version: name cannot be empty.

  git_version name="$(git_name)" failed with value 1.

  ---

+ > git_release

+ ---

+ > git_release name=foo

+ ---

+ > git_release pivot=1

+ ---

+ > git_release name=foo pivot=1

+ ---

+ > git_release pivot=x

+ ---

+ > git_release pivot=2.0

+ ---

+ > git_release pivot=1-1 # invalid

+ ERROR: git_release: pivot cannot contain dashes.

+ git_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_release name= # invalid

+ ERROR: git_release: name cannot be empty.

+ git_release name= # invalid failed with value 1.

+ ---

+ > git_release name="$(git_name)"

+ ERROR: git_name: Not a Git repository.

+ ERROR: git_release: name cannot be empty.

+ git_release name="$(git_name)" failed with value 1.

+ ---

  > git_vcs

  ERROR: git_vcs: Start by setting origin URL.

  git_vcs failed with value 1.
@@ -154,6 +179,31 @@ 

  ERROR: git_dir_version: name cannot be empty.

  git_dir_version name="$(git_name)" failed with value 1.

  ---

+ > git_dir_release

+ ---

+ > git_dir_release name=foo

+ ---

+ > git_dir_release pivot=1

+ ---

+ > git_dir_release name=foo pivot=1

+ ---

+ > git_dir_release pivot=x

+ ---

+ > git_dir_release pivot=2.0

+ ---

+ > git_dir_release pivot=1-1 # invalid

+ ERROR: git_dir_release: pivot cannot contain dashes.

+ git_dir_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_dir_release name= # invalid

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name= # invalid failed with value 1.

+ ---

+ > git_dir_release name="$(git_name)"

+ ERROR: git_name: Not a Git repository.

+ ERROR: git_dir_release: name cannot be empty.

+ git_dir_release name="$(git_name)" failed with value 1.

+ ---

  > git_dir_vcs

  ERROR: git_dir_vcs: Start by setting origin URL.

  git_dir_vcs failed with value 1.
@@ -251,6 +301,31 @@ 

  ERROR: git_cwd_version: name cannot be empty.

  git_cwd_version name="$(git_cwd_name)" failed with value 1.

  ---

+ > git_cwd_release

+ ---

+ > git_cwd_release name=foo

+ ---

+ > git_cwd_release pivot=1

+ ---

+ > git_cwd_release name=foo pivot=1

+ ---

+ > git_cwd_release pivot=x

+ ---

+ > git_cwd_release pivot=2.0

+ ---

+ > git_cwd_release pivot=1-1 # invalid

+ ERROR: git_cwd_release: pivot cannot contain dashes.

+ git_cwd_release pivot=1-1 # invalid failed with value 1.

+ ---

+ > git_cwd_release name= # invalid

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name= # invalid failed with value 1.

+ ---

+ > git_cwd_release name="$(git_name)"

+ ERROR: git_name: Not a Git repository.

+ ERROR: git_cwd_release: name cannot be empty.

+ git_cwd_release name="$(git_name)" failed with value 1.

+ ---

  > git_cwd_vcs

  ERROR: git_cwd_vcs: Start by setting origin URL.

  git_cwd_vcs failed with value 1.

@@ -20,6 +20,16 @@ 

  git_version name= # invalid: 

  git_version name="$(git_name)": 

  

+ git_release: 0

+ git_release name=foo: 0

+ git_release pivot=1: 1

+ git_release name=foo pivot=1: 1

+ git_release pivot=x: x

+ git_release pivot=2.0: 2.0

+ git_release pivot=1-1 # invalid: 

+ git_release name= # invalid: 

+ git_release name="$(git_name)": 

+ 

  git_vcs: 

  git_vcs subtree=foo: 

  
@@ -76,6 +86,16 @@ 

  git_dir_version name= # invalid: 

  git_dir_version name="$(git_name)": 

  

+ git_dir_release: 0

+ git_dir_release name=foo: 0

+ git_dir_release pivot=1: 1

+ git_dir_release name=foo pivot=1: 1

+ git_dir_release pivot=x: x

+ git_dir_release pivot=2.0: 2.0

+ git_dir_release pivot=1-1 # invalid: 

+ git_dir_release name= # invalid: 

+ git_dir_release name="$(git_name)": 

+ 

  git_dir_vcs: 

  git_dir_vcs subtree=foo: 

  
@@ -132,6 +152,16 @@ 

  git_cwd_version name= # invalid: 

  git_cwd_version name="$(git_cwd_name)": 

  

+ git_cwd_release: 0

+ git_cwd_release name=foo: 0

+ git_cwd_release pivot=1: 1

+ git_cwd_release name=foo pivot=1: 1

+ git_cwd_release pivot=x: x

+ git_cwd_release pivot=2.0: 2.0

+ git_cwd_release pivot=1-1 # invalid: 

+ git_cwd_release name= # invalid: 

+ git_cwd_release name="$(git_name)": 

+ 

  git_cwd_vcs: 

  git_cwd_vcs subtree=foo: 

  

file modified
+5
@@ -33,6 +33,7 @@ 

          self.base_output_path = kwargs.pop("base_output_path", '/tmp/rpkg')

          self.dump_spec_only = False

          self.version_bump = False

+         self.release_bump = False

          self.use_existing_outdir = False

          self.verbose = False

          super(Commands, self).__init__(*args, **kwargs)
@@ -456,6 +457,9 @@ 

          if self.version_bump:

              env_params += ' -e VERSION_BUMP=1'

  

+         if self.release_bump:

+             env_params += ' -e RELEASE_BUMP=1'

+ 

          if self.verbose:

              env_params += ' -e VERBOSE=1'

  
@@ -517,6 +521,7 @@ 

          self.log.info('Created tag: %s', tagname)

  

          self.version_bump = False

+         self.release_bump = False

          self.load_spec()

  

      def get_latest_merged_tagname(self):

file modified
+2
@@ -232,6 +232,7 @@ 

  

          if not self.args.tag:

              self.cmd.version_bump = True

+             self.cmd.release_bump = True

  

          self.cmd._rpmdefines = self.cmd.rpmdefines + ["--define 'dist %nil'"]

  
@@ -279,6 +280,7 @@ 

              if self.args.tag:

                  self.cmd.dump_spec_only = True

                  self.cmd.version_bump = True

+                 self.cmd.release_bump = True

                  self.cmd.add_tag()

          except Exception:

              if self.args.tag:

Hello, this PR implements git_release macro to be used in spec files to dynamically generate release number from git (annotated) tags.

Release number from the latest tag is taken as a base and dynamic suffixes are appended to it indicating number of commits from the latest tag, HEAD commit short hash, and working tree dirtiness status (.wtree.<timestamp> suffix).

If currently checked out commit is the one tagged most recently and working tree is clean, then no dynamic suffixes are appended and we simply get the value read from the tag (the value after the last dash in the tag name). It may or may not be a number (but assumption is that it will usually be a number).

If rpkg tag is called, then git_release macro generates a "bumped release", which is the release value from the latest tag +1. If bumping is not possible (because release in the latest tag is not a number), then error is raised and manual tag creation is required.

Release resetting may be done by creating a new tag manually with release value equal to 1, example: rpkg tag pkgname-1.1-1 (this is assuming there is e.g. already existing tag pkgname-1.0-3).

git_release can be used together with git_changelog to get also changelogs generated from the tags.

git_release can be technically used with git_version together but the usage probably does not make too much sense. git_version is primarily intended for upstream devels (who will have static Release) and git_release is intended for downstream devels (who will have static Version).

@ngompa @bkabrda: can you, please, review

why is it release and not version?

Hello Igor! I used | wc -l to count the commits because of compatiblity with git 1.8.

why is it release and not version?

There is git_version macro as well. which is very similar to git_release. The difference is that git_version reads version number (it actually reads only minor part of it) from the latest tag whereas git_release reads the release number (the string after the last dash).

git_version has two (without suffixes) components: major, minor (lead and follow in rpkg naming) and git_release has only one (called pivot in rpkg).

But those macros are very similar. Only difference is that version has a little bit more richer structure.

The code looks good in general, though I want to test it out a bit before signing off on it. Is there a way for me to do so easily?

The code looks good in general, though I want to test it out a bit before signing off on it. Is there a way for me to do so easily?

Hello Neal!

I made Fedora builds here: https://copr.fedorainfracloud.org/coprs/clime/rpkg-util-git-release/

So

dnf install dnf-plugins-core
dnf copr enable clime/rpkg-util-git-release 
dnf install rpkg

Then you can git clone https://pagure.io/rpkg-util

and play around with the built rpkg on the rpkg sources themselves.

I need to make it work from sources directly (without any building/installing).

The easiest way to try the new macro is to place

{{{ git_release }}}

tag somewhere into a spec file (e.g. rpkg-util.spec.rpkg).

Then you can e.g. call rpkg spec to render the whole spec.

If you have Release: {{{ git_release }}} in a spec file, you will see it is taking effect when you call just rpkg -q verrel.

Reading the description of the change and skimming through the code doesn't reveal any issues to me. I'm a bit busy right now so I can't do thorough testing,

@ngompa hello, are you going to continue the review? Do you want me to rebuild/rebase?

Yeah, could you please do a rebuild+rebase?

Yeah, could you please do a rebuild+rebase?

sure.

rebased onto 71ea95a

5 years ago

rebased onto 71ea95a

5 years ago

For some reason, copr-frontend did not capture updates in this PR to do a PR auto-rebuild. Otherwise, I would be providing builds through that mechanism but builds in https://copr.fedorainfracloud.org/coprs/clime/rpkg-util-git-release should be good as well.

@ngompa do you think I can merge this already? Did you find any issues?

@ngompa Thank you for the initial review.

Pull-Request has been merged by clime

5 years ago