Skip to content
forked from nvie/gitflow

ITM Version of the Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

License

Notifications You must be signed in to change notification settings

fspreng/ITM_gitflow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ITM Gitflow script package

ITM Version of the Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

Getting started

You find a short summary on the basic concept of Vincent Driessen's branching model in Steve's SourceTree blog post.

Other fantastic sources of information are:

Highlights of ITM Gitflow

  • Additional subcommands git-flow clone, git-flow commit, and git-flow release for better user-friendliness.

  • Less effort for user due to a fully automated creation of version numbers for upcoming releases and hotfixes.

  • Thorough overhaul of original git-flow subcommands:

    • Improved strategy for synchronization of local repository with remote one to ensure data consistency and avoid redundancy.

    • Additional action git-flow feature update <name> [<base>] to reduce required user interaction.

    • Additional action git-flow <branch specifier> delete [-l] to further reduce necessity to use standard Git commands along with the ITM Gitflow script.

    • Removed superfluous restrictions of original subcommands to be able to deal with a higher number of scenarios possibly occurring during development.

    • Additional flags for all subcommands to make them easier to use and more flexible.

    • Possibility to merge a hotfix branch also into an existing release branch when finishing it in order to reduce the number of necessary workarounds.

    • Further developed the concept of support branches to allow for special solutions where necessary.

  • Additional sanity checks to improve script stability and safety in terms of data loss and branch conflicts.

  • A more detailed and concise user feedback to speed up the development process.

  • Improved source code documentation.

For more detailed information on all available ITM Gitflow subcommands/branch specifiers, branch actions, and accepted flags and arguments, see the cheat sheet. It also provides you with some facts about the underlying Git branching model by Vincent Driessen and the particularities of ITM Gitflow, as well as some suggestions on how to get started with the script and on the actual workflow.

A complete list of modification can be found in the changelog of the ITM Gitflow script package.

Installation

See the Wiki for up-to-date installation instructions.

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.

FAQ

The version numbering scheme is the following: <Major tag>.<Minor tag>.<Hotfix tag>

For more information, please see the FAQ section of the project Wiki.

Please help out

This project is under development. Questions, tips, and general remarks are very welcome and I encourage you to use the Issues list on GitHub to provide that feedback.

Feel free to fork this repository and commit your additions.

Contributing

Fork the repository. Then, run:

git clone --recursive git@github.com:<username>/ITM_gitflow.git
cd ITM_gitflow

Install the ITM Gitflow software by running make.

git-flow init -d
git-flow feature start <your feature>

When you're done, open a pull request to your feature branch.

Usage

Initialization

To initialize a new repository 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.

Creating feature/release/hotfix/support branches

  • To list/start/update/track/finish/delete feature branches, use:

      git-flow feature
      git-flow feature start <name> [<base>] (default: <base>=develop)
      git-flow feature update <name> [<base>] (default: <base>=develop)
      git-flow feature track <name>
      git-flow feature finish <name>
      git-flow feature delete <name>
    

    For feature branches, the <base> argument must be a branch, default value is develop.

  • To list/start/track/finish/delete hotfix branches, use:

      git-flow hotfix
      git-flow hotfix start <version>
      git-flow hotfix track <name>
      git-flow hotfix finish <name>
      git-flow hotfix delete <name>
    
  • To list/start/track/finish/delete release branches, use:

      git-flow release
      git-flow release start major or git-flow release start minor
      git-flow release track <name>
      git-flow release finish <name>
      git-flow release delete <name>
    
  • To list/start/delete support branches, use:

      git-flow support
      git-flow support start <name> <base>
      git-flow support delete <name>
    

    For support branches, the <base> argument must be a branch.

Enjoying the additional subcommands of ITM Gitflow

  • clone subcommand (clone + init + chmod):

      git-flow clone <reference repository> <destination directory>
    

    Clones the specified reference repository into the provided destination directory, e.g. <destination directory>=., initializes the ITM Gitflow script package for the cloned repository, and modifies the access permissions of the target directory in such a way that only the owner of the repository is allowed to read, write, and execute all content.

  • commit subcommand (commit + push):

      git-flow commit [flags <arguments>]
    

    Basically, the commit subcommand is a wrapper script combining a commit to the local repository with one to the tracked remote repository. For this, the standard git commit command is employed and, therefore, git-flow commit accepts the same flags and arguments as the git commit command does.

  • reset subcommand (reset + push):

      git-flow reset [flags <arguments>]
    

    Basically, the reset subcommand is a wrapper script combining a reset of the local repository with one of the tracked remote repository. For this, the standard git reset command is employed and, therefore, git-flow reset accepts the same flags and arguments as the git reset command does.

License terms

The ITM Gitflow script package is published under the liberal terms of the MIT License and the original git-flow software is released under the FreeBSD License, see the LICENSE file. Although the MIT 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.

About

ITM Version of the Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 93.1%
  • Makefile 3.8%
  • Batchfile 3.1%