2010-10-27 17 views
31

sto cercando di implementare Git per gestire le risorse creative (Photoshop, Illustrator, Maya, ecc), e mi piacerebbe per escludere i file da Git in base alla dimensione del file, piuttosto che di estensione, posizione, eccgitignore per dimensione del file?

Ad esempio, non voglio escludere tutti i file .avi, ma ci sono una manciata di enormi file avi + 1GB in directory casuali che non desidero eseguire il commit.

Qualche suggerimento?

+1

Vorrei avvertire che Git è noto per le sue scarse prestazioni con file binari di grandi dimensioni e questo problema viene risolto solo lentamente. Consiglierei di non usare Git per cose oltre al semplice testo. – erjiang

+0

@erjiang: concordato. (eccetto che i file binari di piccole dimensioni sono perfettamente a posto, certo, non si possono diffondere in modo soddisfacente, ma nessun VCS può farlo) Ovviamente, l'OP sta dicendo che non vuole tracciare file di grandi dimensioni, quindi potrebbe essere tutto ok ! – Cascabel

+2

Non c'è certamente un modo integrato per farlo. È possibile implementarlo aggiungendo un hook pre-commit che controlla la dimensione di tutti i file da impegnare e interrompe se ci sono dei superamenti. È possibile aggiungere automazione aggiuntiva, ma attenzione. L'ultima cosa che vuoi è perdere i dati ignorando accidentalmente i contenuti importanti. (In ordine di crescente pericolo, è possibile: rimuovere automaticamente i file di grandi dimensioni, aggiungerli automaticamente al gitignore e persino procedere con il commit modificato invece di interrompere.) – Cascabel

risposta

31

Sono nuovo di .gitignore, così ci possono essere modi migliori per fare questo, ma ho Esclusione di file di dimensione del file utilizzando:

find . -size +1G | cat >> .gitignore 

Ovviamente dovrete eseguire questo codice frequentemente se stai generando un sacco di file di grandi dimensioni.

+0

Questo è un ottimo modo per controllare la cartella 'wp-content/uploads' quando si distribuiscono siti di grandi dimensioni costruiti in WordPress. Grazie per questo. –

+3

Ho trovato che dovevo rimuovere il comando '. /' Dall'inizio di ogni file prima che gitignore funzionasse – IanB

+1

Questo è un thread molto vecchio, ma nel caso qualcuno ci si imbattesse sopra e avesse bisogno di una soluzione passabile: 'find. -size + 1G | sed 's |^\ ./ || g' | cat >> .gitignore' – antass

Problemi correlati