From 1fc9b3cb6cd2eefe8dce5cef9db2ab5c0e205230 Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Wed, 24 May 2017 07:34:41 +0200 Subject: [PATCH] add auxiliary git bash scripts --- cmake/scripts/get_closest_tag.sh | 45 ++++++++++++++++++++++++++++++++ cmake/scripts/get_latest_tag.sh | 27 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100755 cmake/scripts/get_closest_tag.sh create mode 100755 cmake/scripts/get_latest_tag.sh diff --git a/cmake/scripts/get_closest_tag.sh b/cmake/scripts/get_closest_tag.sh new file mode 100755 index 0000000000..5166c9448c --- /dev/null +++ b/cmake/scripts/get_closest_tag.sh @@ -0,0 +1,45 @@ +#!/bin/sh +# +# Find the TAG that +# - has a common ancestry with current HEAD +# - with shortest (positive) distance of the common ancestor to HEAD +# + +head="$(git rev-parse HEAD)" + +tags="$(git tag --sort=-creatordate)" + +min_distance=0 +min_tag="" +for tag in $tags; do + tag_commit="$(git rev-parse $tag^{commit})" + + if [ "$tag_commit" = "$head" ]; then + echo "$tag" + exit 0; + fi + + ancestor="$(git merge-base HEAD $tag)" + + if [ "$ancestor" != "$head" ]; then + distance="$(git rev-list HEAD ^${ancestor} --count)" + + if [ "$min_distance" = "0" ]; then + min_distance="$distance" + min_tag="$tag" + fi + + if [ "$distance" -lt "$min_distance" ]; then + min_distance="$distance" + min_tag="$tag" + fi + fi + +done + +if [ "$min_distance" != "0" ]; then + echo $min_tag + exit 0 +else + exit 1 +fi diff --git a/cmake/scripts/get_latest_tag.sh b/cmake/scripts/get_latest_tag.sh new file mode 100755 index 0000000000..c29ace9920 --- /dev/null +++ b/cmake/scripts/get_latest_tag.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Find the latest TAG that has a common ancestry (of positive distance) with +# current HEAD +# + +head="$(git rev-parse HEAD)" + +tags="$(git tag --sort=-creatordate)" + +for tag in $tags; do + tag_commit="$(git rev-parse $tag^{commit})" + + if [ "$tag_commit" = "$head" ]; then + echo "$tag" + exit 0; + fi + + ancestor="$(git merge-base HEAD $tag)" + + if [ "$ancestor" != "$head" ]; then + echo "$tag" + exit 0; + fi +done + +exit 1 -- 2.39.5