Skip to content
Vasily Makarov edited this page Feb 14, 2015 · 7 revisions

Git-aflow is an alternative to well known git branching model git-flow. As git-flow, git-aflow is meant to be used with a command-line tool (git-af) which automates things.

Some CLI commands for quick start:

pip3 install gitaflow  # install from PYPI
git af init IterName   # init git-aflow in existing git repo and starts first iteration
git af -h              # list commands
git af <command> -h    # get short usage description

Current status is WIP. Suggestions are welcome.

Why git-aflow?

The common point of many git workflows is a usage of topic-branches for development and various integration branches for testing and releases. Keeping changes in topic branches allows maintainer to select which changes to merge into integration branch. Also, when integration branch history consist of topic merges only, it’s easy to say what changes are included.

The downside of this approach is the fact that conflicts between topic-branches are solved when a topics got merged into integration branches by a person (e.g., maintainer or release-manager) who don’t necessarily knows how to do this right.

The main idea

Git-aflow main idea is that there is a special integration branch (named ‘develop’) and every topic-branch should get merged into develop before it could be merged into other branches. To merge topic into develop, developer use a tool that checks whether this topic conflicts with other topics already merged into develop and shows potential conflicts to developer. Developer should solve conflicts by merging conflicting topics into his topic or by reverting them in develop. When this is done, the tool allows developer to merge his topic into develop branch. As a result, topics merged into develop branch do not conflict with each other, which allows other people to take topics from develop and to merge them into other integration/test/release/master branches in (almost) arbitrary combination without any merge-conflicts. Such merging freedom could significantly simplify things like split-testing, release management etc.

For more details, see workflow page.

License

Git-aflow is free software; you can redistribute it and/or modify it under the terms of the GNU LGPL as published by the Free Software Foundation; either version 2.1 of the GNU LGPL, or (at your option) any later version.

Git-aflow is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Clone this wiki locally