Our line of software products requires the development and support of several software versions simultaneously. We are new to Git and have recently adopted Git Flow to take advantage of the Driessen branch model . We have a very small team of software developers with several specialized developers (we all wear a lot of hats) and there is no "integration guru".
In most searches, few specific tips have appeared on how to adapt Git and Git Flow to our needs. It turned out that Git Flow is not suitable for simultaneous support of several versions. In one of the related discussions on SO, there are answers indicating that individual branch names should be used to track the history of individual versions. This and related strategies eliminate the Git thread if it is not modified; see our team limitations above for the reason why this is not practical for us.
The key question is what do others consider to be a good approach for introducing the forked Driessen model as much as possible while supporting multiple release lines?
UPDATE:
Redefining the answers below (especially @Rasmus) with a more focused search and internal discussions on several options leads to the next solution that we are implementing, and which I propose as one of the approaches that may be related to similar groups under similar conditions.
We will not continue to use Git Flow. Instead, we apply the Driessen model to each individual release line in the repo, prefixing each branch name with its intended version, for example:
r1.5/develop
All versions of the project are contained in the Git repository. The launch of the new version of the project consists in creating a small set of new long-lived branches preceded by the release line (for example, r1.6/develop and, in our case, r1.6/release ; no master with its implication of the only valid good building condition).
We install one central public repository for each project on the server, which will become the main means for exchanging codes through local remote repo links. A push to this repository means code that is ready for others to use. Combining RX.Y/develop in and then pushing the RX.Y/release branch means the code intended for release. feature , hotfix , et. and other branches are processed in a similar way. The merge / commit history of a branch for a given release line is clean and straightforward. We donโt want a typical repository strategy with Git to avoid the difficulty of merging repositories that might diverge in structure over time.
In some Git image files (such as SourceTree), this branch structure is recognized and displayed as hierarchical, which helps to understand the history of the top-level project from the branch structure.
Sorry for not voting for any answers; my reputation on SO is not yet minimal for this.
git release-management git-flow
mklein9 Aug 13 '13 at 23:01 2013-08-13 23:01
source share