Lo scenarioPuò git trattare i file zip come directory e file all'interno dello zip come blob?
Immaginate sono costretto a lavorare con alcuni dei miei file sempre memorizzati all'interno .zip
file. Alcuni dei file all'interno del file zip sono piccoli file di testo e cambiano spesso, mentre altri sono più grandi ma per fortuna piuttosto statici (ad esempio immagini).
Se voglio inserire questi file zip all'interno di un repository git
, ogni zip viene trattato come un blob, quindi ogni volta che commetto il repository cresce in base alla dimensione del file zip ... anche se all'interno è presente solo un piccolo file di testo cambiato!
Perchè questo è realistico
MS Word ed Excel 2007/2010 .docx
.xlsx
file sono file ZIP ...
Quello che voglio
è lì, per caso, un modo per dire a git
di non considerare le zip come file, ma piuttosto come directory e come trattare i loro contenuti come file?
I vantaggi
- molto più piccole dimensioni pronti contro termine, vale a dire più veloce di trasferimento/backup
- Display changes with Git to zip's sarebbe automagically lavorare
Ma non poteva lavorare, che dici?
mi rendo conto che senza i metadati in più questo porterebbe a una certa quantità di ambiguità: su una git git checkout
dovrebbe decidere se creare foo.zip/bar.txt
come un file in una directory regolare o un file zip. Tuttavia questo potrebbe essere risolto attraverso le opzioni di configurazione, penserei.
Due idee come potrebbe essere fatto (se non esiste ancora)
- utilizzando una libreria come
minizip
oIO::Compress::Zip
all'interno git - in qualche modo l'aggiunta di uno strato di file system in modo tale che in realtà git vede i file zip come directory per iniziare con
Lo scenario con '.docx 'i file hanno senso, ma in molti altri casi si potrebbe voler considerare il tracciamento dei singoli file normalmente con git e solo * costruire * il risultante' .zip' usando uno strumento di compilazione appropriato come 'make'. – pixelistik
Considerando che due file zip che sembrano diversi tra loro possono contenere gli stessi dati esatti (ad esempio un file di testo zippato due volte con due diversi livelli di compressione), questo diventa molto più complicato. Mentre è facile rappresentare la differenza tra le due versioni dei file decompressi con poche informazioni, suppongo che rappresenti la differenza tra le due versioni dell'archivio (che è essenzialmente ciò che deve fare git) con circa il minimo di informazioni che sarebbero non -banale. – HelloGoodbye
Hai mai avuto una soluzione implementata di [risposta di Jeff] (https://stackoverflow.com/a/8001900/321973) o qualcos'altro? Mi chiedo fondamentalmente la stessa eccezione [per gli archivi tar] (https://stackoverflow.com/q/37000849/321973), che dovrebbe fornire una risposta compatibile ... –