mandag 18. november 2013 Git
Som lovet dukker det her opp én gjesteblogg om git hver uke, og denne uken heter den...
Yo dawg! I herd u like repos so I put repos in yo repos so u can commit while u commit!
Noen ganger har man et internt bibliotek som blir brukt av flere produkter / programmer. Programmene ligger gjerne i hver sine git depoter, og biblioteket har gjerne sitt eget depot det også. Git submodule lar deg referere til og sjekke ut andre git depoter inni git depotet ditt - samt å dele dette med de andre utviklerne på prosjektet.
Følgende legger til et eksternt git repo som en underkatalog i lib/
i hovedprogrammets repo. Dette produserer en .gitmodules
-fil som du commiter og pusher til de andre.
# Inni utsjekket git depot for hovedprogrammet: $ git submodule add git://gitserver/bibliotek.git lib/bibliotek Cloning into 'lib/bibliotek'... done. $ cat .gitmodules [submodule "lib/bibliotek"] path = lib/bibliotek url = git://gitserver/bibliotek.git $ git add .gitmodules $ git commit -m "La til bibliotek som submodule"
$ git clone git://gitserver/hovedprogram.git $ cd hovedprogram $ git submodule init # Last ned eventuelle undermoduler Submodule 'lib/bibliotek' (git://gitserver/bibliotek.git) registered $ git submodule update Submodule path 'lib/bibliotek': checked out '6a21ab9...'
Gjerne vil man at alle skal ha samme revisjon av undermodulen utsjekket, og kanskje ikke gjeldende HEAD, men heller en godt uttestet tag eller lignende. Man kan da gjøre følgende:
$ cd lib/bibliotek # Gå inn i undermodul $ git checkout v1.0 $ cd .. # Gå tilbake til hovedprogram $ git add bibliotek # Commit revisjonen undermodul er på $ git commit -m "Hovedprogram bruker nå v1.0 av bibliotek"
De andre utviklerne kan så utføre følgende:
$ git pull $ git submodule update
Skrevet av Stian Eikeland.
Tidligere artikler i serien: Branching i git | git bisect