Qual è l'approccio migliore per l'utilizzo di Git per un progetto contenente un database binario di grandi dimensioni (4 GB, 4000 file)?

3

Il codebase consiste di 190 file sorgente Fortran 95+ e una directory di file di coefficienti binari richiesti per l'uso del codice. La directory binaria contiene circa 4000 file, alcuni dei quali maggiori di 100 mb, ma non più grandi di 200 mb. La stragrande maggioranza è inferiore a un megabyte. I file vengono aggiornati di tanto in tanto e ogni versione semi-principale del codice 1.x richiede un ricalcolo di tutti i file dei coefficienti.
Più utenti accederanno al codice attraverso il processo del ciclo di sviluppo, con più filiali.

La domanda è: come gestisco e distribuisco in modo appropriato questo codice base usando Git? Prima di contrassegnare questo duplicato, ho letto attentamente le varie risposte StackOverflow a questa domanda. Git-lfs mi attrae di più, ma l'ambiente di sviluppo che ho non vuole abilitare il supporto git-lfs (computer operativi del governo federale).

In realtà git nativo gestisce i file abbastanza bene, e le mie differenze e fusioni non prendono un tempo assurdamente lungo - ma è un modo piuttosto abusivo per affrontarlo in termini di spazio su disco richiesto per l'archiviazione interna git.

Voglio anche essere in grado di ospitare su bitbucket o, preferibilmente, su github. Github ha un limite di dimensione del file di 100 MB, IIRC. Quindi qualunque sia la soluzione, deve essere compatibile con le soluzioni di hosting online.
Mi rendo conto che ciò potrebbe essere restrittivo, ma questo è anche il motivo per cui lo sto chiedendo.

Cordiali saluti,

-Ben

    
posta Ben 28.12.2017 - 17:17
fonte

1 risposta

2

Il miglior approccio a cui riesco a pensare è:

  • non mettere i grandi file binari direttamente nel controllo di versione, invece, inseriscili in una cartella con un numero di versione su una condivisione di rete (o qualsiasi altro tipo di server di archiviazione file disponibile)

  • aggiungi uno script all'albero dei sorgenti che crea una copia locale della "versione corrente" dei file binari dalla condivisione di rete nell'ambiente di sviluppo locale, se non è già presente. Metti lo script sotto controllo di versione.

Se richiesto, puoi anche eseguire l'esecuzione di quella parte di script del tuo normale processo di compilazione. Per una certa complessità, l'utilizzo di un gestore di pacchetti potrebbe essere una buona idea, come menzionato da @BerinLoritsch. Tuttavia, ciò ha senso solo se puoi scegliere liberamente gli strumenti del tuo ambiente di sviluppo.

In questo modo, puoi disaccoppiare la gestione della configurazione del tuo codice sorgente in una certa misura dalla gestione della configurazione dei file binari di grandi dimensioni.

    
risposta data 28.12.2017 - 23:24
fonte

Leggi altre domande sui tag