#!/bin/sh
#
# gitflow -- A collection of Git wrapper scripts to provide high-level
# repository operations for Vincent Driessen's branching model:
# 
# Original blog post presenting this model is found at:
#    http://nvie.com/archives/323
# 
# Feel free to contribute to this project at:
#    http://github.com/nvie/gitflow
#
# Copyright (c) 2010 by Vincent Driessen
#

usage() {
	echo "usage: gitflow start hotfix <release>"
	echo "       gitflow finish hotfix <release>"
	# TODO
	#echo ""
	#echo "options:"
	#echo "--option    Explanation"
	#echo ""
	#echo "start-only options:"
	#echo "--option    Explanation"
	#echo ""
	#echo "finish-only options:"
	#echo "--push      Push to the origin repo when finished"
}

parse_args() {
	RELEASE="$1"
	if [ "$RELEASE" = "" ]; then
		echo "Missing argument <release>"
		usage
		exit 1
	fi
	HOTFIX_BRANCH="hotfix-$RELEASE"
}

start() {
	parse_args "$@"

	# Checks
	gitflow_check_clean_working_tree
	gitflow_require_branches_equal 'master' 'origin/master'
	gitflow_require_branch_absent "$HOTFIX_BRANCH"

	# All checks passed, ready to roll
	git checkout -b "$HOTFIX_BRANCH" master

	echo ""
	echo "Summary of actions:"
	echo "- A new branch '$HOTFIX_BRANCH' was created, based on 'master'"
	echo "- You are now on branch '$HOTFIX_BRANCH'"
	echo ""
	echo "Follow-up actions:"
	echo "- Bump the version number now!"
	echo "- Start committing your hot fixes"
	echo "- When done, run:"
	echo ""
	echo "     gitflow finish hotfix '$HOTFIX_BRANCH'"
}

finish() {
	parse_args "$@"

	# Checks
	gitflow_check_clean_working_tree

	git fetch origin develop	# TODO: Make a flag to skip these fetches
	git fetch origin master		# TODO: Make a flag to skip these fetches
	gitflow_require_branches_equal 'master' 'origin/master'
	gitflow_require_branches_equal 'develop' 'origin/develop'

	# All checks passed, ready to roll
	git checkout master
	git merge --no-ff "$HOTFIX_BRANCH"
	git tag "$RELEASE"
	git checkout develop
	git merge --no-ff "$HOTFIX_BRANCH"
	git branch -d "$HOTFIX_BRANCH"

	# TODO: Implement an optional push to master
	# git push origin develop; git push origin master; git push --tags origin

	echo ""
	echo "Summary of actions:"
	echo "- Latest objects have been fetched from 'origin'"
	echo "- Hotfix branch has been merged into 'master'"
	echo "- The hotfix was tagged '$RELEASE'"
	echo "- Hotfix branch has been back-merged into 'develop'"
	echo "- Hotfix branch '$HOTFIX_BRANCH' has been deleted"
	echo ""
}

