Note: Controller here refers to one from MVCs
Bear with me, I know these are seemingly unrelated. However, I'm inclined to think both are analogous to each other being that they're means to the same end (i.e. safe product release).
Background: you want to safely push new updates without breaking existing product. Assume it was functioning properly. With feature branches, you can easily rollback to the last stable version. With extended controllers, you can use your DI to inject or swap in the implementation without new, shortlived feature.
How do both methods compare against each other? Which is safer? I feel extended controllers minimise impact for failure given the surface area to test is smaller than replacing the existing controllers and testing them as if they're brand new. In addition, this is in line with the Open-Closed SOLID principle.
On the other hand, I fear continous extension will eventually lead to maintaining an internal git and we may get confused given sufficient parallel features shelved for plug and play.
Does git absolve the need for extending controllers for this purpose or maintaining interchangeable parts?