Background: I have a large program my company is developing and have been using GIT for collaboration, code sharing, repo storage, etc. We are starting to move this program to more of a product and are beginning to sell to other clients. It's highly customized and as we are making this move we are running into some challenges about how to handle the code base going forward.
Basic requirements:
-
2+ product release paths that are able to have unique changes to each maintained throughout the product's life. An overly-simplified example of this is company A wants a page called "Settings" and company B wants the page called "Configurations" but outside of that the pages are the same.
-
Updates can be pushed to both easily. An overly-simplified example of this is we find a bug on this Settings/Configuration page and would like to only patch it once and push it to both/all release paths without having to copy/paste it into both/all different repos. This will account for 95%+ of our use cases.
We have considered leaving everything as a project and reading some kind of config file on each install to manage the differences, but believe the scope of some of our differences might make this untenable. Although, if there is no easier/better solution this is our fallback plan.
Another path we are considering is get away from a "master" branch in GIT and have a "Release-CompanyA" and "Release-CompanyB" branch and future feature updates and bug fixes just get pushed into those individually and we manage them very carefully with some kind of crazy merging strategy. Figuring out that merge strategy is beyond my understanding of GIT right now - but am willing to learn if needed.
So just to re-state (TLDR): We want a single git repo with 2 release paths. Some differences on those paths to stay different, but some updates to be universal to all.
Is there a good, or "industry standard", solution for this or have smarter people than me determined this to be a bad direction to go?
Thanks in advance.
Aucun commentaire:
Enregistrer un commentaire