Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

pypm install salsita-gitflow

How to install salsita-gitflow

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install salsita-gitflow
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
Windows (64-bit)
Mac OS X (10.5+)
Linux (32-bit)
Linux (64-bit)
1.0.2 Available View build log
Lastest release
version 1.0.2 on Jan 9th, 2014

Pure-Python implementation of Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

We've added a few tweaks to make it cooperate with Pivotal Tracker and Review Board.

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.

Or have a look at one of these screen casts:

Installing salsita-gitflow

You can install salsita gitflow, using:

pip install salsita-gitflow

Or, if you'd like to use easy_install instead:

easy_install salsita-gitflow

salsita-gitflow requires Python 2.7.

Setting it up

Global (same for all projects):

* git config --global reviewboard.url https://example.com/rb/ (the trailing slash is REQUIRED)
* git config --global reviewboard.server https://example.com/rb/
* git config --global gitflow.pt.token 12345678910

You will be prompted for the project-specific settings during git flow init.

If you have the original git-flow <https://github.com/nvie/gitflow> installed, just go to the git bin folder and delete everything that starts with git-flow.

Integration with your shell

For those who use the Bash or ZSH shell, please check out the excellent work on the git-flow-completion project by bobthecow. It offers tab-completion for all git-flow subcommands and branch names.

Please note that some subcommands have changed in this gitflow fork, so it is questionable if the completions still make sense.

Please help out

This project is still under development. Feedback and suggestions are very welcome and I encourage you to use the Issues list on Github to provide that feedback.

Feel free to fork this repo and to commit your additions. For a list of all contributors, please see the :file:`AUTHORS.txt`.

System Message: ERROR/3 (<string>, line 79); backlink

Unknown interpreted text role "file".

Salsita is using Gerrit for code review.

You will need :module:`unittest2` to run the tests (which are completely broken as of now, so nevermind).

System Message: ERROR/3 (<string>, line 85); backlink

Unknown interpreted text role "module".

On the cutting edge

The source code here on GitHub is the one that has been code reviewed. If you, however, wish to try the changes that are still yet to be reviewed, you can visit Gerrit and checkout the commit you want to try/test. If that is the case, we advice you to:

  1. Use virtualenv to create the testing environment.
  2. Once the environment is activated, get the commit you want:
    1. mkdir src && cd src
    2. git init
    3. Go to the commit page in Gerrit, get the exact command to execute, e.g. git fetch https://dev.salsitasoft.com/gerrit/gitflow refs/changes/02/2/1 && git checkout FETCH_HEAD
    4. python setup.py install
    5. The git flow commands should be available to you now, just make sure you are using the right one (man which)

License terms

git-flow is published under the liberal terms of the BSD License, see the :file:`LICENSE.txt`. 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.

System Message: ERROR/3 (<string>, line 107); backlink

Unknown interpreted text role "file".

git flow usage


Before you start, make sure that you are using SSH for communication with origin.

To initialize a new repo with the basic branch structure, use:

git flow init [-d]

This will then interactively prompt you with some questions on which branches you would like to use as development and production branches, and how you would like your prefixes be named. You may simply press Return on any of those questions to accept the (sane) default suggestions.

The -d flag will accept all defaults.

Note: Please use the -d flag it will make your life much easier.

init will also check your git config to see if the required records for Review Board and Pivotal Tracker are in place, failing if that is not the case.

Creating feature/release/hotfix/support branches

The list of command line flags listed here is not complete. Check the wiki for a more complete list. The best documentation is, however,:

git flow <subcmd> <subsubcmd> -h
  • To list/start/finish feature branches, use:

    git flow feature
    git flow feature start [--for-release RELEASE]
    git flow feature finish [<name>]

    feature start will list unstarted & started stories from current & backlog iterations in Pivotal Tracker. Select one and its state will change to started. This command creates a feature branch as well, so switch between stories using git checkout, not git flow feature start. If you wish to base your story on a release branch, use --for-release RELEASE. This will also assign the story in Pivotal Tracker as a part of starting it.

    feature finish will finish the currently active story (merge it into develop, push develop, change the story state in PT to finished and post a review request to Pivotal Tracker). It will do its best to find the corersponding review request in ReviewBoard and update the review but if it can't then it will post a new review. You can force posting a new review by setting the -n/--new-review flag.

  • To push/pull a feature branch to the remote repository, use:

    git flow feature publish <name>
    git flow feature pull <remote> <name>
  • To list/start/finish release branches, use:

    git flow release
    git flow release start <major.minor.release> [<base>]
    git flow release finish [-R|--ignore-missing-reviews] [<major.minor.release>]

    If you are not using Review Board for your project, you can use -R or --ignore-missing-reviews to skip the reviews check while doing a release.

  • To list/start/finish hotfix branches (not supported by Salsita), use:

    git flow hotfix
    git flow hotfix start <release> [<base>]
    git flow hotfix finish <release>
  • To list/start support branches (not supported by Salsita), use:

    git flow support
    git flow support start <release> <base>

    For support branches, the <base> arg must be a commit on master.


A small demo how a complete feature implementation could look like:

$ git config --global reviewboard.server https://example.com/rb/
$ git config --global reviewboard.url https://example.com/rb/
$ git config --global workflow.token 0123456789
$ mkdir project
$ cd project
$ git remote add origin git@github.com:salsita/project.git
$ git pull
$ git flow init -d # Pick the project from PT and the repo from RB.
$ git checkout develop
$ git flow feature start # Pick the story from PT.
# Code code code
$ git add *
$ git commit -s
# Enter a beautiful and descriptive commit message.
$ git flow feature finish
# Go to the Review Board to submit the generated review request.

History of the Project

gitflow was originally developed by Vincent Driessen as a set of shell-scripts. In Juni 2007 he started a Python rewrite but did not finish it. In February 2012 Hartmut Goebel started completing the Python rewrite and asked Vincent to pull his changes. But in June 2012 Vincent closed the pull-request and deleted his python-rewrite branch. So Hartmut decided to release the Python rewrite on his own.

Showing your appreciation to the original authors

Of course, the best way to show your appreciation for the git-flow tool itself remains contributing to the community. If you'd like to show your appreciation in another way, however, consider donating to the original authors through PayPal: Donate

Subscribe to package updates

Last updated Jan 9th, 2014

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.