Invece di conficcare le tue risorse in repository git, considera se puoi mantenere un server di tutte le risorse, dove ogni versione di asset ha un URL stabile (ad esempio, l'hash della risorsa, nome della risorsa + data di pubblicazione o nome + versione numero). Gli script di compilazione con versione contengono quindi gli URL delle risorse e scaricano le risorse in fase di compilazione (eventualmente memorizzate nella cache). Per aggiornare le risorse, aggiorna gli URL nei tuoi script (potresti scrivere uno strumento che lo faccia automaticamente!).
Se si desidera aggiornare implicitamente le risorse in tutti i repository quando viene caricata una nuova versione di asset, utilizzare un URL che punti sempre alla versione di asset più recente. Verranno scaricati dagli script di compilazione per la prossima build pulita. Tuttavia, ciò significherebbe che non è possibile creare vecchie versioni con le risorse utilizzate al momento. Ciò in parte vanifica il punto di controllo della versione, quindi sarebbe preferibile utilizzare URL stabili.
Tali approcci di gestione patrimoniale sono simili alla gestione delle dipendenze: quando il mio codice ha una dipendenza da un'altra libreria non aggiungo quella libreria come sottomodulo, né copio i binari della libreria nel mio repository, ma utilizzo un gestore di pacchetti per l'installazione la Biblioteca. Potresti letteralmente utilizzare un gestore di pacchetti esistente che si connette a un server privato per gestire le tue risorse. Un gestore di pacchetti può anche aiutarti con gli aggiornamenti delle risorse.
Esistono estensioni Git che forniscono funzionalità correlate, ad es. Git LFS. LFS memorizza i file specificati al di fuori della cronologia Git ma li preleva da un server LFS su richiesta. Tuttavia, l'intenzione non è quella di gestire le risorse condivise, ma di mantenere le dimensioni del repository piccole, quindi potrebbe non essere adatto al tuo caso d'uso.
Uscire da Git significa che il mio repository non è più autonomo: ho bisogno di una connessione di rete per fare una build pulita. Ma devi tracciare la linea da qualche parte. Per esempio. la maggior parte dei progetti non esegue il controllo della versione dei propri compilatori o sistemi operativi come parte del repository (anche se le tecnologie e i contenitori di virtualizzazione lo rendono possibile).