[dpdk-dev] [PATCH] devtools: fix version search with git < 2.7.0

Thomas Monjalon thomas at monjalon.net
Tue Sep 5 00:05:32 CEST 2017


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 at dpdk.org

Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
---
 devtools/git-log-fixes.sh | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/devtools/git-log-fixes.sh b/devtools/git-log-fixes.sh
index 580068741..cd5cf8939 100755
--- a/devtools/git-log-fixes.sh
+++ b/devtools/git-log-fixes.sh
@@ -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
-- 
2.14.1



More information about the dev mailing list