Git submoduly
Disclaimer: Tento článek mohl být tweet, ale napsal jsem ho hlavně pro své budoucí já.
Git submoduly umožňují vložit do repozitáře jiný repozitář. To je užitečné, pokud chcete využít kód z jiného repozitáře, aniž byste ho museli kopírovat do svého repozitáře.
Já jsem potřeboval do různých projektů použít jeden zdroj dat. Původní řešení obnášelo kopírování souborů do každého projektu. To bylo nepraktické, protože jsem musel aktualizovat soubory v každém projektu, když se změnily.
Git submoduly mi umožnily vložit zdroj dat do každého projektu. Když se zdroj dat změní, stačí aktualizovat submodul a změny se projeví ve všech projektech.
Lze použít i pro data, která se dynamicky mění. Třeba pomocí GitHub Action flat-data. Potom se už jen musí updatnout projekt se submodulem.
Postup
Pokud změním data v submodulu:
- Provést změny v submodulu
- Commitnout a pushnout změny v submodulu
- Aktualizovat submodul a commitnout změnu v projektu
Repozitář pro zdroj dat
Vytvořil jsem repozitář segeda/data-json na GitHubu. Do repozitáře jsem nahrál soubor s daty.
Repozitář pro projekt
Vytvořil jsem repozitář segeda/data-js projektu.
Přidal jsem submodul s daty do repozitáře projektu.
git submodule add git@github.com:segeda/data-json.git data
git commit -m "add submodule"
Aktualizace submodulu
Když se změní data, stačí aktualizovat submodul.
git submodule update --remote data
git commit -am "update submodule"
Klonování projektu
Pokud chcete klonoval projekt se submoduly, musíte inicializovat submoduly.
git clone git@github.com:segeda/data-js.git
cd data-js
git submodule init
git submodule update