MNEMONIC-45: Support Candidate Release
diff --git a/build-tools/release.sh b/build-tools/release.sh
index 590e174..05e2085 100755
--- a/build-tools/release.sh
+++ b/build-tools/release.sh
@@ -18,8 +18,9 @@
 #
 
 usage(){
-    echo "Usage: $0 Release_Version Next_Release_Version"
-    echo "For example, $0 0.2.0 0.2.1"
+    echo "Usage: $0 Release_Version Next_Release_Version Candidate_Id"
+    echo "e.g. $0 0.2.0 0.2.0 rc2"
+    echo "     $0 0.2.0 0.2.1 rc3"
     exit 1
 }
 
@@ -37,26 +38,39 @@
 [[ -n "$(git status --porcelain)" ]] &&
     echo "please commit all changes first." && exit
 
-[[ $# -ne 2 ]]  && usage
+[[ $# -ne 3 ]]  && usage
 
 RELEASE_VERSION="$1"
 NEXT_RELEASE_VERSION="$2"
+RELEASE_CANDIDATE_ID="$3"
+NEXT_VER_COMMIT_PREFIX="Bump version"
 
 echo "You have specified:"
 echo "RELEASE_VERSION = ${RELEASE_VERSION}"
 echo "NEXT_RELEASE_VERSION = ${NEXT_RELEASE_VERSION}"
+echo "RELEASE_CANDIDATE_ID = ${RELEASE_CANDIDATE_ID}"
 
 git checkout master
 
+if [ "${RELEASE_VERSION}" == "${NEXT_RELEASE_VERSION}" ]; then
+    echo "You are trying to prepare a same version candidate so going to clean up existing branch <branch-${RELEASE_VERSION}> and tag <v${RELEASE_VERSION}-incubating> if any"
+    continueprompt
+    git branch -d branch-${RELEASE_VERSION}
+    git push upstream --delete branch-${RELEASE_VERSION}
+    git tag -d v${RELEASE_VERSION}-incubating
+    git push upstream --delete v${RELEASE_VERSION}-incubating
+    NEXT_VER_COMMIT_PREFIX="Stay version"
+fi
+
 echo "Preparing to create a branch branch-${RELEASE_VERSION} for release"
 continueprompt
 
 git checkout -b branch-${RELEASE_VERSION} || { echo "Create branch failed"; exit; }
 
 mvn versions:set -DgenerateBackupPoms=false -DnewVersion=${RELEASE_VERSION}-incubating
-git commit . -m "Prepare for releasing ${RELEASE_VERSION}-incubating"
+git commit . -m "Prepare for releasing ${RELEASE_VERSION}-incubating ${RELEASE_CANDIDATE_ID}"
 
-git tag -s v${RELEASE_VERSION}-incubating -m "Releasing ${RELEASE_VERSION}-incubating"
+git tag -s v${RELEASE_VERSION}-incubating -m "Releasing ${RELEASE_VERSION}-incubating ${RELEASE_CANDIDATE_ID}"
 
 rm -rf target/
 
@@ -92,7 +106,7 @@
 git checkout master
 git merge --no-ff branch-${RELEASE_VERSION}
 mvn versions:set -DgenerateBackupPoms=false -DnewVersion=${NEXT_RELEASE_VERSION}-incubating-SNAPSHOT
-git commit . -m "Bump version to ${NEXT_RELEASE_VERSION}-incubating-SNAPSHOT"
+git commit . -m "${NEXT_VER_COMMIT_PREFIX} to ${NEXT_RELEASE_VERSION}-incubating-SNAPSHOT"
 
 echo "Push release merge and new version to upstream."
 continueprompt