This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git
The following commit(s) were added to refs/heads/master by this push: new f6c3a35 Add a check to ensure the local repo is on par with the remote f6c3a35 is described below commit f6c3a35a98074387c6911e7848a1a33c1a2301b3 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Fri Apr 29 16:55:15 2022 +0200 Add a check to ensure the local repo is on par with the remote --- build/release.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 4 deletions(-) diff --git a/build/release.sh b/build/release.sh index ec9dfe8..e635560 100755 --- a/build/release.sh +++ b/build/release.sh @@ -26,10 +26,86 @@ then exit 1 fi -# checkout -git checkout master -git fetch origin -git reset --hard origin/master +startup_check() +{ + # Need to do a git fecth first to download remote changes for us to compare against + git fetch + # Most of this code was taken from the __git_ps1_changes method of https://github.com/markgandolfo/git-bash-completion + local branch_ref + branch_ref="$(git symbolic-ref -q HEAD 2>/dev/null)"; + if [ -n "$branch_ref" ]; then + local branch_origin + branch_origin="$(git for-each-ref --format='%(upstream:short)' $branch_ref)"; + if [ -n "$branch_origin" ]; then + local branch + branch=${branch_ref##refs/heads/}; + + if [ "$branch" != "master" ]; then + echo "Not working on the master - cannot proceed" + exit 1 + fi + + local unpush + unpush=$(git rev-list $branch_origin..$branch --count); + local unpull + unpull=$(git rev-list $branch..$branch_origin --count); + local staged + staged=$(git diff --staged --name-status | wc -l); + local uncommits + uncommits=$(git status -s -uall --porcelain); + + if [[ $unpush -gt 0 ]]; then + echo "There are changes which have not been pushed - cannot proceed. The following commits need to be pushed:" + local unpushed + unpushed=$(git rev-list $branch_origin..$branch); + for commit in $unpushed; do + git --no-pager log --pretty=format:"%H - %an, %ar : %s" -n 1 $commit + done + exit 1 + fi + + if [[ $unpull -gt 0 ]]; then + echo "There are changes which have not been pulled - cannot proceed. The following commits have been added to master since your last pull:" + local unpulled + unpulled=$(git rev-list $branch..$branch_origin); + for commit in $unpulled; do + git --no-pager log --pretty=format:"%H - %an, %ar : %s" -n 1 $commit + done + exit 1 + fi + + if [[ $staged -gt 0 ]]; then + local staging + staging=$(git diff --staged --name-status); + echo "There are changes which are staged but have been commited - cannot proceed" + echo $staging + exit 1 + fi + + local unstaged + unstaged=$(echo "$uncommits" | grep -c "^ [A-Z]"); + if [[ $unstaged -gt 0 ]]; then + echo "There are unstaged changes - cannot proceed" + echo $(echo "$uncommits" | grep "^ [A-Z]") + exit 1 + fi + + local untracked + untracked=$(echo "$uncommits" | grep -c "^??"); + if [[ $untracked -gt 0 ]]; then + echo "There are untracked changes - cannot proceed" + echo $(echo "$uncommits" | grep "^??") + exit 1 + fi + fi + else + echo "Working folder isn't a git folder" + exit 1 + fi +} + +# check +startup_check # update version mvn versions:set -DnewVersion=$VERSION