Jakaminen versionhallintavarastojen välillä alipuuyhdistyksellä



Ohjelmistokehityksessä on joskus tarve sisällyttää toisen projektin lähdekoodi oman projektin versionhallintaan moduulina tavalla jossa muutokset moduuliin voivat liikkua hallitusti molempiin suuntiin oman ja toisen projektin välillä: omassa projektissa voi tehdä muutoksia toisen projektin lähdekoodiin jotka myöhemmin voidaan hallitusti viedä takaisin alkuperäiseen toiseen projektiin, sekä toisen projektin uusia muutoksia voidaan hallitusti tuoda omaan projektiin.

Tämä onnistuu esimerkiksi Git:in alipuuyhdistysstrategialla (engl. subtree merge strategy). Alla sarja komentoja ajettava oman projektin työhakemistossa jolla saa $subtree_url-osoitteessa olevan projektin $subtree_dir-nimiseen alihakemistoon omassa projektissa:

git remote add -f $subtree_repo $subtree_url
git merge -s ours --no-commit $subtree_repo/master
git read-tree --prefix=$subtree_dir/ -u $subtree_repo/master
git commit -m "Merge $subtree_repo as subdirectory."

Tämän jälkeen alihakemistoa voi muokata vapaasti paikallisten tarpeiden mukaan. Muutokset toisesta projektista saa aina tarvittaessa tuotua alihakemistoon seuraavalla komennolla:

git pull -s subtree $subtree_repo master

Mahdolliset paikalliset muutokset yhdistetään tällöin hallitusti toisen projektin muutoksiin. Paikalliset muutokset voidaan vastaavalla tavalla viedä toiseen projektiin käyttämällä samaa alipuuyhdistysstrategiaa toisen projektin puolella koska alipuuyhdistysstrategia tunnistaa itse kumpi puoli on alipuu.

Hyvä puoli alipuuyhdistysstrategiassa on että se ei vaadi lisätoimia oman projektin versionhallintakäyttäjiltä tuodun moduulin suhteen, koska se on sisällytetty omaan projektiin tasavertaisesti oman koodin kanssa. Vertaa Git:in alimoduuleihin (engl. submodules) joka on toinen tapa tuoda ulkopuolisen projektin omaan projektiin, mutta vaatii lisätoimia versionhallinan käyttäjiltä (alimoduulien alustaminen).

Alipuuyhdistysstrategiasta kiinnostuneille Junio Hamanon selitys Git-postituslistalla on hyvä johdanto aiheeseen.

Tämän artikkelin on kirjoittanut Markus Holmberg  ja sitä ovat sittemmin muokanneet muut Codenton työntekijät.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *