All of the code we write must be tested and accepted by users before it can go into production. Which brings about a unique possibility of a syncing issue when we are doing so in a branch development scenario.
The image below is a great reference. Say we have two imaginary branches, one for features and two for production fixes. In reality there would probably be a branch for every production fix and multiple branches for on-going development. The trunk is code that has been released to production.
We are doing our development in branch one. Every once in awhile we integrate changes from the trunk because it reflects production code (and we want to make sure we have that integrated in our code).We hit a code lock down period before production where all changes need to be tested. In a branching development scenario, we would need to merge all changes from the mainline BEFORE we start our regression testing (integrate and test).
This testing before a release to production could take awhile, and by awhile, anywhere from a couple of days to a couple of weeks. What if after we do our final merge up from the trunk to the branch and begin testing, there is an emergency change that goes into production? Do we pull that back up (integrate the new changes that went into prod) and start our testing over? If there are several issues (that keep requiring emergency fixes), would we ever get out of testing?
