gitflow 0.1 released

After the overwhelming attention and feedback on the Git branching model post, a general consensus was that this workflow would benefit from some form of proper scriptability. The workflow works seamlessly if you perform the steps involved manually, but hey… manually is manually, really.

UPDATE 2/4/2010:
Anyone reading this: I recommend NOT USING this very early release, but to jump on the current develop tip, which is much more mature. Release 0.2 is coming very soon.

An assisting tool (dubbed gitflow) was therefore created to provide simple, high-level commands to adopt the workflow into your own software development process. It’s free and it’s open source. Feel free to contribute to it if you like.

Fork me on Github:
http://github.com/nvie/gitflow

Since this morning, the first working release 0.1 was tagged, albeit very basic.

A quick walkthrough

The gitflow script essentially features six subcommands: paired start/finish commands for managing the different types of branches from the originating article:

  • Feature branches
    • gitflow start feature myfeature
    • gitflow finish feature myfeature
  • Release branches
    • gitflow start release version-id
    • gitflow finish release version-id
  • Hotfix branches
    • gitflow start hotfix version-id
    • gitflow finish hotfix version-id

Each of these scripts exactly reports what actions were taken and what follow-up actions are required by the user. This output will be polished in future versions to improve the UX. An example output:

$ gitflow finish feature foo
Branches 'develop' and 'origin/develop' have diverged.
And local branch 'develop' is ahead of 'origin/develop'.
Switched to branch "develop"
Your branch is ahead of 'origin/develop' by 12 commits.
Merge made by recursive.
 README |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Deleted branch foo (cd3effb).

Summary of actions:
- The feature branch 'foo' was merged into 'develop'
- Feature branch 'foo' has been removed
- You are now on branch 'develop'

Limitations

The script is very limited at the moment yet, but future versions will fix that, too. Some of the main limitations:

  • Branch names (master, develop) and the remote repo name (origin) are currently fixed.
  • There is no support for dealing with merge conflicts yet.
  • There is no support for support-* branches (see the original comment that proposed this extension)
  • There is no documentation.
  • There is no installer.

However, as this post is written, some of the limitations are already taken care of by community members. Power to the open source!

  • http://blog.vizio360.co.uk Simone Vicentini

    This is really good Vicent,

    Actually a few days ago, after a colleague of mine pointed me to your blog post about GitFlow, I was wondering to create automatic scripts for the main actions you suggest in the GitFlow process. And here they are! :)
    thanks for sharing this!

    I’ll have a look at the scripts and try them out and see if I can contribute

    cheers
    Simone

  • http://blog.vizio360.co.uk Simone Vicentini

    This is really good Vicent,

    Actually a few days ago, after a colleague of mine pointed me to your blog post about GitFlow, I was wondering to create automatic scripts for the main actions you suggest in the GitFlow process. And here they are! :)
    thanks for sharing this!

    I’ll have a look at the scripts and try them out and see if I can contribute

    cheers
    Simone

blog comments powered by Disqus