First of all, I wanted to say thanks for providing a great explanation of how to effectively leverage Git tags and branches in order to support workflows for releasing semantically versioned artifacts. I'm currently working to define the release process for a project I'm working on and found this extremely useful.
I wanted to discuss the Bugfixes section in a bit more detail. In particular, you mention that bugfixes in a patch release can be ported to the branches for minor and major releases by merging upwards. You also describe how bugfixes in master can, if necessary, be ported to the branches for minor and patch releases by cherry picking downwards.
What are your recommendations for porting bugfixes not upwards or downwards, but across branches? Let's say, for example, that I've released v1.0.0, but am still working toward v1.1.0 when an issue is noticed with the former. In this situation, it makes sense to branch from v1.0.0, fix the issue, and merge the branch back into release/1.Y because v1.1.0 has not yet been released. What if it has been released and is also affected by the issue? Given that minor versions shouldn't introduce backward incompatible changes, should the release/1.0.z branch be merged into the release/1.1.z branch or should the issue be fixed directly in release/1.1.z without providing a fix in release/1.0.z?
In the same light, what if v2.0.0 has already been released and is also affected by the issue? I assume in this case that the merge into release/2.0.z is necessary given that users may have a more difficult time adopting the new major version. Does that make sense?
I hope creating an issue for this discussion is okay. If not, feel free to close it and let me know what I should do instead. Thanks!
First of all, I wanted to say thanks for providing a great explanation of how to effectively leverage Git tags and branches in order to support workflows for releasing semantically versioned artifacts. I'm currently working to define the release process for a project I'm working on and found this extremely useful.
I wanted to discuss the Bugfixes section in a bit more detail. In particular, you mention that bugfixes in a patch release can be ported to the branches for minor and major releases by merging upwards. You also describe how bugfixes in master can, if necessary, be ported to the branches for minor and patch releases by cherry picking downwards.
What are your recommendations for porting bugfixes not upwards or downwards, but across branches? Let's say, for example, that I've released
v1.0.0, but am still working towardv1.1.0when an issue is noticed with the former. In this situation, it makes sense to branch fromv1.0.0, fix the issue, and merge the branch back intorelease/1.Ybecausev1.1.0has not yet been released. What if it has been released and is also affected by the issue? Given that minor versions shouldn't introduce backward incompatible changes, should therelease/1.0.zbranch be merged into therelease/1.1.zbranch or should the issue be fixed directly inrelease/1.1.zwithout providing a fix inrelease/1.0.z?In the same light, what if
v2.0.0has already been released and is also affected by the issue? I assume in this case that the merge intorelease/2.0.zis necessary given that users may have a more difficult time adopting the new major version. Does that make sense?I hope creating an issue for this discussion is okay. If not, feel free to close it and let me know what I should do instead. Thanks!