mirror of
https://github.com/apache/maven-mvnd.git
synced 2025-09-29 09:28:53 +00:00
Add a check to ensure the local repo is on par with the remote
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user