Chciałbym wiedzieć, czy sensownie jest podzielić projekt, nad którym pracuję, na dwa repozytoria zamiast jednego.
Z tego co mogę powiedzieć:
- Frontend zostanie napisany w html + js
- Backend w .net
- Backend nie zależy od frontendu, a frontend nie zależy od backendu
- Frontend użyje spokojnego interfejsu API zaimplementowanego w backend.
- Frontend może być hostowany na dowolnym statycznym serwerze http.
Na razie repozytorium ma następującą strukturę:
korzeń:
- frontend / *
- backend / *
Myślę, że błędem jest utrzymywanie obu projektów w tym samym repozytorium. Ponieważ oba projekty nie mają zależności między sobą, powinny one należeć do poszczególnych repozytoriów, aw razie potrzeby do repozytorium nadrzędnego zawierającego podmoduły.
Powiedziano mi, że jest to bezcelowe i że nie uzyskamy z tego żadnej korzyści.
Oto niektóre z moich argumentów:
- Mamy dwa moduły, które nie zależą od siebie.
- Posiadanie historii źródłowej obu projektów na dłuższą metę może skomplikować sytuację (spróbuj wyszukać w historii coś w interfejsie, mając połowę zatwierdzeń, które są całkowicie niezwiązane z szukanym błędem)
- Konflikt i scalanie (to nie powinno się zdarzyć, ale zmuszenie kogoś do pchnięcia backendu zmusi innego programistę do wycofania zmian backendu w celu pchnięcia zmian frontendu).
- Jeden programista może działać tylko na backendie, ale zawsze będzie musiał wyciągnąć frontend lub na odwrót.
- Na dłuższą metę, kiedy nadejdzie czas na wdrożenie. W pewien sposób interfejs może zostać wdrożony na wielu statycznych serwerach, mając jednocześnie jeden serwer zaplecza. W każdym przypadku ludzie będą zmuszeni albo do sklonowania całego backendu, albo do stworzenia niestandardowego skryptu, aby wypychał na wszystkie serwery tylko frontend lub usuwał backend. Łatwiej jest po prostu pchać / ciągnąć tylko frontend lub backend niż oba, jeśli tylko jeden jest potrzebny.
- Przeciwdziałanie argumentom (jedna osoba może pracować przy obu projektach), Utwórz trzecie repozytorium z podmodułem i rozwijaj się z nim. Historia jest podzielona na poszczególne moduły i zawsze możesz tworzyć tagi, w których wersja backend / frontend naprawdę działa razem. Posiadanie obu frontend / backend razem w jednym repozytorium nie oznacza, że będą one działać razem. To tylko połączenie obu historii w jedno duże repo.
- Posiadanie frontendu / backendu jako submodułów ułatwi to, jeśli chcesz dodać freelancera do projektu. W niektórych przypadkach tak naprawdę nie chcesz dać pełnego dostępu do bazy kodów. Posiadanie jednego dużego modułu sprawi, że będzie trudniej, jeśli chcesz ograniczyć to, co „obcy” mogą zobaczyć / edytować.
- Wprowadzenie błędu i naprawa błędu, wstawiłem nowy błąd w interfejsie. Następnie ktoś naprawia błąd w backend. W jednym repozytorium wycofanie przed nowym błędem spowoduje również wycofanie backendu, co może utrudnić jego naprawienie. Musiałbym sklonować backend w innym folderze, aby backend działał podczas naprawiania błędu w frontendzie ... a następnie próbowałem go przerobić ... Posiadanie dwóch repozytoriów będzie bezbolesne, ponieważ przemieszczenie HEAD jednego repo wygrało nie zmieniaj drugiego. A testowanie różnych wersji backendu będzie bezbolesne.
Czy ktoś może podać mi więcej argumentów, aby je przekonać lub przynajmniej powiedzieć mi, dlaczego dzielenie projektu na dwa podmoduły jest bezcelowe (bardziej skomplikowane). Projekt jest nowy, a baza kodów ma kilka dni, więc nie jest za wcześnie, aby to naprawić.