GIT – submodules – rozdzielenie repozytoriów

Jednym z założeń Shopping Manager było stworzenie aplikacji restowej – backend napisany w Go oraz frontend utworzony przy pomocy Angular2. Jako, że jest to również aplikacja konkursowa, na tegoroczną edycję Daj Się Poznać, zobligowany byłem całość umieścić w jednym repozytorium.

Proces dewelopmentu nie był przez to utrudniony. Wszak pracę nad aplikacją wykonuję cały czas sam. Nie zbaczając z toru, tkwiłem jednak w tym błędnym rozwiązaniu.

Moment krytyczny

Przyszedł jednak dzień, że aplikacja powinna opuścić localhosta. Wtedy też, chcąc nie chcąc, musiałem rozdzielić backend od frontendu.

Z pomocą przyszedł niezawodny GIT. Oferuje on rozwiązanie submodules, które doskonale nadaje się do rozwiązania wszystkich problemów. Pierwsze zdania z dokumentacji znakomicie odzwierciedlają mój problem:

It often happens that while working on one project, you need to use another project from within it. Perhaps it’s a library that a third party developed or that you’re developing separately and using in multiple parent projects. A common issue arises in these scenarios: you want to be able to treat the two projects as separate yet still be able to use one from within the other.

Dwa nowe repozytoria

Dotychczasowa struktura wyglądała następująco:

GIT - Shopping Manager

By rozdzielić repozytoria, trzeba wpierw założyć nowe. Dlatego stworzyłem odpowiednio shopping-manager-api i shopping-manager-web:

Po odpowiednim sformatowaniu plików i przygotowaniu niezależnych repozytoriów, możemy je umieścić w starym. Aby to zrobić należy posłużyć się komendą:

git submodule add nazwa_repozytorium

Dodatkowo zależało mi, by struktura projektu została taka sama. Dlatego po nazwie repozytorium podałem nazwę folderu, w którym submodule miał zostać stworzony:

git submodule add [email protected]:dawidrylko/shopping-manager-api.git api

Repozytorium zostało sklonowane do wskazanego katalogu. Został także stworzony plik .gitmodules, którego struktura przedstawia się następująco:

Jeżeli teraz spojrzymy na główne repozytorium, możemy zauważyć, że wygląd folderu się zmienił. Dodatkowo obok folderu widnieje commit na który wskazuje submodule.

GIT submodules

Aktualizacja

Repozytoria, które zawarte są w submodułach, wskazują na odpowiedniego commita. Aby zaaktualizować submodules wykonujemy komendę:

git submodule update --remote --merge

 

Dawid Ryłko

Lubię dobre filmy, gry oraz kawę. W pracy front-end, po godzinach wszystko inne.

 
Współpraca:
Polski Front-End