Processo per archiviare i binari da diversi repository usando Git?

0

Lavorando nello spazio dei sistemi embedded, i nostri prodotti di solito richiedono più binari per ciascuno dei microcontrollori all'interno di un singolo prodotto. Usando SVN in precedenza, inseriremo la convalida e i rilasci di produzione in cartelle che contengono tutti i binari necessari da caricare, ad es. V01_00_00, v01_00_01 e così via. Questo era principalmente per dare ai team di validazione e produzione un modo semplice per ottenere tutti i file necessari per assemblare una build specifica del prodotto.

Il nostro pensiero iniziale è semplicemente mantenere lo stesso processo in Git. Conserveremmo un repository che non contiene nient'altro che tag che contengono questi binari, ma sembra sciatto creare branch orfani e taggarli. Esiste un metodo previsto per applicare Git per questo tipo di caso d'uso?

    
posta ohitsderrick 21.09.2018 - 01:41
fonte

1 risposta

1

Una differenza importante tra SVN e Git è che in SVN tutti i file risiedono su un server centrale e solo alcune revisioni vengono verificate. Al contrario, Git scarica il repository completo. Anche se questo consente a Git di funzionare come un sistema di controllo della versione decentralizzato, significa anche che è preferibile mantenere il repository piccolo.

Poiché le dimensioni contano, il check-in (grandi) binari in Git non è una grande idea. Verranno sommate su più versioni per una memorizzazione significativa. Indipendentemente dal fatto che questo abbia importanza dipende ovviamente dal numero totale di file binari e dalle loro dimensioni: esegui prima i numeri per vedere se questo è importante.

È quindi corretto memorizzare i binari esternamente. Per esempio. Git-LFS (archiviazione di file di grandi dimensioni) è un'estensione git ampiamente supportata per fare esattamente questo. Tuttavia, il server potrebbe richiedere una configurazione aggiuntiva. In particolare, i servizi di hosting come GitHub fanno pagare extra per lo storage LFS. Git-Annex è un'altra implementazione di questa idea.

La tua idea di utilizzare un repository separato non risolve il tuo problema, ma lo sposta in un repository diverso. A volte questo è abbastanza buono - l'ho fatto anche io. Poiché tu stai utilizzando Git come meccanismo di archiviazione e non per la gestione del controllo del codice sorgente, è del tutto legittimo ignorare le best practice normali. Un sacco di rami orfani? Nessun problema.

Ma poiché non stai facendo uso di Git, non c'è alcun motivo valido per usare un repository Git per out-source dei tuoi blob. Se non si desidera utilizzare LFS, un'altra possibilità sarebbe quella di caricare i file binari su un server (ma non modificare mai questi file!) E controllare i nomi / URL nel repository. Il processo di compilazione scaricherà quindi i file binari, eventualmente memorizzandoli nella cache localmente. Questo è abbastanza simile a come funziona LFS, tranne che LFS è parte di Git e non fa parte del processo di generazione e che LFS utilizza l'archiviazione indirizzabile al contenuto: invece di specificare nomi / URls, viene utilizzato l'hash dell'oggetto.

    
risposta data 21.09.2018 - 15:39
fonte

Leggi altre domande sui tag