release: do not update the version on master when it's already higher
authorFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 24 Apr 2013 07:36:10 +0000 (09:36 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 24 Apr 2013 08:01:23 +0000 (10:01 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
release/release.bash

index 78048d7..7b42d4b 100755 (executable)
@@ -359,6 +359,16 @@ function commitChanges() {
 
 
 #
 
 
 #
+# Get the version from the Makefile
+#
+function getVersionFromMakefile() {
+  local src="Makefile"
+  local regex="([[:space:]]*VERS[[:space:]]*=[[:space:]]*)${versionRegexSources}[[:space:]]*"
+  grep -E "^${regex}\$" "${src}" | sed -r "s/^${regex}\$/\3/"
+}
+
+
+#
 # Update the version in all relevant files
 #
 # 1=the new version (in the format of versionRegexSources)
 # Update the version in all relevant files
 #
 # 1=the new version (in the format of versionRegexSources)
@@ -667,8 +677,18 @@ EOF
   git checkout -q master
   git clean -fdq
   git reset -q --hard
   git checkout -q master
   git clean -fdq
   git reset -q --hard
-  updateVersions "pre-${relBranchVersionDigitsNextMicro}"
-  commitChanges 0 "Update version after ${MODE_TXT_LOWER} of ${relTagVersion}"
+
+  declare oldMasterVersion="$(getVersionFromMakefile)"
+  declare newMasterVersion="${relBranchVersionDigitsNextMicro}"
+  checkVersionIncrementing "${oldMasterVersion}" "${newMasterVersion}"
+  if [[ ${checkVersionIncrementingResult} -ne 0 ]]; then
+    echo "* Skipped updating the version on the master branch:"
+    echo "  The new version ${newMasterVersion} is not greater than the previous version ${oldMasterVersion}"
+  else
+    updateVersions "pre-${relBranchVersionDigitsNextMicro}"
+    commitChanges 0 "Update version after ${MODE_TXT_LOWER} of ${relTagVersion}"
+  fi
+
   git checkout -q "${relBranch}"
   git clean -fdq
   git reset -q --hard
   git checkout -q "${relBranch}"
   git clean -fdq
   git reset -q --hard