We're creating a migration workflow to move from SVN to Git, and we've hit a particular snag that is increasing the complexity of the proposed workflow.
Some basic base for what we do in our current workflow:
- we operate on a regular monthly release cycle, where multiple projects (features) are bundled together into a single production release
- each production release has its own "staging" branch, which means that multiple projects (= 1 release) are staged and tested together
- there are multiple staging environments, which means that one production release can be tested on multiple staging branches first, each for a different environment.
- each "release" has a single develop branch, in which the projects of that release are merged into. This develop branch is then used to create the "staging" branch
We are trying to emulate the same flow in git as much as we can - however :
Consider the following case :
release1 = project/A, project/B > (merge) > develop/20201130 > staging/20201130 [> (merge) master (tag v1.X)] release2 = project/C, project/D > (merge) > develop/20201031 > staging/20201031 [> (merge) master (tag v1.X)]
Now, if staging/20201130 already exists when staging/20201031 is created, then staging/20201130 will need to pull the code from staging/20201031 because staging/20201031 will be released before staging/20201130.
However, if release2 (20201031) changes (for ex: its release date changes, or staging/20201031 is updated/deleted), then release/20201130 will have to be updated again, which gets messy if release/20201130 has also undergone changes during this time.
Basically, I want to know if there is a workflow or if someone has experience in working with multiple interdependent staging branches that need to be updated/modified depending on the status of other staging branches.
(Sorry if I cant articulate it well enough, or if this is a very basic question. I also have a feeling somewhere my lack of advanced git knowledge is making me overthink this)