Hotfix for much too long http headers
[olsrd.git] / release / release.bash
index 78048d7..0806808 100755 (executable)
@@ -270,6 +270,7 @@ function adjustBranchName() {
 #
 # 1=last version
 # 2=new version
+# 3= 0 to disallow equal versions as ok
 # return (in checkVersionIncrementingResult) = 0 when new version > last version,
 #                                              1 otherwise
 declare -i checkVersionIncrementingResult=0
@@ -277,6 +278,7 @@ function checkVersionIncrementing() {
   checkVersionIncrementingResult=0
   local lastVersion="$(stringTrim "${1}")"
   local newVersion="$(stringTrim "${2}")"
+  local -i allowEqualVersions=${3}
 
   local -a lastVersionDigits=( ${lastVersion//\./ } )
   local -a newVersionDigits=( ${newVersion//\./ } )
@@ -328,7 +330,9 @@ function checkVersionIncrementing() {
   fi
 
   # everything is equal
-  checkVersionIncrementingResult=1
+  if [[ ${allowEqualVersions} -eq 0 ]]; then
+    checkVersionIncrementingResult=1
+  fi
   return
 }
 
@@ -358,6 +362,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
 #
@@ -436,6 +450,7 @@ declare baseDir="$(dirname "${scriptDir}")"
 
 cd "${baseDir}"
 
+declare -i masterWasUpdated=0
 
 #
 # Check the number of arguments
@@ -560,13 +575,27 @@ declare relBranchVersionDigitsNextPatchLevel="$(getNextVersionDigitsPatchLevel "
 #
 # Check that the version is incrementing
 #
-checkVersionIncrementing "${prevTagVersionDigits}" "${relBranchVersionDigits}"
+checkVersionIncrementing "${prevTagVersionDigits}" "${relBranchVersionDigits}" 0
 if [[ ${checkVersionIncrementingResult} -ne 0 ]]; then
   echo "* The new version ${relBranchVersionDigits} is not greater than the previous version ${prevTagVersionDigits}"
   exit 1
 fi
 
 
+#
+# When branching, check that the version is incrementing (allow equal versions),
+# w.r.t. the version in the Makefile
+#
+if [[ "${mode}" == "${MODE_BRANCH}" ]]; then
+  declare currentMasterVersion="$(getVersionFromMakefile)"
+  checkVersionIncrementing "${currentMasterVersion}" "${relBranchVersionDigits}" 1
+  if [[ ${checkVersionIncrementingResult} -ne 0 ]]; then
+    echo "* The new version ${relBranchVersionDigits} is not greater than the current version ${currentMasterVersion}"
+    exit 1
+  fi
+fi
+
+
 #
 # Confirm the branch/release
 #
@@ -601,6 +630,7 @@ if [[ "${mode}" == "${MODE_BRANCH}" ]]; then
   echo "Updating the version to pre-${relBranchVersionDigits}..."
   updateVersions "pre-${relBranchVersionDigits}"
   commitChanges 1 "${MODE_TXT} ${relTagVersion}"
+  masterWasUpdated=1
 
   # create release branch
   echo "Creating the release branch ${relBranch}..."
@@ -667,8 +697,19 @@ EOF
   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}" 0
+  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}"
+    masterWasUpdated=1
+  fi
+
   git checkout -q "${relBranch}"
   git clean -fdq
   git reset -q --hard
@@ -704,7 +745,9 @@ echo ""
 echo "==================="
 echo "=   Git Updates   ="
 echo "==================="
-echo "Branch : master"
+if [[ ${masterWasUpdated} -ne 0 ]]; then
+  echo "Branch : master"
+fi
 echo "Branch : ${relBranch}"
 if [[ "${mode}" == "${MODE_RELEASE}" ]]; then
   echo "Tag    : ${relTagVersion}"
@@ -731,18 +774,34 @@ echo "= Manual Actions  ="
 echo "==================="
 if [[ "${mode}" == "${MODE_RELEASE}" ]]; then
   echo "1. Check that everything is in order. For example, run:"
-  echo "     gitk master ${relBranch} ${relTagVersion}"
+  if [[ ${masterWasUpdated} -ne 0 ]]; then
+    echo "     gitk master ${relBranch} ${relTagVersion}"
+  else
+    echo "     gitk ${relBranch} ${relTagVersion}"
+  fi
   echo "2. Push. For example, run:"
-  echo "     git push origin master ${relBranch} ${relTagVersion}"
+  if [[ ${masterWasUpdated} -ne 0 ]]; then
+    echo "     git push origin master ${relBranch} ${relTagVersion}"
+  else
+    echo "     git push origin ${relBranch} ${relTagVersion}"
+  fi
   echo "3. Upload the generated files to"
   echo "     http://www.olsr.org/releases/${relBranchVersionDigits}"
   echo "4. Add a release article on olsr.org."
   echo ""
 else
   echo "1. Check that everything is in order. For example, run:"
-  echo "     gitk master ${relBranch}"
+  if [[ ${masterWasUpdated} -ne 0 ]]; then
+    echo "     gitk master ${relBranch}"
+  else
+    echo "     gitk ${relBranch}"
+  fi
   echo "2. Push. For example, run:"
-  echo "     git push origin master ${relBranch}"
+  if [[ ${masterWasUpdated} -ne 0 ]]; then
+    echo "     git push origin master ${relBranch}"
+  else
+    echo "     git push origin ${relBranch}"
+  fi
   echo "3. Send a 'release branch created' email to olsr-dev@lists.olsr.org."
   echo ""
 fi