Merge branch 'release/0.3'
This commit is contained in:
commit
298514b634
14 changed files with 627 additions and 86 deletions
11
AUTHORS
Normal file
11
AUTHORS
Normal file
|
@ -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.
|
50
Changes.mdown
Normal file
50
Changes.mdown
Normal file
|
@ -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.
|
26
LICENSE
Normal file
26
LICENSE
Normal file
|
@ -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.
|
28
Makefile
28
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
|
prefix=/usr/local
|
||||||
|
|
||||||
# files that need mode 755
|
# files that need mode 755
|
||||||
|
|
41
README.mdown
41
README.mdown
|
@ -5,13 +5,14 @@ for Vincent Driessen's [branching model](http://nvie.com/git-model "original
|
||||||
blog post").
|
blog post").
|
||||||
|
|
||||||
|
|
||||||
> **IMPORTANT NOTE:**
|
|
||||||
> In release 0.2, the order of the arguments has changed to provide a logical
|
|
||||||
> subcommand hierarchy.
|
|
||||||
|
|
||||||
|
|
||||||
Installing git-flow
|
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:
|
After downloading the sources from Github, also fetch the submodules:
|
||||||
|
|
||||||
$ git submodule init
|
$ git submodule init
|
||||||
|
@ -30,6 +31,21 @@ Or simply point your `PATH` environment variable to your git-flow checkout
|
||||||
directory.
|
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
|
Please help out
|
||||||
---------------
|
---------------
|
||||||
This project is still under development. Feedback and suggestions are very
|
This project is still under development. Feedback and suggestions are very
|
||||||
|
@ -37,7 +53,20 @@ welcome and I encourage you to use the [Issues
|
||||||
list](http://github.com/nvie/gitflow/issues) on Github to provide that
|
list](http://github.com/nvie/gitflow/issues) on Github to provide that
|
||||||
feedback.
|
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:
|
Typical usage:
|
||||||
|
|
78
contrib/gitflow-installer.sh
Normal file
78
contrib/gitflow-installer.sh
Normal file
|
@ -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
|
37
git-flow
37
git-flow
|
@ -4,13 +4,37 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
#
|
||||||
|
# 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
|
# enable debug mode
|
||||||
|
@ -78,11 +102,4 @@ main() {
|
||||||
cmd_$SUBACTION "$@"
|
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 "$@"
|
main "$@"
|
||||||
|
|
171
git-flow-feature
171
git-flow-feature
|
@ -3,13 +3,37 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
#
|
||||||
|
# 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
|
require_git_repo
|
||||||
|
@ -19,12 +43,14 @@ PREFIX=$(git config --get gitflow.prefix.feature)
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "usage: git flow feature [list] [-v]"
|
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 finish [-rF] <name|nameprefix>"
|
||||||
echo " git flow feature publish <name>"
|
echo " git flow feature publish <name>"
|
||||||
echo " git flow feature track <name>"
|
echo " git flow feature track <name>"
|
||||||
echo " git flow feature diff [<name|nameprefix>]"
|
echo " git flow feature diff [<name|nameprefix>]"
|
||||||
echo " git flow feature rebase [-i] [<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() {
|
cmd_default() {
|
||||||
|
@ -41,6 +67,11 @@ cmd_list() {
|
||||||
feature_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
feature_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
||||||
if [ -z "$feature_branches" ]; then
|
if [ -z "$feature_branches" ]; then
|
||||||
warn "No feature branches exist."
|
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
|
exit 0
|
||||||
fi
|
fi
|
||||||
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
|
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
|
||||||
|
@ -112,45 +143,63 @@ expand_nameprefix_arg() {
|
||||||
esac
|
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() {
|
expand_nameprefix_arg_or_current() {
|
||||||
if [ "$NAME" != "" ]; then
|
if [ "$NAME" != "" ]; then
|
||||||
expand_nameprefix_arg
|
expand_nameprefix_arg
|
||||||
require_branch "$PREFIX$NAME"
|
require_branch "$PREFIX$NAME"
|
||||||
else
|
else
|
||||||
local current_branch=$(git_current_branch)
|
use_current_feature_branch_name
|
||||||
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
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_args() {
|
name_or_current() {
|
||||||
|
if [ -z "$NAME" ]; then
|
||||||
|
use_current_feature_branch_name
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_cmdline() {
|
||||||
# parse options
|
# parse options
|
||||||
FLAGS "$@" || exit $?
|
FLAGS "$@" || exit $?
|
||||||
eval set -- "${FLAGS_ARGV}"
|
eval set -- "${FLAGS_ARGV}"
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_args() {
|
||||||
|
parse_cmdline "$@"
|
||||||
|
|
||||||
# read arguments into global variables
|
# read arguments into global variables
|
||||||
NAME=$1
|
NAME=$1
|
||||||
BRANCH=$PREFIX$NAME
|
BRANCH=$PREFIX$NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parse_remote_name() {
|
||||||
|
parse_cmdline "$@"
|
||||||
|
|
||||||
|
# read arguments into global variables
|
||||||
|
REMOTE=$1
|
||||||
|
NAME=$2
|
||||||
|
BRANCH=$PREFIX$NAME
|
||||||
|
}
|
||||||
|
|
||||||
cmd_start() {
|
cmd_start() {
|
||||||
DEFINE_boolean fetch false 'fetch from origin before performing local operation' F
|
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 "$@"
|
parse_args "$@"
|
||||||
BASE=${2:-$DEVELOP_BRANCH}
|
BASE=${2:-$DEVELOP_BRANCH}
|
||||||
require_name_arg
|
require_name_arg
|
||||||
|
|
||||||
# sanity checks
|
# sanity checks
|
||||||
if noflag force; then
|
|
||||||
require_clean_working_tree
|
|
||||||
fi
|
|
||||||
require_branch_absent "$BRANCH"
|
require_branch_absent "$BRANCH"
|
||||||
|
|
||||||
# update the local repo with remote changes, if asked
|
# update the local repo with remote changes, if asked
|
||||||
|
@ -158,7 +207,11 @@ cmd_start() {
|
||||||
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH"
|
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH"
|
||||||
fi
|
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
|
# create branch
|
||||||
if ! git checkout -b "$BRANCH" "$BASE"; then
|
if ! git checkout -b "$BRANCH" "$BASE"; then
|
||||||
|
@ -172,7 +225,7 @@ cmd_start() {
|
||||||
echo ""
|
echo ""
|
||||||
echo "Now, start committing on your feature. When done, use:"
|
echo "Now, start committing on your feature. When done, use:"
|
||||||
echo ""
|
echo ""
|
||||||
echo " git flow finish feature $NAME"
|
echo " git flow feature finish $NAME"
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,14 +282,18 @@ cmd_finish() {
|
||||||
require_clean_working_tree
|
require_clean_working_tree
|
||||||
|
|
||||||
# update local repo with remote changes first, if asked
|
# update local repo with remote changes first, if asked
|
||||||
if flag fetch; then
|
if has "$ORIGIN/$BRANCH" "$(git_remote_branches)"; then
|
||||||
git fetch -q "$ORIGIN" "$BRANCH"
|
if flag fetch; then
|
||||||
|
git fetch -q "$ORIGIN" "$BRANCH"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if has "$ORIGIN/$BRANCH" "$(git_remote_branches)"; then
|
if has "$ORIGIN/$BRANCH" "$(git_remote_branches)"; then
|
||||||
require_branches_equal "$BRANCH" "$ORIGIN/$BRANCH"
|
require_branches_equal "$BRANCH" "$ORIGIN/$BRANCH"
|
||||||
fi
|
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 the user wants to rebase, do that first
|
||||||
if flag rebase; then
|
if flag rebase; then
|
||||||
|
@ -286,7 +343,7 @@ helper_finish_cleanup() {
|
||||||
if flag fetch; then
|
if flag fetch; then
|
||||||
git push "$ORIGIN" ":refs/heads/$BRANCH"
|
git push "$ORIGIN" ":refs/heads/$BRANCH"
|
||||||
fi
|
fi
|
||||||
git branch -d "$BRANCH"
|
git branch -D "$BRANCH"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Summary of actions:"
|
echo "Summary of actions:"
|
||||||
|
@ -361,6 +418,22 @@ cmd_diff() {
|
||||||
fi
|
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() {
|
cmd_rebase() {
|
||||||
DEFINE_boolean interactive false 'do an interactive rebase' i
|
DEFINE_boolean interactive false 'do an interactive rebase' i
|
||||||
parse_args "$@"
|
parse_args "$@"
|
||||||
|
@ -376,3 +449,51 @@ cmd_rebase() {
|
||||||
fi
|
fi
|
||||||
git rebase $OPTS "$DEVELOP_BRANCH"
|
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
|
||||||
|
}
|
||||||
|
|
|
@ -3,13 +3,37 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
#
|
||||||
|
# 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
|
require_git_repo
|
||||||
|
@ -38,6 +62,11 @@ cmd_list() {
|
||||||
hotfix_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
hotfix_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
||||||
if [ -z "$hotfix_branches" ]; then
|
if [ -z "$hotfix_branches" ]; then
|
||||||
warn "No hotfix branches exist."
|
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
|
exit 0
|
||||||
fi
|
fi
|
||||||
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
|
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
|
||||||
|
@ -124,7 +153,7 @@ require_no_existing_hotfix_branches() {
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_start() {
|
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 "$@"
|
parse_args "$@"
|
||||||
BASE=${2:-$MASTER_BRANCH}
|
BASE=${2:-$MASTER_BRANCH}
|
||||||
require_version_arg
|
require_version_arg
|
||||||
|
@ -138,7 +167,9 @@ cmd_start() {
|
||||||
if flag fetch; then
|
if flag fetch; then
|
||||||
git fetch -q "$ORIGIN" "$MASTER_BRANCH"
|
git fetch -q "$ORIGIN" "$MASTER_BRANCH"
|
||||||
fi
|
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
|
# create branch
|
||||||
git checkout -b "$BRANCH" "$BASE"
|
git checkout -b "$BRANCH" "$BASE"
|
||||||
|
@ -158,7 +189,7 @@ cmd_start() {
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_finish() {
|
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_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 signingkey "" "use the given GPG-key for the digital signature (implies -s)" u
|
||||||
DEFINE_string message "" "use the given tag message" m
|
DEFINE_string message "" "use the given tag message" m
|
||||||
|
@ -180,8 +211,12 @@ cmd_finish() {
|
||||||
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH" || \
|
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH" || \
|
||||||
die "Could not fetch $DEVELOP_BRANCH from $ORIGIN."
|
die "Could not fetch $DEVELOP_BRANCH from $ORIGIN."
|
||||||
fi
|
fi
|
||||||
require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
|
if has "$ORIGIN/$MASTER_BRANCH" "$(git_remote_branches)"; then
|
||||||
require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
|
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
|
# try to merge into master
|
||||||
# in case a previous attempt to finish this release branch has failed,
|
# in case a previous attempt to finish this release branch has failed,
|
||||||
|
|
|
@ -3,13 +3,37 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
#
|
||||||
|
# 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() {
|
usage() {
|
||||||
|
@ -61,7 +85,7 @@ cmd_default() {
|
||||||
if [ "$branch_count" -eq 0 ]; then
|
if [ "$branch_count" -eq 0 ]; then
|
||||||
echo "No branches exist yet. Base branches must be created now."
|
echo "No branches exist yet. Base branches must be created now."
|
||||||
should_check_existence=NO
|
should_check_existence=NO
|
||||||
default_suggestion=master
|
default_suggestion=$(git config --get gitflow.branch.master || echo master)
|
||||||
else
|
else
|
||||||
echo
|
echo
|
||||||
echo "Which branch should be used for bringing forth production releases?"
|
echo "Which branch should be used for bringing forth production releases?"
|
||||||
|
@ -69,7 +93,8 @@ cmd_default() {
|
||||||
|
|
||||||
should_check_existence=YES
|
should_check_existence=YES
|
||||||
default_suggestion=
|
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
|
if git_local_branch_exists "$guess"; then
|
||||||
default_suggestion="$guess"
|
default_suggestion="$guess"
|
||||||
break
|
break
|
||||||
|
@ -77,7 +102,7 @@ cmd_default() {
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Branch name for production releases: [$default_suggestion] \c"
|
printf "Branch name for production releases: [$default_suggestion] "
|
||||||
read answer
|
read answer
|
||||||
master_branch=${answer:-$default_suggestion}
|
master_branch=${answer:-$default_suggestion}
|
||||||
|
|
||||||
|
@ -103,7 +128,7 @@ cmd_default() {
|
||||||
branch_count=$(git_local_branches | grep -v "^${master_branch}\$" | wc -l)
|
branch_count=$(git_local_branches | grep -v "^${master_branch}\$" | wc -l)
|
||||||
if [ "$branch_count" -eq 0 ]; then
|
if [ "$branch_count" -eq 0 ]; then
|
||||||
should_check_existence=NO
|
should_check_existence=NO
|
||||||
default_suggestion=develop
|
default_suggestion=$(git config --get gitflow.branch.develop || echo develop)
|
||||||
else
|
else
|
||||||
echo
|
echo
|
||||||
echo "Which branch should be used for integration of the \"next release\"?"
|
echo "Which branch should be used for integration of the \"next release\"?"
|
||||||
|
@ -111,7 +136,8 @@ cmd_default() {
|
||||||
|
|
||||||
should_check_existence=YES
|
should_check_existence=YES
|
||||||
default_suggestion=
|
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
|
if git_local_branch_exists "$guess"; then
|
||||||
default_suggestion="$guess"
|
default_suggestion="$guess"
|
||||||
break
|
break
|
||||||
|
@ -119,7 +145,7 @@ cmd_default() {
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Branch name for \"next release\" development: [$default_suggestion] \c"
|
printf "Branch name for \"next release\" development: [$default_suggestion] "
|
||||||
read answer
|
read answer
|
||||||
develop_branch=${answer:-$default_suggestion}
|
develop_branch=${answer:-$default_suggestion}
|
||||||
|
|
||||||
|
@ -161,7 +187,7 @@ cmd_default() {
|
||||||
# default production branch and develop was "created". We should create
|
# default production branch and develop was "created". We should create
|
||||||
# the develop branch now in that case (we base it on master, of course)
|
# the develop branch now in that case (we base it on master, of course)
|
||||||
if ! git_local_branch_exists "$develop_branch"; then
|
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
|
created_gitflow_branch=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -174,15 +200,22 @@ cmd_default() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# finally, ask the user for naming conventions (branch and tag prefixes)
|
# finally, ask the user for naming conventions (branch and tag prefixes)
|
||||||
echo
|
if flag force || \
|
||||||
echo "How to name your supporting branch prefixes?"
|
! 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
|
local prefix
|
||||||
|
|
||||||
# Feature branches
|
# Feature branches
|
||||||
if ! git config --get gitflow.prefix.feature >/dev/null 2>&1 || flag force; then
|
if ! git config --get gitflow.prefix.feature >/dev/null 2>&1 || flag force; then
|
||||||
default_suggestion=$(git config --get gitflow.prefix.feature || echo feature/)
|
default_suggestion=$(git config --get gitflow.prefix.feature || echo feature/)
|
||||||
echo "Feature branches? [$default_suggestion] \c"
|
printf "Feature branches? [$default_suggestion] "
|
||||||
read answer
|
read answer
|
||||||
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
||||||
git config gitflow.prefix.feature "$prefix"
|
git config gitflow.prefix.feature "$prefix"
|
||||||
|
@ -191,7 +224,7 @@ cmd_default() {
|
||||||
# Release branches
|
# Release branches
|
||||||
if ! git config --get gitflow.prefix.release >/dev/null 2>&1 || flag force; then
|
if ! git config --get gitflow.prefix.release >/dev/null 2>&1 || flag force; then
|
||||||
default_suggestion=$(git config --get gitflow.prefix.release || echo release/)
|
default_suggestion=$(git config --get gitflow.prefix.release || echo release/)
|
||||||
echo "Release branches? [$default_suggestion] \c"
|
printf "Release branches? [$default_suggestion] "
|
||||||
read answer
|
read answer
|
||||||
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
||||||
git config gitflow.prefix.release "$prefix"
|
git config gitflow.prefix.release "$prefix"
|
||||||
|
@ -201,7 +234,7 @@ cmd_default() {
|
||||||
# Hotfix branches
|
# Hotfix branches
|
||||||
if ! git config --get gitflow.prefix.hotfix >/dev/null 2>&1 || flag force; then
|
if ! git config --get gitflow.prefix.hotfix >/dev/null 2>&1 || flag force; then
|
||||||
default_suggestion=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
|
default_suggestion=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
|
||||||
echo "Hotfix branches? [$default_suggestion] \c"
|
printf "Hotfix branches? [$default_suggestion] "
|
||||||
read answer
|
read answer
|
||||||
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
||||||
git config gitflow.prefix.hotfix "$prefix"
|
git config gitflow.prefix.hotfix "$prefix"
|
||||||
|
@ -211,7 +244,7 @@ cmd_default() {
|
||||||
# Support branches
|
# Support branches
|
||||||
if ! git config --get gitflow.prefix.support >/dev/null 2>&1 || flag force; then
|
if ! git config --get gitflow.prefix.support >/dev/null 2>&1 || flag force; then
|
||||||
default_suggestion=$(git config --get gitflow.prefix.support || echo support/)
|
default_suggestion=$(git config --get gitflow.prefix.support || echo support/)
|
||||||
echo "Support branches? [$default_suggestion] \c"
|
printf "Support branches? [$default_suggestion] "
|
||||||
read answer
|
read answer
|
||||||
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
||||||
git config gitflow.prefix.support "$prefix"
|
git config gitflow.prefix.support "$prefix"
|
||||||
|
@ -221,7 +254,7 @@ cmd_default() {
|
||||||
# Version tag prefix
|
# Version tag prefix
|
||||||
if ! git config --get gitflow.prefix.versiontag >/dev/null 2>&1 || flag force; then
|
if ! git config --get gitflow.prefix.versiontag >/dev/null 2>&1 || flag force; then
|
||||||
default_suggestion=$(git config --get gitflow.prefix.versiontag || echo "")
|
default_suggestion=$(git config --get gitflow.prefix.versiontag || echo "")
|
||||||
echo "Version tag prefix? [$default_suggestion] \c"
|
printf "Version tag prefix? [$default_suggestion] "
|
||||||
read answer
|
read answer
|
||||||
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
|
||||||
git config gitflow.prefix.versiontag "$prefix"
|
git config gitflow.prefix.versiontag "$prefix"
|
||||||
|
|
|
@ -3,13 +3,37 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
#
|
||||||
|
# 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
|
require_git_repo
|
||||||
|
@ -38,6 +62,11 @@ cmd_list() {
|
||||||
release_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
release_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
||||||
if [ -z "$release_branches" ]; then
|
if [ -z "$release_branches" ]; then
|
||||||
warn "No release branches exist."
|
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
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -119,7 +148,7 @@ require_no_existing_release_branches() {
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_start() {
|
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 "$@"
|
parse_args "$@"
|
||||||
BASE=${2:-$DEVELOP_BRANCH}
|
BASE=${2:-$DEVELOP_BRANCH}
|
||||||
require_version_arg
|
require_version_arg
|
||||||
|
@ -133,7 +162,9 @@ cmd_start() {
|
||||||
if flag fetch; then
|
if flag fetch; then
|
||||||
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH"
|
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH"
|
||||||
fi
|
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
|
# create branch
|
||||||
git checkout -b "$BRANCH" "$BASE"
|
git checkout -b "$BRANCH" "$BASE"
|
||||||
|
@ -153,7 +184,7 @@ cmd_start() {
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_finish() {
|
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_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 signingkey "" "use the given GPG-key for the digital signature (implies -s)" u
|
||||||
DEFINE_string message "" "use the given tag message" m
|
DEFINE_string message "" "use the given tag message" m
|
||||||
|
@ -176,8 +207,12 @@ cmd_finish() {
|
||||||
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH" || \
|
git fetch -q "$ORIGIN" "$DEVELOP_BRANCH" || \
|
||||||
die "Could not fetch $DEVELOP_BRANCH from $ORIGIN."
|
die "Could not fetch $DEVELOP_BRANCH from $ORIGIN."
|
||||||
fi
|
fi
|
||||||
require_branches_equal "$MASTER_BRANCH" "$ORIGIN/$MASTER_BRANCH"
|
if has "$ORIGIN/$MASTER_BRANCH" "$(git_remote_branches)"; then
|
||||||
require_branches_equal "$DEVELOP_BRANCH" "$ORIGIN/$DEVELOP_BRANCH"
|
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
|
# try to merge into master
|
||||||
# in case a previous attempt to finish this release branch has failed,
|
# in case a previous attempt to finish this release branch has failed,
|
||||||
|
|
|
@ -3,13 +3,37 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
#
|
||||||
|
# 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
|
require_git_repo
|
||||||
|
@ -40,6 +64,11 @@ cmd_list() {
|
||||||
support_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
support_branches=$(echo "$(git_local_branches)" | grep "^$PREFIX")
|
||||||
if [ -z "$support_branches" ]; then
|
if [ -z "$support_branches" ]; then
|
||||||
warn "No support branches exist."
|
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
|
exit 0
|
||||||
fi
|
fi
|
||||||
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
|
current_branch=$(git branch | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g')
|
||||||
|
@ -127,7 +156,7 @@ require_base_is_on_master() {
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_start() {
|
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 "$@"
|
parse_args "$@"
|
||||||
require_version_arg
|
require_version_arg
|
||||||
require_base_arg
|
require_base_arg
|
||||||
|
|
|
@ -3,15 +3,40 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
|
||||||
#
|
#
|
||||||
GITFLOW_VERSION=0.2.1
|
# 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.3
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "usage: git flow version"
|
echo "usage: git flow version"
|
||||||
|
|
|
@ -3,13 +3,37 @@
|
||||||
# repository operations for Vincent Driessen's branching model.
|
# repository operations for Vincent Driessen's branching model.
|
||||||
#
|
#
|
||||||
# Original blog post presenting this model is found at:
|
# 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:
|
# Feel free to contribute to this project at:
|
||||||
# http://github.com/nvie/gitflow
|
# http://github.com/nvie/gitflow
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 by Vincent Driessen
|
# Copyright 2010 Vincent Driessen. All rights reserved.
|
||||||
# Copyright (c) 2010 by Benedikt Böhm
|
#
|
||||||
|
# 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 @@ gitflow_resolve_nameprefix() {
|
||||||
local num_matches
|
local num_matches
|
||||||
|
|
||||||
# first, check if there is a perfect match
|
# 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"
|
echo "$name"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue