devtools: fix version search with git < 2.7.0
authorThomas Monjalon <thomas@monjalon.net>
Mon, 4 Sep 2017 22:05:32 +0000 (00:05 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 22 Sep 2017 13:42:24 +0000 (15:42 +0200)
The script git-log-fixes.sh (used in check-git-log.sh) looks
for git tags to find the version where a bug is introduced.

In DPDK 17.08, the script has been fixed to ignore tags from
non current branch.
It was using the option --merged which was introduced in git 2.7.0.

As git 2.7.0 is not so old, a fallback is provided for some years.

The fallback is replacing the tag --merged option by a branch filter.
If the tag is found in the branch, the branch name is replaced
by the tag.

This script could be improved to allow using another reference branch,
instead of hard coding HEAD branch (the current one).

Fixes: 26857dabb3c9 ("devtools: ignore non merged tags for backport")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Tested-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
devtools/git-log-fixes.sh

index 5800687..cd5cf89 100755 (executable)
@@ -66,7 +66,16 @@ range="$*"
 # get major release version of a commit
 commit_version () # <hash>
 {
-       tag=$(git tag -l --contains $1 --merged | head -n1)
+       # use current branch as history reference
+       local refbranch=$(git rev-parse --abbrev-ref HEAD)
+       local tag=$( (git tag -l --contains $1 --merged $refbranch 2>&- ||
+               # tag --merged option has been introduced in git 2.7.0
+               # below is a fallback in case of old git version
+               for t in $(git tag -l --contains $1) ; do
+                       git branch $refbranch --contains $t |
+                       sed "s,.\+,$t,"
+               done) |
+               head -n1)
        if [ -z "$tag" ] ; then
                # before -rc1 tag of release in progress
                make showversion | cut -d'.' -f-2