Our project has been converted from svn to git. Developers are now using git-svn
, but would like to
move on to harness more of the power under the hood. Wishlist:
- powerful branching, e.g topic/feature branches
- isolation between mainline and staging work on releases, sometimes multiple in parallel.
- lean & mean and stable Jenkins-CI setup - minimal maintenance (vs changing job config after each release)
- short iterations, dev team releases to QA every 2 weeks; not necessarily outside
- multiple products (P1..P3) built from the same sources, released independently; with varying pressure
- have more casual, non-git users in the "greater-team"...they are S&U:).. but we have to give them svn access to at least 1 branch (trunk). Their contributions is restricted a few dirs, so no much confict risk here.
Would the following strategy work?
- develop: the mainline branch where development happens, a'la git-flow
- stable product branches: product1 .. product3. One or more of these will get merges from the main line upon dev release. Seems analogous to 'release start 1.4.3' in git flow-but these would be permanent branches. Releases would be tagged here, then merged back to develop. A this point it would be stable, like master in git-flow, just several of them.
- stop using git-svn directly - pushing/pulling to a mirror instead. The can also use feature branches, if needed
- merge svn/trunk -> develop. Svn would get occasional and isolated check-ins; so planning to automate it by Jenkins job, notifying people if it failed so that can be merged manually
- merge develop->svn/trunk: regularly(eg. daily), in batch mode. This is probably the shakiest part (for newbies at least). Planning something like rebase or some reset wizardy
- CI setup would be straightforward, eg test and dev builds off the mainline, official product builds off their own product branches
Git-Flow is tempting - mainly as it's nicely described and automated. But it does not seem like a perfect match for my case; mainly due to the potentially parallel releases, multiple product lines, and CI aspects.
Any informed opinions would be greatly appreciated.