I've been able to convince my group to use semantic versioning and move to git (from CVS, where all development happened on the trunk).
This is what we've been using for a bit (where the version branches denote the introduction of some kind of new functionality):
master
*
|
* * version 2.0 branch
| /
* *
|/
* * version 1.0 branch
| /
* *
|/
*
|
...
The problem is that when there's a bugfix that needs to be made on the version 1.0 branch, that fix needs to get echoed up to version 2.0 and master. We've been cherry-picking, but I feel like that's more error-prone than I'd like (and I feel like it'll become unmanageable as time goes on).
There are some limitations to what we're doing--it's legacy code, and there isn't a lot of testing being done (starting to introduce unit testing, very little integration testing), so keeping stability on those version branches (not introducing a lot of regression errors) is important.
Do you guys have a better way to approach this than cherry-picking? Is there a better workflow to use? Really appreciative of any help you can provide.
1.x
,2.x
and a general development branch around for semver. You should try to get previous major versions closed as soon as possible. I would actually go as far to say that you shouldn’t do any non-patch updates for any older version, so you would only have a single development branch and one for each still supported version. – poke Mar 8 at 21:30