Dag Blog - we love

Dag Blog

Git Submodules - utilizzo ed esempi

git submodules

I Git Submodules sono una funzionalità di Git che consente di includere un repository Git all'interno di un altro repository. Questo è utile per incorporare progetti separati all'interno di uno principale, mantenendo la separazione tra le cronologie di commit. I submodules richiedono attenzione nella gestione, poiché le modifiche devono essere gestite separatamente nei repository principali e secondari.

I Git Submodules sono una caratteristica di Git, un sistema di controllo versione distribuito ampiamente utilizzato. I Submodules consentono di includere un altro repository Git all'interno di un repository Git principale. Questo può essere utile quando si desidera includere il codice di un altro progetto all'interno del proprio progetto, mantenendo però una separazione netta tra i due.

In altre parole, i Submodules permettono di avere un repository Git all'interno di un altro repository Git. Questo è particolarmente utile quando si lavora su progetti che dipendono da librerie o componenti di terze parti, ma si desidera mantenere una tracciabilità separata per ciascun progetto.

Aggiungere un Submodule

All'interno di un progetto già inizializzato con GIT, è possibile aggiungere in una sottocartella un submodule che fa riferiment ad un repository esistente. Immaginiamo di includere nel nostro progetto, chiamato motocicletta, un altro progetto esistente (ad esempio carburatore):

git submodule add https://github.com/my-workshop/carburatore carburatore

Questo comando crea una cartella e clona in esso il progetto indicat dall'url. A questo punto comparirà anche un altro file .gitmodules che contiene le informazioni di tutti i submodules. Ora è possibile creare un commit.

Tuttavia è necessario inizializzare definitivamente il sottoprogetto facendo in modo che siano inserite le informazioni necessarie in ./.git/config, eseguendo un ulteriore comando:

git submodule update --init --recursive --remote

Questo comando è necessario anche quando si vuole aggiornare il submodule, che nel frattempo ha subito modifiche nel repository remoto.

Si può verificare con il comando git log, eseguito prima nella directory del progetto motocicletta e successivamente in quella del modulo carburatore, che i logs sono differenti e ciascuno riferito allo specifico progetto.

git submodules tree

I Git Submodules sono una potente funzionalità, ma richiedono una buona comprensione di come funzionano i repository Git e come gestire i submodules in modo efficace. Possono essere utilizzati per suddividere grandi progetti in componenti più piccoli, per includere librerie esterne o per mantenere progetti correlati in una singola struttura. Tuttavia, richiedono anche una gestione attenta per evitare complicazioni nel flusso di lavoro.