Merge branch 'release/0.3'
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..9de970d
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,11 @@
+Authors are (ordered by first commit date):
+
+- Vincent Driessen
+- Benedikt Böhm
+- Daniel Truemper
+- Jason L. Shiffer
+- Randy Merrill
+- Rick Osborne
+- Mark Derricutt
+
+Portions derived from other open source works are clearly marked.
diff --git a/Changes.mdown b/Changes.mdown
new file mode 100644
index 0000000..c7b92c8
--- /dev/null
+++ b/Changes.mdown
@@ -0,0 +1,50 @@
+0.3:
+----
+Release date: **2010/07/22**
+
+* New subcommands for `git flow feature`:
+ - **checkout**:
+ For easily checking out features by their short name. Even allows
+ unique prefixes as arguments (see below).
+
+ - **pull**:
+ This subcommand allows you to painlessly work on a feature branch
+ together with another peer. This is especially valuable for doing
+ peer reviews of other people's code. For more detailed info, see the
+ [commit log][1].
+
+* Easier addressing of branch names by using name prefixes.
+ For example, when using:
+
+ git flow feature finish fo
+
+ this automatically finishes the feature branch `foobar` if that's the only
+ feature branch name starting with `fo`.
+
+* No force flag anymore for new feature branches
+ `git flow feature start` lost its `-f` (force) flag. You now don't
+ have to be in a clean repo anymore to start a new feature branch. This
+ avoids the manual `git stash`, `git flow feature start`, `git stash
+ pop` cycle.
+
+* You can use `git-flow` in stand-alone repo's now.
+ This means it does not assume you have an `origin` repository.
+ (Thanks [Mark][2].)
+
+* No commands fetch from `origin` by default anymore.
+ There were some issues related to disabling this flag on some platforms.
+
+* Init guesses branch names you may want to use for `develop` and `master`.
+
+* Added super-easy installation script. (Thanks [Rick][3].)
+
+* Added BSD license.
+
+[1]: http://github.com/nvie/gitflow/commit/f68d405cc3a11e9df3671f567658a6ab6ed8e0a1
+[2]: http://github.com/talios
+[3]: http://github.com/rickosborne
+
+
+Older versions
+--------------
+No change history is recorded for pre-0.3 releases.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..cedd182
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,26 @@
+Copyright 2010 Vincent Driessen. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies,
+either expressed or implied, of Vincent Driessen.
diff --git a/Makefile b/Makefile
index bb1117e..6f82544 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,31 @@
+#
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
+#
prefix=/usr/local
# files that need mode 755
diff --git a/README.mdown b/README.mdown
index aabdb4d..35bd90a 100644
--- a/README.mdown
+++ b/README.mdown
@@ -5,13 +5,14 @@
blog post").
-> **IMPORTANT NOTE:**
-> In release 0.2, the order of the arguments has changed to provide a logical
-> subcommand hierarchy.
-
-
Installing git-flow
-------------------
+The easiest way to install git-flow is using Rick Osborne's excellent
+git-flow installer, which can be run using the following command:
+
+ $ wget -q -O - http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh
+
+If you prefer a manual installation, please use the following instructions.
After downloading the sources from Github, also fetch the submodules:
$ git submodule init
@@ -30,6 +31,21 @@
directory.
+Integration with your shell
+---------------------------
+For those who use the [Bash](http://www.gnu.org/software/bash/) shell, please
+check out the excellent work on the
+[git-flow-completion](http://github.com/bobthecow/git-flow-completion) project
+by [bobthecow](http://github.com/bobthecow). It offers tab-completion for all
+git-flow subcommands and branch names.
+
+If you are a [zsh](http://www.zsh.org) user with some plugin-writing
+experience, please help us develop a
+[completion plugin](http://github.com/bobthecow/git-flow-completion/issues#issue/1)
+for zsh, too. Please contact me on [Github](http://github.com/inbox/new/nvie)
+or [Twitter](http://twitter.com/nvie) to discuss details.
+
+
Please help out
---------------
This project is still under development. Feedback and suggestions are very
@@ -37,7 +53,20 @@
list](http://github.com/nvie/gitflow/issues) on Github to provide that
feedback.
-Feel free to fork this repo and to commit your additions.
+Feel free to fork this repo and to commit your additions. For a list of all
+contributors, please see the [AUTHORS](AUTHORS) file.
+
+Any questions, tips, or general discussion can be posted to our Google group:
+http://groups.google.com/group/gitflow-users
+
+
+License terms
+-------------
+git-flow is published under the liberal terms of the BSD License, see the
+[LICENSE](LICENSE) file. Although the BSD License does not require you to share
+any modifications you make to the source code, you are very much encouraged and
+invited to contribute back your modifications to the community, preferably
+in a Github fork, of course.
Typical usage:
diff --git a/contrib/gitflow-installer.sh b/contrib/gitflow-installer.sh
new file mode 100644
index 0000000..33dbe58
--- /dev/null
+++ b/contrib/gitflow-installer.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# git-flow make-less installer for *nix systems, by Rick Osborne
+# Based on the git-flow core Makefile:
+# http://github.com/nvie/gitflow/blob/master/Makefile
+
+# Licensed under the same restrictions as git-flow:
+# http://github.com/nvie/gitflow/blob/develop/LICENSE
+
+# Does this need to be smarter for each host OS?
+if [ -z "$INSTALL_PREFIX" ] ; then
+ INSTALL_PREFIX="/usr/local/bin"
+fi
+
+if [ -z "$REPO_NAME" ] ; then
+ REPO_NAME="gitflow"
+fi
+
+if [ -z "$REPO_HOME" ] ; then
+ REPO_HOME="http://github.com/nvie/gitflow.git"
+fi
+
+EXEC_FILES="git-flow"
+SCRIPT_FILES="git-flow-init git-flow-feature git-flow-hotfix git-flow-release git-flow-support git-flow-version gitflow-common gitflow-shFlags"
+SUBMODULE_FILE="gitflow-shFlags"
+
+echo "### gitflow no-make installer ###"
+
+case "$1" in
+ uninstall)
+ echo "Uninstalling git-flow from $INSTALL_PREFIX"
+ if [ -d "$INSTALL_PREFIX" ] ; then
+ for script_file in $SCRIPT_FILES $EXEC_FILES ; do
+ echo "rm -vf $INSTALL_PREFIX/$script_file"
+ rm -vf "$INSTALL_PREFIX/$script_file"
+ done
+ else
+ echo "The '$INSTALL_PREFIX' directory was not found."
+ echo "Do you need to set INSTALL_PREFIX ?"
+ fi
+ exit
+ ;;
+ help)
+ echo "Usage: [environment] gitflow-installer.sh [install|uninstall]"
+ echo "Environment:"
+ echo " INSTALL_PREFIX=$INSTALL_PREFIX"
+ echo " REPO_HOME=$REPO_HOME"
+ echo " REPO_NAME=$REPO_NAME"
+ exit
+ ;;
+ *)
+ echo "Installing git-flow to $INSTALL_PREFIX"
+ if [[ -d "$REPO_NAME" && -d "$REPO_NAME/.git" ]] ; then
+ echo "Using existing repo: $REPO_NAME"
+ else
+ echo "Cloning repo from GitHub to $REPO_NAME"
+ git clone "$REPO_HOME" "$REPO_NAME"
+ fi
+ if [ -f "$REPO_NAME/$SUBMODULE_FILE" ] ; then
+ echo "Submodules look up to date"
+ else
+ echo "Updating submodules"
+ lastcwd=$PWD
+ cd "$REPO_NAME"
+ git submodule init
+ git submodule update
+ cd "$lastcwd"
+ fi
+ install -v -d -m 0755 "$INSTALL_PREFIX"
+ for exec_file in $EXEC_FILES ; do
+ install -v -m 0755 "$REPO_NAME/$exec_file" "$INSTALL_PREFIX"
+ done
+ for script_file in $SCRIPT_FILES ; do
+ install -v -m 0644 "$REPO_NAME/$script_file" "$INSTALL_PREFIX"
+ done
+ exit
+ ;;
+esac
diff --git a/git-flow b/git-flow
index 84adc05..e95d4ad 100755
--- a/git-flow
+++ b/git-flow
@@ -4,13 +4,37 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
# enable debug mode
@@ -78,11 +102,4 @@
cmd_$SUBACTION "$@"
}
-# helper functions for common reuse
-max() { if [ "$1" -gt "$2" ]; then echo "$1"; else echo "$2"; fi; }
-
-# convenience functions for checking whether flags have been set or not
-flag() { eval FLAG=\$FLAGS_$1; [ $FLAG -eq $FLAGS_TRUE ]; }
-noflag() { eval FLAG=\$FLAGS_$1; [ $FLAG -ne $FLAGS_TRUE ]; }
-
main "$@"
diff --git a/git-flow-feature b/git-flow-feature
index d8d4bb7..2fdba25 100644
--- a/git-flow-feature
+++ b/git-flow-feature
@@ -3,13 +3,37 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
require_git_repo
@@ -19,12 +43,14 @@
usage() {
echo "usage: git flow feature [list] [-v]"
- echo " git flow feature start [-Ff] <name> [<base>]"
+ echo " git flow feature start [-F] <name> [<base>]"
echo " git flow feature finish [-rF] <name|nameprefix>"
echo " git flow feature publish <name>"
echo " git flow feature track <name>"
echo " git flow feature diff [<name|nameprefix>]"
echo " git flow feature rebase [-i] [<name|nameprefix>]"
+ echo " git flow feature checkout [<name|nameprefix>]"
+ echo " git flow feature pull <remote> [<name>]"
}
cmd_default() {
@@ -41,6 +67,11 @@
feature_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
if [ -z "$feature_branches" ]; then
warn "No feature branches exist."
+ warn ""
+ warn "You can start a new feature branch:"
+ warn ""
+ warn " git flow feature start <name> [<base>]"
+ warn ""
exit 0
fi
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
@@ -112,45 +143,63 @@
esac
}
+use_current_feature_branch_name() {
+ local current_branch=$(git_current_branch)
+ if startswith "$current_branch" "$PREFIX"; then
+ BRANCH=$current_branch
+ NAME=${BRANCH#$PREFIX}
+ else
+ warn "The current HEAD is no feature branch."
+ warn "Please specify a <name> argument."
+ exit 1
+ fi
+}
+
expand_nameprefix_arg_or_current() {
if [ "$NAME" != "" ]; then
expand_nameprefix_arg
require_branch "$PREFIX$NAME"
else
- local current_branch=$(git_current_branch)
- if startswith "$current_branch" "$PREFIX"; then
- BRANCH=$current_branch
- NAME=${BRANCH#$PREFIX}
- else
- warn "The current HEAD is no feature branch."
- warn "To diff a feature, specify a <name> argument."
- usage
- exit 1
- fi
+ use_current_feature_branch_name
fi
}
-parse_args() {
+name_or_current() {
+ if [ -z "$NAME" ]; then
+ use_current_feature_branch_name
+ fi
+}
+
+parse_cmdline() {
# parse options
FLAGS "$@" || exit $?
eval set -- "${FLAGS_ARGV}"
+}
+
+parse_args() {
+ parse_cmdline "$@"
# read arguments into global variables
NAME=$1
BRANCH=$PREFIX$NAME
}
+parse_remote_name() {
+ parse_cmdline "$@"
+
+ # read arguments into global variables
+ REMOTE=$1
+ NAME=$2
+ BRANCH=$PREFIX$NAME
+}
+
cmd_start() {
DEFINE_boolean fetch false 'fetch from origin before performing local operation' F
- DEFINE_boolean force false 'force creation of feature branch (ignores dirty working tree)' f
parse_args "$@"
BASE=${2:-$DEVELOP_BRANCH}
require_name_arg
# sanity checks
- if noflag force; then
- require_clean_working_tree
- fi
require_branch_absent "$BRANCH"
# update the local repo with remote changes, if asked
@@ -158,7 +207,11 @@
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH"
fi
- require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ # if the origin branch counterpart exists, assert that the local branch
+ # isn't behind it (to avoid unnecessary rebasing)
+ if git_branch_exists "$ORIGIN/$DEVELOP_BRANCH"; then
+ require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ fi
# create branch
if ! git checkout -b "$BRANCH" "$BASE"; then
@@ -172,7 +225,7 @@
echo ""
echo "Now, start committing on your feature. When done, use:"
echo ""
- echo " git flow finish feature $NAME"
+ echo " git flow feature finish $NAME"
echo
}
@@ -229,14 +282,18 @@
require_clean_working_tree
# update local repo with remote changes first, if asked
- if flag fetch; then
- git fetch -q "$ORIGIN" "$BRANCH"
+ if has "$ORIGIN/$BRANCH" "$(git_remote_branches)"; then
+ if flag fetch; then
+ git fetch -q "$ORIGIN" "$BRANCH"
+ fi
fi
if has "$ORIGIN/$BRANCH" "$(git_remote_branches)"; then
require_branches_equal "$BRANCH" "$ORIGIN/$BRANCH"
fi
- require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ if has "$ORIGIN/$DEVELOP_BRANCH" "$(git_remote_branches)"; then
+ require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ fi
# if the user wants to rebase, do that first
if flag rebase; then
@@ -286,7 +343,7 @@
if flag fetch; then
git push "$ORIGIN" ":refs/heads/$BRANCH"
fi
- git branch -d "$BRANCH"
+ git branch -D "$BRANCH"
echo
echo "Summary of actions:"
@@ -361,6 +418,22 @@
fi
}
+cmd_checkout() {
+ parse_args "$@"
+
+ if [ "$NAME" != "" ]; then
+ expand_nameprefix_arg
+ git checkout "$BRANCH"
+ else
+ die "Name a feature branch explicitly."
+ fi
+}
+
+cmd_co() {
+ # Alias for checkout
+ cmd_checkout "$@"
+}
+
cmd_rebase() {
DEFINE_boolean interactive false 'do an interactive rebase' i
parse_args "$@"
@@ -376,3 +449,51 @@
fi
git rebase $OPTS "$DEVELOP_BRANCH"
}
+
+avoid_accidental_cross_branch_action() {
+ local current_branch=$(git_current_branch)
+ if [ "$BRANCH" != "$current_branch" ]; then
+ warn "Trying to pull from '$BRANCH' while currently on branch '$current_branch'."
+ warn "To avoid unintended merges, git-flow aborted."
+ return 1
+ fi
+ return 0
+}
+
+cmd_pull() {
+ #DEFINE_string prefix false 'alternative remote feature branch name prefix' p
+ parse_remote_name "$@"
+
+ if [ -z "$REMOTE" ]; then
+ die "Name a remote explicitly."
+ fi
+ name_or_current
+
+ # To avoid accidentally merging different feature branches into each other,
+ # die if the current feature branch differs from the requested $NAME
+ # argument.
+ local current_branch=$(git_current_branch)
+ if startswith "$current_branch" "$PREFIX"; then
+ # we are on a local feature branch already, so $BRANCH must be equal to
+ # the current branch
+ avoid_accidental_cross_branch_action || die
+ fi
+
+ require_clean_working_tree
+
+ if git_branch_exists "$BRANCH"; then
+ # Again, avoid accidental merges
+ avoid_accidental_cross_branch_action || die
+
+ # we already have a local branch called like this, so simply pull the
+ # remote changes in
+ git pull -q "$REMOTE" "$BRANCH" || die "Failed to pull from remote '$REMOTE'."
+ echo "Pulled $REMOTE's changes into $BRANCH."
+ else
+ # setup the local branch clone for the first time
+ git fetch -q "$REMOTE" "$BRANCH" || die "Fetch failed." # stores in FETCH_HEAD
+ git branch --no-track "$BRANCH" FETCH_HEAD || die "Branch failed."
+ git checkout -q "$BRANCH" || die "Checking out new local branch failed."
+ echo "Created local branch $BRANCH based on $REMOTE's $BRANCH."
+ fi
+}
diff --git a/git-flow-hotfix b/git-flow-hotfix
index 5866178..390e537 100644
--- a/git-flow-hotfix
+++ b/git-flow-hotfix
@@ -3,13 +3,37 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
require_git_repo
@@ -38,6 +62,11 @@
hotfix_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
if [ -z "$hotfix_branches" ]; then
warn "No hotfix branches exist."
+ warn ""
+ warn "You can start a new hotfix branch:"
+ warn ""
+ warn " git flow hotfix start <name> [<base>]"
+ warn ""
exit 0
fi
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
@@ -124,7 +153,7 @@
}
cmd_start() {
- DEFINE_boolean fetch true "fetch from $ORIGIN before performing finish" F
+ DEFINE_boolean fetch false "fetch from $ORIGIN before performing finish" F
parse_args "$@"
BASE=${2:-$MASTER_BRANCH}
require_version_arg
@@ -138,7 +167,9 @@
if flag fetch; then
git fetch -q "$ORIGIN" "$MASTER_BRANCH"
fi
- require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
+ if has "$ORIGIN/$MASTER_BRANCH" "$(git_remote_branches)"; then
+ require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
+ fi
# create branch
git checkout -b "$BRANCH" "$BASE"
@@ -158,7 +189,7 @@
}
cmd_finish() {
- DEFINE_boolean fetch true "fetch from $ORIGIN before performing finish" F
+ DEFINE_boolean fetch false "fetch from $ORIGIN before performing finish" F
DEFINE_boolean sign false "sign the release tag cryptographically" s
DEFINE_string signingkey "" "use the given GPG-key for the digital signature (implies -s)" u
DEFINE_string message "" "use the given tag message" m
@@ -180,8 +211,12 @@
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH" || \
die "Could not fetch $DEVELOP_BRANCH from $ORIGIN."
fi
- require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
- require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ if has "$ORIGIN/$MASTER_BRANCH" "$(git_remote_branches)"; then
+ require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
+ fi
+ if has "$ORIGIN/$DEVELOP_BRANCH" "$(git_remote_branches)"; then
+ require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ fi
# try to merge into master
# in case a previous attempt to finish this release branch has failed,
diff --git a/git-flow-init b/git-flow-init
index ffc9e96..461ee8c 100644
--- a/git-flow-init
+++ b/git-flow-init
@@ -3,13 +3,37 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
usage() {
@@ -61,7 +85,7 @@
if [ "$branch_count" -eq 0 ]; then
echo "No branches exist yet. Base branches must be created now."
should_check_existence=NO
- default_suggestion=master
+ default_suggestion=$(git config --get gitflow.branch.master || echo master)
else
echo
echo "Which branch should be used for bringing forth production releases?"
@@ -69,7 +93,8 @@
should_check_existence=YES
default_suggestion=
- for guess in 'production' 'main' 'master'; do
+ for guess in $(git config --get gitflow.branch.master) \
+ 'production' 'main' 'master'; do
if git_local_branch_exists "$guess"; then
default_suggestion="$guess"
break
@@ -77,7 +102,7 @@
done
fi
- echo "Branch name for production releases: [$default_suggestion] \c"
+ printf "Branch name for production releases: [$default_suggestion] "
read answer
master_branch=${answer:-$default_suggestion}
@@ -103,7 +128,7 @@
branch_count=$(git_local_branches | grep -v "^${master_branch}\$" | wc -l)
if [ "$branch_count" -eq 0 ]; then
should_check_existence=NO
- default_suggestion=develop
+ default_suggestion=$(git config --get gitflow.branch.develop || echo develop)
else
echo
echo "Which branch should be used for integration of the \"next release\"?"
@@ -111,7 +136,8 @@
should_check_existence=YES
default_suggestion=
- for guess in 'develop' 'int' 'integration' 'master'; do
+ for guess in $(git config --get gitflow.branch.develop) \
+ 'develop' 'int' 'integration' 'master'; do
if git_local_branch_exists "$guess"; then
default_suggestion="$guess"
break
@@ -119,7 +145,7 @@
done
fi
- echo "Branch name for \"next release\" development: [$default_suggestion] \c"
+ printf "Branch name for \"next release\" development: [$default_suggestion] "
read answer
develop_branch=${answer:-$default_suggestion}
@@ -161,7 +187,7 @@
# default production branch and develop was "created". We should create
# the develop branch now in that case (we base it on master, of course)
if ! git_local_branch_exists "$develop_branch"; then
- git branch "$develop_branch" "$master_branch"
+ git branch --no-track "$develop_branch" "$master_branch"
created_gitflow_branch=1
fi
@@ -174,15 +200,22 @@
fi
# finally, ask the user for naming conventions (branch and tag prefixes)
- echo
- echo "How to name your supporting branch prefixes?"
+ if flag force || \
+ ! git config --get gitflow.prefix.feature >/dev/null 2>&1 ||
+ ! git config --get gitflow.prefix.release >/dev/null 2>&1 ||
+ ! git config --get gitflow.prefix.hotfix >/dev/null 2>&1 ||
+ ! git config --get gitflow.prefix.support >/dev/null 2>&1 ||
+ ! git config --get gitflow.prefix.versiontag >/dev/null 2>&1; then
+ echo
+ echo "How to name your supporting branch prefixes?"
+ fi
local prefix
# Feature branches
if ! git config --get gitflow.prefix.feature >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.feature || echo feature/)
- echo "Feature branches? [$default_suggestion] \c"
+ printf "Feature branches? [$default_suggestion] "
read answer
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.feature "$prefix"
@@ -191,7 +224,7 @@
# Release branches
if ! git config --get gitflow.prefix.release >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.release || echo release/)
- echo "Release branches? [$default_suggestion] \c"
+ printf "Release branches? [$default_suggestion] "
read answer
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.release "$prefix"
@@ -201,7 +234,7 @@
# Hotfix branches
if ! git config --get gitflow.prefix.hotfix >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
- echo "Hotfix branches? [$default_suggestion] \c"
+ printf "Hotfix branches? [$default_suggestion] "
read answer
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.hotfix "$prefix"
@@ -211,7 +244,7 @@
# Support branches
if ! git config --get gitflow.prefix.support >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.support || echo support/)
- echo "Support branches? [$default_suggestion] \c"
+ printf "Support branches? [$default_suggestion] "
read answer
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.support "$prefix"
@@ -221,7 +254,7 @@
# Version tag prefix
if ! git config --get gitflow.prefix.versiontag >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.versiontag || echo "")
- echo "Version tag prefix? [$default_suggestion] \c"
+ printf "Version tag prefix? [$default_suggestion] "
read answer
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.versiontag "$prefix"
diff --git a/git-flow-release b/git-flow-release
index 2a46a7a..b998673 100644
--- a/git-flow-release
+++ b/git-flow-release
@@ -3,13 +3,37 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
require_git_repo
@@ -38,6 +62,11 @@
release_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
if [ -z "$release_branches" ]; then
warn "No release branches exist."
+ warn ""
+ warn "You can start a new release branch:"
+ warn ""
+ warn " git flow release start <name> [<base>]"
+ warn ""
exit 0
fi
@@ -119,7 +148,7 @@
}
cmd_start() {
- DEFINE_boolean fetch true "fetch from $ORIGIN before performing finish" F
+ DEFINE_boolean fetch false "fetch from $ORIGIN before performing finish" F
parse_args "$@"
BASE=${2:-$DEVELOP_BRANCH}
require_version_arg
@@ -133,7 +162,9 @@
if flag fetch; then
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH"
fi
- require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ if has "$ORIGIN/$DEVELOP_BRANCH" "$(git_remote_branches)"; then
+ require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ fi
# create branch
git checkout -b "$BRANCH" "$BASE"
@@ -153,7 +184,7 @@
}
cmd_finish() {
- DEFINE_boolean fetch true "fetch from $ORIGIN before performing finish" F
+ DEFINE_boolean fetch false "fetch from $ORIGIN before performing finish" F
DEFINE_boolean sign false "sign the release tag cryptographically" s
DEFINE_string signingkey "" "use the given GPG-key for the digital signature (implies -s)" u
DEFINE_string message "" "use the given tag message" m
@@ -176,8 +207,12 @@
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH" || \
die "Could not fetch $DEVELOP_BRANCH from $ORIGIN."
fi
- require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
- require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ if has "$ORIGIN/$MASTER_BRANCH" "$(git_remote_branches)"; then
+ require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
+ fi
+ if has "$ORIGIN/$DEVELOP_BRANCH" "$(git_remote_branches)"; then
+ require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
+ fi
# try to merge into master
# in case a previous attempt to finish this release branch has failed,
diff --git a/git-flow-support b/git-flow-support
index 9403c12..ba92cb9 100644
--- a/git-flow-support
+++ b/git-flow-support
@@ -3,13 +3,37 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
require_git_repo
@@ -40,6 +64,11 @@
support_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
if [ -z "$support_branches" ]; then
warn "No support branches exist."
+ warn ""
+ warn "You can start a new support branch:"
+ warn ""
+ warn " git flow support start <name> <base>"
+ warn ""
exit 0
fi
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
@@ -127,7 +156,7 @@
}
cmd_start() {
- DEFINE_boolean fetch true "fetch from $ORIGIN before performing finish" F
+ DEFINE_boolean fetch false "fetch from $ORIGIN before performing finish" F
parse_args "$@"
require_version_arg
require_base_arg
diff --git a/git-flow-version b/git-flow-version
index 347e6f4..7371595 100644
--- a/git-flow-version
+++ b/git-flow-version
@@ -3,15 +3,40 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
-GITFLOW_VERSION=0.2.1
+
+GITFLOW_VERSION=0.3
usage() {
echo "usage: git flow version"
diff --git a/gitflow-common b/gitflow-common
index aa33700..29ef388 100644
--- a/gitflow-common
+++ b/gitflow-common
@@ -3,13 +3,37 @@
# repository operations for Vincent Driessen's branching model.
#
# Original blog post presenting this model is found at:
-# http://nvie.com/archives/323
+# http://nvie.com/git-model
#
# Feel free to contribute to this project at:
# http://github.com/nvie/gitflow
#
-# Copyright (c) 2010 by Vincent Driessen
-# Copyright (c) 2010 by Benedikt Böhm
+# Copyright 2010 Vincent Driessen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# The views and conclusions contained in the software and documentation are
+# those of the authors and should not be interpreted as representing official
+# policies, either expressed or implied, of Vincent Driessen.
#
#
@@ -182,7 +206,7 @@
local num_matches
# first, check if there is a perfect match
- if has "$(git_local_branches)" "$prefix$name"; then
+ if git_local_branch_exists "$prefix$name"; then
echo "$name"
return 0
fi