notes

Personal notes

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:

  1. Provést změny v submodulu
  2. Commitnout a pushnout změny v submodulu
  3. 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