Advertisement
Guest User

Untitled

a guest
Aug 30th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. # Post merge hook to automerge branch to branches which
  4.  
  5. vercomp () {
  6. if [[ $1 == $2 ]]
  7. then
  8. return 0
  9. fi
  10. local IFS=.
  11. local i ver1=($1) ver2=($2)
  12. # fill empty fields in ver1 with zeros
  13. for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
  14. do
  15. ver1[i]=0
  16. done
  17. for ((i=0; i<${#ver1[@]}; i++))
  18. do
  19. if [[ -z ${ver2[i]} ]]
  20. then
  21. # fill empty fields in ver2 with zeros
  22. ver2[i]=0
  23. fi
  24. if ((10#${ver1[i]} > 10#${ver2[i]}))
  25. then
  26. return 1
  27. fi
  28. if ((10#${ver1[i]} < 10#${ver2[i]}))
  29. then
  30. return 2
  31. fi
  32. done
  33. return 0
  34. }
  35.  
  36.  
  37. PATTERN='release/*'
  38.  
  39. CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
  40. LAST_COMMIT=$(git rev-list -1 HEAD)
  41.  
  42. #echo $CURRENT_BRANCH
  43. #echo $LAST_COMMIT
  44.  
  45. # Get current branch version, exit if no match (no release branch)
  46. if [[ $CURRENT_BRANCH =~ ^release\/v?([0-9\.]+)$ ]]; then
  47. CURRENT_VERSION=${BASH_REMATCH[1]}
  48. else
  49. echo 'Current branch does not match pattern.';
  50. exit 0;
  51. fi
  52.  
  53. # Find first next version in all branches
  54. # Loop through all branches and compare each item to current and next versions
  55. eval "$(git for-each-ref --shell --format='branches+=(%(refname:strip=2))' refs/heads/)"
  56. for branch in "${branches[@]}"; do
  57. if [[ $branch =~ ^release\/v?([0-9\.]+)$ ]]; then
  58. version=${BASH_REMATCH[1]}
  59.  
  60. # is branch version greater then current version? Should be 1
  61. vercomp $version $CURRENT_VERSION
  62. current_comp=$?
  63.  
  64. # is branch version lower then current next version? Should be 2
  65. vercomp $version $NEXT_VERSION
  66. next_comp=$?
  67.  
  68. if [[ $current_comp = 1 && ( $next_comp = 2 || -z "$NEXT_VERSION" ) ]]; then
  69. NEXT_VERSION=$version
  70. NEXT_BRANCH=$branch
  71. fi
  72. fi
  73. done
  74. echo "Next version after $CURRENT_VERSION is $NEXT_VERSION"
  75.  
  76.  
  77. # Now merge branch to new next branch
  78. #
  79. if [[ -n "$NEXT_VERSION" ]]; then
  80. git checkout $NEXT_VERSION && git merge $LAST_COMMIT
  81. git checkout $CURRENT_BRANCH
  82. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement