Skip to content

Commit

Permalink
Merge branch 'release/0.4.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
nvie committed Feb 14, 2011
2 parents dc5d08d + 4b5b932 commit 1ffb6b1
Show file tree
Hide file tree
Showing 9 changed files with 136 additions and 114 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Expand Up @@ -10,5 +10,6 @@ Authors are (ordered by first commit date):
- Nowell Strite
- Felipe Talavera
- Guillaume-Jean Herbiet
- Joseph A. Levin

Portions derived from other open source works are clearly marked.
14 changes: 14 additions & 0 deletions Changes.mdown
@@ -1,3 +1,17 @@
0.4.1:
-----
Release date: **2011/02/04**

* New option `-d` added to `git flow init`, to initialize with defaults without
asking for input interactively. Ideal for creating git-flow enabled repos in
custom scripts.

* The parsing issues related to git-flow feature's flags are now dealt with on
all known platforms. (Fixed #54, #62, #86, #97)

* Escape queries for detecting branch/tag names. (Fixed #91)


0.4:
---
Release date: **2010/10/18**
Expand Down
148 changes: 64 additions & 84 deletions README.mdown
@@ -1,31 +1,80 @@
git-flow
git-flow ![Project status](http://stillmaintained.com/nvie/gitflow.png)
========
A collection of Git extensions to provide high-level repository operations
for Vincent Driessen's [branching model](http://nvie.com/git-model "original
blog post").


Getting started
---------------
For the best introduction to get started with `git flow`, please read Jeff
Kreeftmeijer's blog post:

[http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/](http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/)

Or have a look at one of these screen casts:

* [A short introduction to git-flow](http://vimeo.com/16018419) (by Mark Derricutt)
* [On the path with git-flow](http://codesherpas.com/screencasts/on_the_path_gitflow.mov) (by Dave Bock)


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
### Mac OS
If you're on a Mac and use [homebrew](http://github.com/mxcl/homebrew), it's simple:

$ brew install git-flow

If you're on a Mac and use [MacPorts](http://macports.org/), it's simple:

$ port install git-flow

### Linux, etc.
Another easy way to install git-flow is using Rick Osborne's excellent git-flow
installer, which can be run using the following command:

For __OSX__ users, the `wget` command isn't available by default, but `curl` is, so you can run:
$ wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh

$ curl http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh
### Windows
#### Using Cygwin
For Windows users who wish to use the automated install, it is suggested that you install [Cygwin](http://www.cygwin.com/)
first to install tools like `git`, `util-linux` and `wget` (with those three being packages that can be selected
during installation). Then simply run this command from a Cygwin shell:

For __Windows__ users who wish to use the automated install, it is suggested that you install [Cygwin](http://www.cygwin.com/)
first to install tools like sh and wget. Then simply follow the command:
$ wget -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh

c:\Users\<user> wget -q -O - http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh
#### Using msysgit
This is much like the manual installation below, but there are additional steps required to install some extra tools that
are not distributed with [msysgit](http://code.google.com/p/msysgit/).

If you prefer a manual installation, please use the following instructions.
After downloading the sources from Github, also fetch the submodules:
Clone the git-flow sources from Github:

$ git submodule init
$ git submodule update
$ git clone --recursive git://github.com/nvie/gitflow.git

Copy git-flow's relevant files to your msysgit installation directory:

$ mkdir /usr/local/bin
$ cp git-flow* gitflow* /usr/local/bin/
$ cp shFlags/src/shflags /usr/local/bin/gitflow-shFlags

Next up we need to borrow a couple of binaries from [Cygwin](http://www.cygwin.com/). If you don't have Cygwin installed, please
install it including the `util-linux` package. Apart from `util-linux`'s dependencies, no other packages are required. When you
finished installation, copy the following files using msysgit's _Git Bash_. We assume the Cygwin's default installation path in C:\cygwin.

$ cd /c/cygwin/
$ cp bin/getopt.exe /usr/local/bin/
$ cp bin/cyggcc_s-1.dll /usr/local/bin/
$ cp bin/cygiconv-2.dll /usr/local/bin/
$ cp bin/cygintl-8.dll /usr/local/bin/
$ cp bin/cygwin1.dll /usr/local/bin/

After copying the files above, you can safely uninstall your Cygwin installation by deleting the C:\cygwin directory.

### Manual installation
If you prefer a manual installation, please use the following instructions:

$ git clone --recursive git://github.com/nvie/gitflow.git

Then, you can install `git-flow`, using:

Expand Down Expand Up @@ -61,69 +110,8 @@ starting place for installing git.

FAQ
---
* **Can I still do manual branches and merges when I use git-flow?**
Of course you can. `git-flow` does not forbid you to keep using vanilla Git
commands!

So if you want to merge `master` into `develop` for whatever reason you want
to, you can safely do so without breaking `git-flow` compatibility. Do you
want to manually merge a feature branch X into another feature branch Y? Not
a problem. As long as you do it conciously and realize what this means for
finishing those branches later on.

* **Why does git-describe not work for me?**
When finishing release and hotfix branches, that branch's HEAD is first
merged into `master` and then into `develop`. It is not the resulting new
merge commit from `master` that is merged back into `develop`. This means
that a linear path from the new `develop` branch to the new `master` commit
is not created. Even worse, a linear path is created from the new `develop`
branch to the *previous* `master` commit. Although unintended, this is
simply an effect of using the current branching rules.

When using `git-describe` in these cases, you can get very confusing and
misleading results, since `git-describe` scans the current commits linear
history for the most recent tag it finds, which will always be the *previous*
tag.

I will change this behaviour in the next version of the branching model
explicitly and I will include this behavioural change in the first version of
the Python rewrite.

For more references to this problem, see:

- Issue [#49](http://github.com/nvie/gitflow/issues/49)
- These
[two](http://groups.google.com/group/gitflow-users/browse\_thread/thread/9920a7df3d1c4908/0bb18a0bf7275ad6#0bb18a0bf7275ad6)
[discussions](http://groups.google.com/group/gitflow-users/browse\_thread/thread/19efac724bb6418a)
on the [git-flow-users](http://groups.google.com/group/gitflow-users)
mailinglist.

* **I'm getting errors when I use flags with git-flow!**
`git-flow` uses the [shFlags](http://code.google.com/p/shflags/) library to
provide platform independent flag parsing (using wichever low-level flag
parsing libraries like `getopt` or `getopts` are available). However,
`shFlags` does not work too well on a few platforms that haven't been tested
originally. This results in errors like this:

flags:WARN getopt: option invalide -- 'f' -- 'init' flags:FATAL unable to parse provided options with getopt

The platforms that suffer these errors include:

- Gentoo
- Ubuntu
- Redhat Enterprise Linux

There are open issues related to this:
[#28](http://github.com/nvie/gitflow/issues/28) and
[#39](http://github.com/nvie/gitflow/issues/39). Unfortunately, there is no
simple fix for it and all hope is placed on the Python rewrite of `git-flow`,
see issue [#33](http://github.com/nvie/gitflow/issues/33).

* **Can I use it with Windows?**
There have been reports of Windows users using `git-flow`.
<del>Un</del>fortunately, I have no Windows environment to test it on, but
this [issue](http://github.com/nvie/gitflow/issues/issue/25) should be
helpful in setting it up.
See the [FAQ](http://github.com/nvie/gitflow/wiki/FAQ) section of the project
Wiki.


Please help out
Expand All @@ -149,14 +137,6 @@ invited to contribute back your modifications to the community, preferably
in a Github fork, of course.


Typical usage:
--------------
For the best introduction to get started to `git flow`, please read Jeff
Kreeftmeijer's blog post:

[http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/](http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/)


### Initialization

To initialize a new repo with the basic branch structure, use:
Expand Down
12 changes: 5 additions & 7 deletions git-flow-feature
Expand Up @@ -170,22 +170,20 @@ name_or_current() {
fi
}

parse_cmdline() {
parse_args() {
# parse options
FLAGS "$@" || exit $?
eval set -- "${FLAGS_ARGV}"
}

parse_args() {
parse_cmdline "$@"

# read arguments into global variables
NAME=$(last_arg "$@")
NAME=$1
BRANCH=$PREFIX$NAME
}

parse_remote_name() {
parse_cmdline "$@"
# parse options
FLAGS "$@" || exit $?
eval set -- "${FLAGS_ARGV}"

# read arguments into global variables
REMOTE=$1
Expand Down
4 changes: 2 additions & 2 deletions git-flow-hotfix
Expand Up @@ -65,7 +65,7 @@ cmd_list() {
warn ""
warn "You can start a new hotfix branch:"
warn ""
warn " git flow hotfix start <name> [<base>]"
warn " git flow hotfix start <version> [<base>]"
warn ""
exit 0
fi
Expand Down Expand Up @@ -124,7 +124,7 @@ parse_args() {
eval set -- "${FLAGS_ARGV}"

# read arguments into global variables
VERSION=$(last_arg "$@")
VERSION=$1
BRANCH=$PREFIX$VERSION
}

Expand Down
53 changes: 43 additions & 10 deletions git-flow-init
Expand Up @@ -37,7 +37,7 @@
#

usage() {
echo "usage: git flow init [-f]"
echo "usage: git flow init [-fd]"
}

parse_args() {
Expand All @@ -49,8 +49,9 @@ parse_args() {
# Default entry when no SUBACTION is given
cmd_default() {
DEFINE_boolean force false 'force setting of gitflow branches, even if already configured' f
DEFINE_boolean defaults false 'use default branch naming conventions' d
parse_args "$@"

if ! git rev-parse --git-dir >/dev/null 2>&1; then
git init
else
Expand All @@ -68,6 +69,10 @@ cmd_default() {
local branch_count
local answer

if flag defaults; then
warn "Using default branch names."
fi

# add a master branch if no such branch exists yet
local master_branch
if gitflow_has_master_configured && ! flag force; then
Expand Down Expand Up @@ -101,9 +106,13 @@ cmd_default() {
fi
done
fi

printf "Branch name for production releases: [$default_suggestion] "
read answer
if noflag defaults; then
read answer
else
printf "\n"
fi
master_branch=${answer:-$default_suggestion}

# check existence in case of an already existing repo
Expand Down Expand Up @@ -146,7 +155,11 @@ cmd_default() {
fi

printf "Branch name for \"next release\" development: [$default_suggestion] "
read answer
if noflag defaults; then
read answer
else
printf "\n"
fi
develop_branch=${answer:-$default_suggestion}

if [ "$master_branch" = "$develop_branch" ]; then
Expand Down Expand Up @@ -216,7 +229,11 @@ cmd_default() {
if ! git config --get gitflow.prefix.feature >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.feature || echo feature/)
printf "Feature branches? [$default_suggestion] "
read answer
if noflag defaults; then
read answer
else
printf "\n"
fi
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.feature "$prefix"
fi
Expand All @@ -225,7 +242,11 @@ cmd_default() {
if ! git config --get gitflow.prefix.release >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.release || echo release/)
printf "Release branches? [$default_suggestion] "
read answer
if noflag defaults; then
read answer
else
printf "\n"
fi
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.release "$prefix"
fi
Expand All @@ -235,7 +256,11 @@ cmd_default() {
if ! git config --get gitflow.prefix.hotfix >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
printf "Hotfix branches? [$default_suggestion] "
read answer
if noflag defaults; then
read answer
else
printf "\n"
fi
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.hotfix "$prefix"
fi
Expand All @@ -245,7 +270,11 @@ cmd_default() {
if ! git config --get gitflow.prefix.support >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.support || echo support/)
printf "Support branches? [$default_suggestion] "
read answer
if noflag defaults; then
read answer
else
printf "\n"
fi
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.support "$prefix"
fi
Expand All @@ -255,7 +284,11 @@ cmd_default() {
if ! git config --get gitflow.prefix.versiontag >/dev/null 2>&1 || flag force; then
default_suggestion=$(git config --get gitflow.prefix.versiontag || echo "")
printf "Version tag prefix? [$default_suggestion] "
read answer
if noflag defaults; then
read answer
else
printf "\n"
fi
[ "$answer" = "-" ] && prefix= || prefix=${answer:-$default_suggestion}
git config gitflow.prefix.versiontag "$prefix"
fi
Expand Down
2 changes: 1 addition & 1 deletion git-flow-release
Expand Up @@ -121,7 +121,7 @@ parse_args() {
eval set -- "${FLAGS_ARGV}"

# read arguments into global variables
VERSION=$(last_arg "$@")
VERSION=$1
BRANCH=$PREFIX$VERSION
}

Expand Down
2 changes: 1 addition & 1 deletion git-flow-version
Expand Up @@ -36,7 +36,7 @@
# policies, either expressed or implied, of Vincent Driessen.
#

GITFLOW_VERSION=0.4
GITFLOW_VERSION=0.4.1

usage() {
echo "usage: git flow version"
Expand Down

0 comments on commit 1ffb6b1

Please sign in to comment.