blob: a89b05fad59a1fb33a21115a0e6e37154cb76be2 [file] [log] [blame]
Benedikt Böhm00ccea62010-01-26 12:39:36 +01001#
Vincent Driessen6c2d30b2010-01-26 22:18:36 +01002# git-flow -- A collection of Git extensions to provide high-level
3# repository operations for Vincent Driessen's branching model.
Benedikt Böhm00ccea62010-01-26 12:39:36 +01004#
5# Original blog post presenting this model is found at:
6# http://nvie.com/archives/323
7#
8# Feel free to contribute to this project at:
9# http://github.com/nvie/gitflow
10#
11# Copyright (c) 2010 by Vincent Driessen
12# Copyright (c) 2010 by Benedikt Böhm
13#
14
Benedikt Böhm49dd62b2010-01-28 00:51:15 +010015VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
16PREFIX=$(git config --get gitflow.prefix.support || echo support/)
17
Benedikt Böhm00ccea62010-01-26 12:39:36 +010018usage() {
Vincent Driessenb866b012010-01-28 01:01:53 +010019 echo "usage: git flow support [list]"
Vincent Driessen170dc742010-01-28 00:20:51 +010020 echo " git flow support start <version> [<base>]"
Benedikt Böhm00ccea62010-01-26 12:39:36 +010021}
22
Vincent Driessenb866b012010-01-28 01:01:53 +010023cmd_default() {
24 cmd_list "$@"
Benedikt Böhm00ccea62010-01-26 12:39:36 +010025}
26
Vincent Driessenb866b012010-01-28 01:01:53 +010027cmd_list() {
Vincent Driessen170dc742010-01-28 00:20:51 +010028 SUPPORT_BRANCHES="$(echo "$LOCAL_BRANCHES" | grep "^$PREFIX")"
29 if [ -z "$SUPPORT_BRANCHES" ]; then
30 warn "No support branches exist."
31 exit 0
32 fi
33 echo "$SUPPORT_BRANCHES" | sed "s?^$PREFIX??g"
34}
35
Benedikt Böhm00ccea62010-01-26 12:39:36 +010036cmd_help() {
37 usage
38 exit 0
39}
40
Benedikt Böhm00ccea62010-01-26 12:39:36 +010041parse_args() {
Benedikt Böhm00ccea62010-01-26 12:39:36 +010042 VERSION="$1"
43 BASE="${2:-${VERSION_PREFIX}${VERSION}}"
44 if [ "$VERSION" = "" ]; then
45 echo "Missing argument <version>."
46 usage
47 exit 1
48 fi
49 BRANCH=$PREFIX$VERSION
50}
51
Benedikt Böhm00ccea62010-01-26 12:39:36 +010052cmd_start() {
53 parse_args "$@"
54
55 # sanity checks
Vincent Driessen48386442010-01-29 10:30:40 +010056 gitflow_require_clean_working_tree
Benedikt Böhm00ccea62010-01-26 12:39:36 +010057
58 # create branch
59 git checkout -b $BRANCH $BASE
60
61 # publish branch
Benedikt Böhm350e7152010-01-26 13:05:05 +010062 git push $ORIGIN $BRANCH:refs/heads/$BRANCH
Benedikt Böhm4d222272010-01-26 14:46:56 +010063 git fetch -q $ORIGIN
Benedikt Böhm350e7152010-01-26 13:05:05 +010064 git config branch.$BRANCH.remote $ORIGIN
Benedikt Böhm00ccea62010-01-26 12:39:36 +010065 git config branch.$BRANCH.merge refs/heads/$BRANCH
Vincent Driessena7d45272010-01-26 23:49:47 +010066 git checkout $BRANCH
Benedikt Böhm00ccea62010-01-26 12:39:36 +010067
68 echo
69 echo "Summary of actions:"
70 echo "- A new remote branch '$BRANCH' was created, based on '$BASE'"
71 echo "- A new tracking branch '$BRANCH' was created"
72 echo "- You are now on branch '$BRANCH'"
73 echo
74}