Sono stato alle prese con questo problema esatto negli ultimi giorni e ho scritto una piccola utility .NET per estrarre e normalizzare i file di Excel in modo tale che siano molto più facili da memorizzare nel controllo del codice sorgente. Ho pubblicato l'eseguibile qui:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..e la fonte qui:
https://bitbucket.org/htilabs/ooxmlunpack
Se c'è qualche interesse sono felice di fare questo più configurabile, ma al momento, dovresti inserire l'eseguibile in una cartella (es. la radice del tuo repository sorgente) e quando lo esegui, lo farà:
- der e le sue sottocartelle per qualsiasi .xlsx e un file xlsm
- Prendere una copia del file come * .orig
- Unzip ogni file e ri-Zip con nessuna compressione
- Pretty-stampa tutti i file nell'archivio che sono validi XML
- Elimina il file calcchain.xml dall'archivio (poiché cambia molto e non influisce sul contenuto del file)
- Inline qualsiasi valore di testo non formattato (altrimenti vengono mantenuti in una tabella di ricerca che causa grandi cambiamenti nell'XML interno se anche una singola cella viene modificata)
- Elimina i valori da qualsiasi cellule che contengono formule (in quanto possono essere calcolati solo quando il foglio viene successivamente aperto)
- creare una sottocartella * .extracted, contenente i contenuti dell'archivio zip estratti
Chiaramente non tutte queste cose sono necessarie, ma il risultato finale è un file di foglio di calcolo che verrà ancora aperto in Excel ma che è molto più suscettibile alla compressione differenziale e incrementale. Inoltre, anche la memorizzazione dei file estratti rende molto più evidente nella cronologia delle versioni quali modifiche sono state applicate in ciascuna versione.
Se c'è qualche appetito là fuori, sono felice di rendere lo strumento più configurabile in quanto credo che non tutti vorranno i contenuti estratti, o, eventualmente, i valori rimossi dalle celle delle formule, ma questi sono entrambi molto utile per me il momento.
In test, un foglio di calcolo di 2MB "scompatta" a 21MB ma poi sono riuscito a memorizzare cinque versioni di esso con piccole modifiche tra ognuna, in un file di dati mercurial da 1,9 MB, e visualizzare le differenze tra le versioni utilizzando in modo efficace Beyond Compare in modalità testo.
fonte
2014-06-10 15:33:43
'git' ha il comportamento di aggancio che consentirà questo, ma non so su hg – Daenyth
Per quanto riguarda il secondo punto: tenere presente che questi formati di documento (in particolare .xslx e ODF) non trattano gli spazi come specificato da lo standard XML ma, soprattutto per scopi pratici, preserva spazi bianchi anche se questo non è indicato.Pertanto, il reindenting di un file potrebbe cambiare i contenuti. –
Perché esattamente non si desidera che i file in formato zip siano messi in controllo di revisione. Qual è il problema che vuoi risolvere? – Rudi