Ottimizza un repository git, contenente file binari di grandi dimensioni

20

Il nostro progetto è di circa 11 GB, 10 dei quali sono dati binari (immagini .png). Di conseguenza, le operazioni git diff o git status occupano più di un minuto. Fortunatamente tutti i file di dati sono separati in una cartella con il meraviglioso nome data . L'incarico è "Evita di comprimere, diffondere e altre costose operazioni su file binari."

Sento che gli attributi git sono la soluzione, ma come? O c'è un'architettura migliore di un repo monolitico?

    
posta Vorac 11.03.2016 - 17:06
fonte

2 risposte

18

Puoi usare git-lfs o strumenti simili (git-fat, git-annex, ecc.). Questi strumenti sostituiscono fondamentalmente i file binari nel repository con un piccolo file di testo con hash e memorizzano i dati binari effettivi in un modo non-git, come una condivisione di rete.

Rende diff e tutto superveloce come solo gli hash vengono confrontati, ed è - almeno per git-lfs - trasparente per l'utente (dopo l'installazione una volta).

Afaik git-lfs è supportato da github, gitlab, VisualStudio ed è open source.

    
risposta data 11.03.2016 - 23:47
fonte
1

Usa entrambi GIT e amp; Repository SVN

Se i file binari possono essere separati logicamente dall'origine, potresti prendere in considerazione l'utilizzo di git per i file di testo e un non DVCS come la sovversione per i file binari.

Un progetto su cui lavoro funziona poiché abbiamo molti GB per le librerie per-compilate (per le dipendenze OSX / Win32), che dobbiamo mantenere aggiornato.

D'altro canto, se si hanno utenti non tecnici, l'utilizzo di due sistemi di controllo delle versioni può essere problematico. Tuttavia, se gli artisti non stanno lavorando al codice, potresti fornire uno script per eseguire l'aggiornamento e possono utilizzare subversion per il commit di risorse binarie.

Utilizza SVN (con git svn )

Sebbene questo compromesso non sia sempre così piacevole per gli sviluppatori abituati a usare git regolari, potresti usare SVN per il repository principale e gli sviluppatori possono utilizzare git svn tools.

Questo rende un po 'più di lavoro per gli sviluppatori che usano git, ma significa per tutti coloro che non hanno familiarità con DVCS (o VCS in generale) - possono usare il semplice modello SVN senza dover usare multipli sistemi di controllo di versione complessi.

git-lfs è anche un'opzione, ma non l'ho usato quindi non posso parlare di come funzioni.

    
risposta data 12.03.2016 - 02:00
fonte

Leggi altre domande sui tag