Cosa sono i sottomoduli Git e come li usi?

Di Redazione FinanzaNews24 6 minuti di lettura
cosa-sono-i-sottomoduli-git-e-come-li-usi?

I sottomoduli Git sono un modo per includere un repository Git come sottodirectory di un altro repository. Questo tipo di nidificazione del codice sorgente può essere molto utile per i progetti che desiderano un controllo più preciso sulle proprie dipendenze e sul processo di compilazione ed è facile da configurare.

Quando aggiungi un sottomodulo a un repository Git, stai essenzialmente creando un collegamento tra i due repository. Il repository principale e il repository del sottomodulo possono essere aggiornati indipendentemente l’uno dall’altro. Il repository principale conterrà un URL remoto e un riferimento all’ID commit estratto nella cronologia del sottomodulo. Quando cloni il repository principale, clonerà anche i sottomoduli.

Ciò può essere utile se si dispone di un progetto che dipende dal codice di un altro progetto e si desidera mantenere separati i due progetti (e le rispettive cronologie delle versioni), ma essere comunque in grado di lavorare facilmente con entrambi.

L’alternativa principale ai sottomoduli è l’utilizzo di gestori di pacchetti come NPM, NuGet o Maven. I gestori di pacchetti forniscono un repository centralizzato di pacchetti e librerie che possono essere facilmente installati e aggiornati. Tuttavia, devi pubblicare una versione specifica di ciascun pacchetto che desideri utilizzare. E se il tuo codice è privato, devi usare il tuo registro di pacchetto privato.

I sottomoduli Git ti consentono di gestire le dipendenze più da vicino rispetto alla maggior parte dei gestori di pacchetti. Con i sottomoduli, puoi scegliere esattamente quali versioni di ogni dipendenza vuoi includere nel tuo progetto, ed è più facile aggiornare l’ID commit del sottomodulo piuttosto che pubblicare un nuovo pacchetto.

I sottomoduli semplificano inoltre la manutenzione e l’utilizzo di fork di librerie comuni, che è qualcosa che molte aziende scelgono quando sono necessarie funzionalità aggiuntive o personalizzazioni. In definitiva, se stai mantenendo un repository per il modulo e hai bisogno di un controllo granulare sulle tue dipendenze, potresti prendere in considerazione l’utilizzo di sottomoduli invece di gestori di pacchetti.

Come utilizzare i sottomoduli Git Se stai clonando un repository che utilizza già i sottomoduli, la maggior parte del lavoro è già stata eseguita per te. Il tuo client git dovrebbe clonare e scaricare automaticamente il repository del sottomodulo e dovrebbe aggiornarsi ogni volta che altri manutentori inviano modifiche al sottomodulo.

In caso contrario, potrebbe essere necessario eseguire git clone con il –recursive flag, che eseguirà la scansione e aggiornerà tutti i sottomoduli.

git clone –recurse-submodules URL L’aggiunta di un nuovo sottomodulo è abbastanza semplice. Se stai aggiungendo un sottomodulo nuovo di zecca da un repository di origine, dovrai solo eseguire git submodule add:

git submodule add URL submodule_directory Questo scaricherà il repository del sottomodulo dall’URL e lo clonerà nel file submodule_directory cartella.

Tuttavia, se desideri convertire una cartella esistente, il processo è un po’ più complicato. Puoi leggi la nostra guida per convertire una directory in un sottomodulo quima il processo prevede la clonazione del repository principale, il filtraggio della cronologia dei commit per includere solo la directory del modulo e quindi il push del sottomodulo in un nuovo repository.

Una volta aggiunto il sottomodulo, sarà necessario eseguire il commit delle modifiche nel repository principale. Questo aggiornerà la configurazione per tutti gli altri che estraggono il repository principale.

git commit -m “Added submodule submodule_directory” Aggiornamento dei sottomoduli Git Se qualcun altro ha aggiornato il sottomodulo o hai bisogno di estrarre gli aggiornamenti dal repository del sottomodulo, ti consigliamo di utilizzare git submodule update:

git submodule update –remote Tuttavia, se devi apportare modifiche da solo, diventa un po’ più complicato. Apportare modifiche al codice nei sottomoduli Git richiede un po’ di attenzione in più rispetto all’aggiornamento del codice in un normale repository Git e generalmente hai due opzioni:

Apporta le modifiche in un repository separato per il sottomodulo, esegui il commit e aggiornale normalmente. Dovrai correre git submodule update nel repository principale per eseguire il pull delle nuove modifiche. Apporta le modifiche all’interno del repository principale. Poiché un sottomodulo è fondamentalmente un repository Git incorporato, puoi farlo cd nella directory del sottomodulo ed esegui normalmente i comandi Git. Questo è uno dei principali vantaggi dei sottomoduli, poiché puoi mantenere repository separati mentre lavori su entrambi contemporaneamente. Se stai apportando modifiche all’interno del repository principale, dovrai farlo cd nel sottomodulo e aggiornare:

cd submodule_dir git commit -am “submodule commit” git push Quindi, torna al repository principale e invia gli aggiornamenti al sottomodulo al repository principale:

cd .. git commit -am “updated submodule” git push Dovresti vedere le modifiche sia sul repository Github del sottomodulo che sul repository principale.

Condividi questo articolo
Exit mobile version