Commit d2240e40 authored by Benedikt Böhm's avatar Benedikt Böhm

Merge branch 'feature/configurable-main-branches' into develop

parents 4ea07a2c 96f44c07
...@@ -3,9 +3,6 @@ TODO-list ...@@ -3,9 +3,6 @@ TODO-list
General configuration General configuration
--------------------- ---------------------
- Support configurable naming for fixed branch names 'master' and 'develop'
- Support configurable naming conventions (i.e. name prefixes) for supporting
branches, instead of fixed 'release-\*' and 'hotfix-\*'
Release branch support Release branch support
---------------------- ----------------------
......
...@@ -18,6 +18,11 @@ if [ "$DEBUG" = "yes" ]; then ...@@ -18,6 +18,11 @@ if [ "$DEBUG" = "yes" ]; then
set -x set -x
fi fi
export GITFLOW_DIR=$(dirname "$0")
export MASTER_BRANCH=$(git config --get gitflow.branch.master || echo master)
export DEVELOP_BRANCH=$(git config --get gitflow.branch.develop || echo develop)
export ORIGIN=$(git config --get gitflow.origin || echo origin)
warn() { echo "$@" >&2; } warn() { echo "$@" >&2; }
die() { warn "$@"; exit 1; } die() { warn "$@"; exit 1; }
has() { [[ " ${*:2} " == *" $1 "* ]]; } has() { [[ " ${*:2} " == *" $1 "* ]]; }
...@@ -36,8 +41,6 @@ main() { ...@@ -36,8 +41,6 @@ main() {
exit 1 exit 1
fi fi
export GITFLOW_DIR=$(dirname "$0")
# sanity checks # sanity checks
ACTION="$1" ACTION="$1"
BTYPE="$2" BTYPE="$2"
......
...@@ -34,13 +34,14 @@ usage() { ...@@ -34,13 +34,14 @@ usage() {
parse_args() { parse_args() {
NAME="$1" NAME="$1"
BASE="${2:-develop}" BASE="${2:-$DEVELOP_BRANCH}"
if [ "$NAME" = "" ]; then if [ "$NAME" = "" ]; then
echo "Missing argument <name>." echo "Missing argument <name>."
usage usage
exit 1 exit 1
fi fi
BRANCH=feature/$NAME PREFIX=$(git config --get gitflow.prefix.feature || echo feature/)
BRANCH=$PREFIX$NAME
} }
cmd_help() { cmd_help() {
...@@ -54,9 +55,9 @@ cmd_start() { ...@@ -54,9 +55,9 @@ cmd_start() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
gitflow_require_branch_absent $BRANCH gitflow_require_branch_absent $BRANCH
if [ "$BASE" = "develop" ]; then if [ "$BASE" = "$DEVELOP_BRANCH" ]; then
git fetch origin develop git fetch $ORIGIN $DEVELOP_BRANCH
gitflow_require_branches_equal develop origin/develop gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
fi fi
# create branch # create branch
...@@ -79,12 +80,12 @@ cmd_finish() { ...@@ -79,12 +80,12 @@ cmd_finish() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
gitflow_require_branch $BRANCH gitflow_require_branch $BRANCH
git fetch origin git fetch $ORIGIN
if has origin/$BRANCH $REMOTE_BRANCHES; then if has $ORIGIN/$BRANCH $REMOTE_BRANCHES; then
gitflow_require_branches_equal $BRANCH origin/$BRANCH gitflow_require_branches_equal $BRANCH $ORIGIN/$BRANCH
fi fi
if [ "$BASE" = "develop" ]; then if [ "$BASE" = "$DEVELOP_BRANCH" ]; then
gitflow_require_branches_equal develop origin/develop gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
fi fi
# merge into BASE # merge into BASE
...@@ -97,7 +98,7 @@ cmd_finish() { ...@@ -97,7 +98,7 @@ cmd_finish() {
# delete branch # delete branch
# TODO: How do we handle merge conflicts here?? # TODO: How do we handle merge conflicts here??
git push origin :refs/heads/$BRANCH git push $ORIGIN :refs/heads/$BRANCH
git branch -d $BRANCH git branch -d $BRANCH
echo echo
...@@ -115,15 +116,15 @@ cmd_publish() { ...@@ -115,15 +116,15 @@ cmd_publish() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
gitflow_require_branch $BRANCH gitflow_require_branch $BRANCH
git fetch origin git fetch $ORIGIN
gitflow_require_branch_absent origin/$BRANCH gitflow_require_branch_absent $ORIGIN/$BRANCH
# create remote branch # create remote branch
git push origin $BRANCH:refs/heads/$BRANCH git push $ORIGIN $BRANCH:refs/heads/$BRANCH
git fetch origin git fetch $ORIGIN
# configure remote tracking # configure remote tracking
git config branch.$BRANCH.remote origin git config branch.$BRANCH.remote $ORIGIN
git config branch.$BRANCH.merge refs/heads/$BRANCH git config branch.$BRANCH.merge refs/heads/$BRANCH
git checkout $BRANCH git checkout $BRANCH
...@@ -141,11 +142,11 @@ cmd_track() { ...@@ -141,11 +142,11 @@ cmd_track() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
gitflow_require_branch_absent $BRANCH gitflow_require_branch_absent $BRANCH
git fetch origin git fetch $ORIGIN
gitflow_require_branch origin/$BRANCH gitflow_require_branch $ORIGIN/$BRANCH
# create tracking branch # create tracking branch
git checkout -b $BRANCH origin/$BRANCH git checkout -b $BRANCH $ORIGIN/$BRANCH
echo echo
echo "Summary of actions:" echo "Summary of actions:"
......
...@@ -29,13 +29,14 @@ usage() { ...@@ -29,13 +29,14 @@ usage() {
parse_args() { parse_args() {
VERSION="$1" VERSION="$1"
BASE="${2:-master}" BASE="${2:-$MASTER_BRANCH}"
if [ "$VERSION" = "" ]; then if [ "$VERSION" = "" ]; then
echo "Missing argument <version>." echo "Missing argument <version>."
usage usage
exit 1 exit 1
fi fi
BRANCH=hotfix/$VERSION PREFIX=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
BRANCH=$PREFIX$VERSION
} }
cmd_help() { cmd_help() {
...@@ -48,8 +49,8 @@ cmd_start() { ...@@ -48,8 +49,8 @@ cmd_start() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
git fetch origin git fetch $ORIGIN
gitflow_require_branches_equal master origin/master gitflow_require_branches_equal $MASTER_BRANCH $ORIGIN/$MASTER_BRANCH
gitflow_require_branch_absent $BRANCH gitflow_require_branch_absent $BRANCH
# create branch # create branch
...@@ -74,10 +75,10 @@ cmd_finish() { ...@@ -74,10 +75,10 @@ cmd_finish() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
git fetch origin master git fetch $ORIGIN $MASTER_BRANCH
git fetch origin develop git fetch $ORIGIN $DEVELOP_BRANCH
gitflow_require_branches_equal master origin/master gitflow_require_branches_equal $MASTER_BRANCH $ORIGIN/$MASTER_BRANCH
gitflow_require_branches_equal develop origin/develop gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
# merge into BASE # merge into BASE
git checkout $BASE git checkout $BASE
...@@ -86,8 +87,8 @@ cmd_finish() { ...@@ -86,8 +87,8 @@ cmd_finish() {
# merge into develop if we fixed a master issue # merge into develop if we fixed a master issue
# TODO: merge into support branch # TODO: merge into support branch
if [ "$BASE" = "master" ]; then if [ "$BASE" = "$MASTER_BRANCH" ]; then
git checkout develop git checkout $DEVELOP_BRANCH
git merge --no-ff $BRANCH git merge --no-ff $BRANCH
fi fi
...@@ -99,11 +100,11 @@ cmd_finish() { ...@@ -99,11 +100,11 @@ cmd_finish() {
echo echo
echo "Summary of actions:" echo "Summary of actions:"
echo "- Latest objects have been fetched from 'origin'" echo "- Latest objects have been fetched from '$ORIGIN'"
echo "- Hotfix branch has been merged into '$BASE'" echo "- Hotfix branch has been merged into '$BASE'"
echo "- The hotfix was tagged 'v$VERSION'" echo "- The hotfix was tagged 'v$VERSION'"
if [ "$BASE" = "master" ]; then if [ "$BASE" = "$MASTER_BRANCH" ]; then
echo "- Hotfix branch has been back-merged into 'develop'" echo "- Hotfix branch has been back-merged into '$DEVELOP_BRANCH'"
fi fi
echo "- Hotfix branch '$BRANCH' has been deleted" echo "- Hotfix branch '$BRANCH' has been deleted"
echo echo
......
...@@ -35,7 +35,8 @@ parse_args() { ...@@ -35,7 +35,8 @@ parse_args() {
usage usage
exit 1 exit 1
fi fi
BRANCH=release/$VERSION PREFIX=$(git config --get gitflow.prefix.release || echo release/)
BRANCH=$PREFIX$VERSION
} }
cmd_help() { cmd_help() {
...@@ -48,16 +49,16 @@ cmd_start() { ...@@ -48,16 +49,16 @@ cmd_start() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
git fetch origin git fetch $ORIGIN
gitflow_require_branches_equal develop origin/develop gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
gitflow_require_branch_absent $BRANCH gitflow_require_branch_absent $BRANCH
# create branch # create branch
git checkout -b $BRANCH develop git checkout -b $BRANCH $DEVELOP_BRANCH
echo echo
echo "Summary of actions:" echo "Summary of actions:"
echo "- A new branch '$BRANCH' was created, based on 'develop'" echo "- A new branch '$BRANCH' was created, based on '$DEVELOP_BRANCH'"
echo "- You are now on branch '$BRANCH'" echo "- You are now on branch '$BRANCH'"
echo echo
echo "Follow-up actions:" echo "Follow-up actions:"
...@@ -74,17 +75,17 @@ cmd_finish() { ...@@ -74,17 +75,17 @@ cmd_finish() {
# sanity checks # sanity checks
gitflow_check_clean_working_tree gitflow_check_clean_working_tree
git fetch origin git fetch $ORIGIN
gitflow_require_branches_equal master origin/master gitflow_require_branches_equal $MASTER_BRANCH $ORIGIN/$MASTER_BRANCH
gitflow_require_branches_equal develop origin/develop gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
# merge into master # merge into master
git checkout master git checkout $MASTER_BRANCH
git merge --no-ff $BRANCH git merge --no-ff $BRANCH
git tag v$VERSION git tag v$VERSION
# merge into develop # merge into develop
git checkout develop git checkout $DEVELOP_BRANCH
git merge --no-ff $BRANCH git merge --no-ff $BRANCH
# delete branch # delete branch
...@@ -95,10 +96,10 @@ cmd_finish() { ...@@ -95,10 +96,10 @@ cmd_finish() {
echo echo
echo "Summary of actions:" echo "Summary of actions:"
echo "- Latest objects have been fetched from 'origin'" echo "- Latest objects have been fetched from '$ORIGIN'"
echo "- Release branch has been merged into 'master'" echo "- Release branch has been merged into '$MASTER_BRANCH'"
echo "- The release was tagged 'v$VERSION'" echo "- The release was tagged 'v$VERSION'"
echo "- Release branch has been back-merged into 'develop'" echo "- Release branch has been back-merged into '$DEVELOP_BRANCH'"
echo "- Release branch '$BRANCH' has been deleted" echo "- Release branch '$BRANCH' has been deleted"
echo echo
} }
...@@ -24,7 +24,8 @@ parse_args() { ...@@ -24,7 +24,8 @@ parse_args() {
usage usage
exit 1 exit 1
fi fi
BRANCH=support/$VERSION PREFIX=$(git config --get gitflow.prefix.support || echo support/)
BRANCH=$PREFIX$VERSION
} }
cmd_help() { cmd_help() {
...@@ -42,9 +43,9 @@ cmd_start() { ...@@ -42,9 +43,9 @@ cmd_start() {
git checkout -b $BRANCH $BASE git checkout -b $BRANCH $BASE
# publish branch # publish branch
git push origin $BRANCH:refs/heads/$BRANCH git push $ORIGIN $BRANCH:refs/heads/$BRANCH
git fetch origin git fetch $ORIGIN
git config branch.$BRANCH.remote origin git config branch.$BRANCH.remote $ORIGIN
git config branch.$BRANCH.merge refs/heads/$BRANCH git config branch.$BRANCH.merge refs/heads/$BRANCH
git co $BRANCH git co $BRANCH
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment