From 365d0c0fe65fdb539a552c04570b24ef053659b8 Mon Sep 17 00:00:00 2001 From: Anil Belur Date: Thu, 19 Jan 2023 21:34:27 +1000 Subject: [PATCH] Fix: Ensure tag and object are pushed together Address the problem where the tag is not pushed to the mainline branch therefore causing the tag missing in the git history. To fix this check commit count between the HEAD and origin/${GERRIT_BRANCH} before the fetch and merge operation. This is done to ensure that the tag lands on the target branch. If the branch has already moved forward from the tagging point, then a spur commit is created for the tag. Change-Id: I675c815d4ac39244adf5168c1fbd051f8c626290 Signed-off-by: Anil Belur --- .../notes/fix-missing-tag-221e3263494b952a.yaml | 11 +++++++++++ shell/release-job.sh | 22 ++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/fix-missing-tag-221e3263494b952a.yaml diff --git a/releasenotes/notes/fix-missing-tag-221e3263494b952a.yaml b/releasenotes/notes/fix-missing-tag-221e3263494b952a.yaml new file mode 100644 index 00000000..d22a3e1a --- /dev/null +++ b/releasenotes/notes/fix-missing-tag-221e3263494b952a.yaml @@ -0,0 +1,11 @@ +--- +fixes: + - | + Address the problem where the tag is not pushed to the mainline + branch therefore causing the tag missing in the git history. + + To fix this check commit count between the HEAD and + origin/${GERRIT_BRANCH} before the fetch and merge operation. + This is done to ensure that the tag lands on the target branch. + If the branch has already moved forward from the tagging point, + then a spur commit is created for the tag. diff --git a/shell/release-job.sh b/shell/release-job.sh index a4194388..56e37c3d 100644 --- a/shell/release-job.sh +++ b/shell/release-job.sh @@ -365,7 +365,12 @@ tag-git-repo(){ fi git config user.name "$RELEASE_USERNAME" git config user.email "$RELEASE_EMAIL" - git push origin "$GIT_TAG" + # Check if sentinal file exists + if [[ ! -f .testhash ]]; then + git push origin "${GERRIT_BRANCH}" "$GIT_TAG" + else + git push origin "$GIT_TAG" + fi fi fi } @@ -458,7 +463,20 @@ maven_release_file(){ gunzip taglist.log.gz cat "$PATCH_DIR"/taglist.log popd - git checkout "$(awk '{print $NF}' "$PATCH_DIR/taglist.log")" + + # compare if the commit sha1 from taglist is the same origin/${GERRIT_BRANCH} + # ensure that the tag lands on the target branch + # forward from the tagging point, then a spur commit is created + # for the tag + taghash="$(awk '{print $NF}' "$PATCH_DIR/taglist.log")" + if [ "${taghash}" = $(git rev-parse origin/${GERRIT_BRANCH}) ]; then + git checkout "origin/${GERRIT_BRANCH}" + # sentinal file + touch .testhash + else + git checkout "${taghash}" + fi + git fetch "$PATCH_DIR/${PROJECT//\//-}.bundle" git merge --ff-only FETCH_HEAD nexus_release -- 2.16.6