Opis problemu:
Klienci: A, B, C
Branche w repo: główny, branch_a, branch_b, branch_c
Aktualnie to wygląda w ten sposób, że jest jeden główny branch plus branch A, B i C. Branch główny to taka trochę klasa abstrakcyjna, bo wchodzi tam wszystko co ma wejść na instancje A, B oraz C. W momencie aktualizacji główny branch jest domergowywany do pozostałych. Zmiany, które są tylko dla klienta A wchodzą tylko na branch_a itd.
Jakie rozwiązania widzę:
Rozwiązanie, które jest w zgodzie z myśleniem Janusza, czyli zostawiamy kod dalej na tym samym repo (a nie robimy oddzielnie dla każdego klienta) spowoduje jedno z dwóch:
a) Pierdyliard ifów w kodzie (teraz dwa, a w przyszłości dwa tysiące)
b) Można wczytywanie odpowiednich widoków zamieść głęboko pod dywan, żeby uniknąć ifów i sprawdać klienta tylko raz podczas bootstrapa aplikacji, ale wtedy dla każdej z instancji musiałby być tworzony osobny widok, bo przecież wszystko stoi na jednym kodzie - FUCK DRY.
Pomijam fakt związany np. z optymalizacją zapytań, bo jeżeli jeden klient będzie chciał widzieć 2 kolumny, a drugi 20 to tak czy siak będzie tam trzeba albo załatować wszystkie potrzebne dane, albo kolejne ify?
Mi się osobiście wydaje, że rozdzielenie tego, tak żeby każdy klient miał swój osobny kod (a nie wszystko razem) jest najbardziej sensowne, ale moje doświadczenie jest zbyt małe, żeby to stwierdzić.
Co myślicie?