Stash Branching Model vs. git flow

What are the reasons to introduce a "new" branching model (at least no identical naming with gitflow) within Stash 2.8?

As far as I understood from reading yet, Stash seems to support a branching model not identical with git flow (as supported by Atlassian Sourcetree); at least I do not understand how to configure Stash branching model to meet gitflow ...

branches \Release: Within Stash those are defined as "Release branches are used for release task and long-term maintenance of software versions." - <=> gitflow: "Release branches support preparation of a new production release."

master branch: Within Stash, master is not mentioned explicitly <=> git flow: "We consider origin/master to be the main branch where the source code of HEAD always reflects a production-ready state."

production branch: Stash: The production branch is used while deploying a release. It branches from, and merges back into, the development branch. In a Gitflow-based workflow it is used to prepare for a new production release. This branch does not exist explicitly in gitflow - but from description it seems to correspond the gitflow\Release-Branches ("In a Gitflow-based workflow it is used to prepare for a new production release.")

Summary: gitflow\Release branches seem to be identical to stash\production branches. Stash\Release branches are not directly available within gitflow- it looks like Stash\Release branches correspond "multiple gitflow\master branches". The Stash\Release branches feature was always missing in gitflow in my eyes.

Now my question: How to configure Stash branching model to meet gitflow exactly? How to configure Sourcetree-gitflow to meet Stash branching model?

2 answers

1 accepted

Stash's branching model is highly flexible and can definitely be made compatible with gitflow. Use the following configuration:

Development branch - develop

Production branch - master (select use default branch)

Bugfix branches - Not required. Uncheck

Feature branches - Leave as is. feature/ is correct

Hotfix branches - Leave as is. hotfix/ is correct

Release branches- You have three options here and it depends how you use gitflow

You only use release/ branches in preparation for a release and not for on going maintenance (for patch version releases) then you can optionally enable the release branch version type. You won't really get much benefit from it being enabled

You use release/ branches for both preparation and ongoing maintenace for release. In this case you want to leave it enabled as it. release/ is correct

You use release/ branches for preparation of a release and support/ branches for ongoing maintenace. In this situation you want to change the release branch prefix to support/ in Stash

Gitflow release/ branches are pre-release preparation branches where as Stash's definition also incorporates post-release on-going maintenance (patch version bug fixes). Gitflow flow kind of has this concept by using support/ branches. However it is not clear if this is what support branches are used for as support they are not very well documented and are still experimental.

As of 2.8 Stash doesn't make heavy use of the branching model. It doesn't enforce that developers use the different branch types. It currently uses them for branch creation via the Stash UI as well as to control the flow of automatic cascading merges of release branches.

What about gitflow release/ branches? I made use of them, but did not find it in your suggested mapping from Stash branching model to gitflow ...

Stash release/ branches is the one big missing feature within gitflow (in our environment we've got a couple of customers with different versions. Fixing a certain customer-version shows the need of Stash release/ branches)

You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.

If you are making point releases on release/ branches then you can use release branches in Stash. As I mentioned gitflow promotes that a release branch be deleted when the release is performed. If you are not doing this you can absolutely use Stash's branching model with release branches using the release/ prefix (instead of support/) and then even make use of our cascading merge feature which merges pull requests to downstream release branches

You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.

We're using the release/ branches, but still, "how do I get it to automerge approved pull requests to the develop branch?" This is still the issue that I'm scratching my head about. Maybe this isn't possible. We're using the branches... but doesn't seem like it will merge stuff down to develop without me merging it manually or creating a pull request and going that route.

You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.

So your suggestion is to ditch gitflow so that I instead use release branches that always have a version number on them to get the automerge to work, since Stash doesn't seem to have a way to enble automerging to develop?

You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.

[Note: So it was my turn for Friday Fun and sadly I was sick thanks to rubbish sinus infection... so apologies to most of Europe and Asia for the delayed post. However, I finally got out of bed for t...