
I sottomoduli Git sono come repository all'interno di repository, che consentono di includere codice esterno librerie o dipendenze nel tuo progetto, il tutto senza collegare il controllo della versione del modulo al progetto stesso. Ciò mantiene i moduli separati e facili da aggiornare, ed è facile convertire una directory in un nuovo sottomodulo.
Cos'è un sottomodulo in Git ?
Un sottomodulo è un repository Git incorporato in un altro repository Git. Ciò ti consente di includere il codice di un altro progetto come dipendenza, pur mantenendo il proprio controllo di versione.
Quando cloni il repository principale, clona automaticamente anche il repository del sottomodulo. Ciò significa che il codice del sottomodulo e la cronologia Git sono tenuti separati dal controllo della versione principale e possono essere aggiornati per più repository che consumano la libreria.
Un'alternativa ai sottomoduli consiste nel pubblicare le tue librerie come pacchetti in gestori di pacchetti come NPM, Maven o NuGet. Tuttavia, questo non funziona per tutti i tipi di progetti e se stai lavorando con codice privato, dovrai impostare un registro di pacchetto privato, che può essere più complicato del semplice incorporare il codice sorgente della libreria come sottomodulo.
Uno dei principali problemi con la trasformazione di una directory esistente in un sottomodulo è che il sottomodulo deve essere gestito esternamente. Git si aspetta che tu crei una nuova directory vuota per esso e cloni il sottomodulo nel progetto. Puoi copiare il codice in una nuova cartella, ma perderai tutta la cronologia Git ad esso correlata, il che può essere molto dannoso nei progetti di grandi dimensioni. Invece, cloneremo il repository, filtreremo il codice non necessario e invieremo la nuova cronologia al nuovo sottomodulo.
Come trasformare un Directory in un sottomodulo
Il primo passo è creare un nuovo repository per il sottomodulo. Questo di solito è su un servizio di hosting Git come GitHub, anche se puoi creare un repository locale sul tuo computer.
Successivamente, vorrai ottenere una nuova copia del tuo repository principale da cui creare il repository del sottomodulo.
git clone git@github.com:username/repository.git submodule-repo cd submodule-repo
Successivamente, vorrai filtrare tutto ciò che non è correlato al tuo sottomodulo. Questo eliminerà tutta la cronologia dei commit che non è correlata al codice contenuto nel sottomodulo. Questa è un'operazione distruttiva, quindi assicurati di farlo sulla copia del tuo repository, non su quello principale.
git filter-branch –subdirectory-filter submoduledirectory — –all
Lo farai essere lasciato con solo il codice che era nella directory e solo i commit ad esso relativi. Ciò ti consentirà di trasferire tutta la cronologia Git relativa a quel sottomodulo.
Ti consigliamo di modificare l'URL remoto di questa directory del modulo nel tuo nuovo repository del sottomodulo, che in genere è chiamato “ ;origin.”
git remote set-url origin https://github.com/new-repository.git
Quindi, puoi eseguire il push della cronologia come faresti normalmente.
git push -u origin main
Aggiunta di un nuovo sottomodulo
Indietro nel progetto principale, vorrai aggiungere il sottomodulo.
In primo luogo, devi interrompere il tracciamento della directory che vuoi trasformare in un sottomodulo dal repository principale. Sarà ancora presente nella cronologia delle versioni di Git e lo hai appena aggiunto al nuovo repository del modulo.
rm -rf nome_directory
Successivamente, puoi aggiungere l'URL remoto per il repository del sottomodulo che hai creato su Github, utilizzando il comando git submodule add:
git submodule add git@github.com:username/repository.git directory_name
Quando esegui questo comando, Git creerà una nuova directory del sottomodulo nel repository principale e clonerà il repository del sottomodulo in questa directory. Ricomincerà anche a tenere traccia della cartella del modulo.
Per aggiornare il sottomodulo, puoi usare il comando git submodule update:
git submodule update –remote submodule_name READ NEXT
- › VMware porta Windows 11 con accelerazione 3D sui Mac Apple Silicon
- › 7 motivi per cui dovresti eliminare l'illuminazione RGB dalla tua configurazione di gioco
- › Come silenziare le chiamate da numeri sconosciuti su WhatsApp
- › Il trackpad del Mac non funziona? 10 consigli e trucchi da provare
- › Come utilizzare e personalizzare la tastiera virtuale sul tuo deck di Steam
- › Le batterie rimovibili per smartphone potrebbero tornare alla ribalta