← Articoli

Come usare git diff con i file epub

Tracciare file epub, docx, pptx e sqlite in Git

Non amo molto i formati binari, perché è difficile tenerne traccia delle modifiche. Per fortuna esistono modi per gestire in Git file binari come epub, docx, pptx e persino database SQLite, rendendoli più gestibili. In questo articolo vediamo alcune tecniche per usare git diff con questi formati binari e metterli sotto controllo di versione.

Configurazione di Git per diversi formati binari

Tracciare i formati basati su ZIP

Come spiegato in un articolo di tante.cc, alcuni formati binari come docx e pptx sono essenzialmente pacchetti ZIP di file XML, il che rende possibile una qualche forma di diff. Per permettere a Git di gestire questi formati, seguite questi passaggi:

Utenti Windows: in Windows il percorso ~/.config/git/attributes equivale a \.config\git\attributes, dove rappresenta la directory home del vostro account utente Windows (C:\Users\).

  1. Aprite il file ~/.gitconfig (createlo se non esiste ancora) e aggiungete la seguente sezione:

    [diff "zip"]
    textconv = unzip -c -a
    

    Questa configurazione indica a Git di usare il comando unzip per convertire il file ZIP in testo ASCII durante i diff.

  2. Create o modificate il file YOUR_GIT_REPOSITORY/.gitattributes o ~/.config/git/attributes e aggiungete le seguenti righe:

    *.pptx diff=zip
    *.docx diff=zip
    *.epub diff=zip
    *.odt diff=zip
    

    Queste righe specificano quali estensioni di file Git deve trattare come formati ZIP per il diff.

Ora, quando usate git diff, Git decomprime automaticamente questi file e vi mostra le differenze in ASCII, facilitando il tracciamento delle modifiche in questi formati binari.

Gestire i vecchi file di Microsoft Office

Anche i file di Microsoft Office come .doc, .xls e .ppt possono essere gestiti configurando Git. Ecco i passaggi:

  1. Aggiungete le seguenti righe al file $HOME/.config/git/attributes:

    *.doc diff=doc
    *.xls diff=xls
    *.xlsx diff=xls
    *.ppt diff=ppt
    

    In questo modo queste estensioni vengono associate a configurazioni di diff specifiche.

  2. Aggiungete quanto segue al file di configurazione globale $HOME/.gitconfig o $HOME/.config/git/config:

    [diff "word"]
      textconv = catdoc
      binary = true
    [diff "xls"]
      textconv = xls2csv
      binary = true
    [diff "ppt"]
      textconv = catppt
      binary = true
    

    Queste configurazioni usano un convertitore di testo diverso per ogni formato, così da rendere i diff più leggibili.

Gestire i vecchi file di Open Office

Se usate Open Office, potete seguire un approccio simile a quello per i file di Microsoft Office. Ecco come:

  1. Nel file degli attributi aggiungete:

    *.odt diff=odt
    

    In questo modo l’estensione .odt viene associata alla configurazione di diff.

  2. Nel file di configurazione aggiungete:

    [diff "odt"]
        textconv = odt2txt
        binary = true
    

    Questa configurazione usa odt2txt per convertire i file .odt ai fini del diff.

Gestire i file PDF

Anche i file PDF possono essere gestiti con Git. A tale scopo, apportate le seguenti modifiche al file degli attributi:

*.pdf diff=pdf

E nel file di configurazione:

[diff "pdf"]
  textconv = pdf2txt.py
  binary = true

Questa configurazione permette a Git di estrarre il testo dai PDF per i diff.

Tracciare le modifiche ai database SQLite

I database SQLite sono file binari e tracciarne le modifiche può essere difficile. Potete comunque ottenere in Git diff significativi per i database SQLite. Ecco come:

  1. Aggiungete alla configurazione un tipo di diff chiamato “sqlite3”:

    git config diff.sqlite3.binary true
    git config diff.sqlite3.textconv "echo .dump | sqlite3"
    

    In alternativa, aggiungete questo frammento a ~/.gitconfig o a .git/config nel vostro repository:

    [diff "sqlite3"]
      binary = true
      textconv = "echo .dump | sqlite3"
    
  2. Create un file chiamato .gitattributes, se non esiste già, e aggiungete questa riga:

    *.sqlite diff=sqlite3
    

Ora, quando eseguite git diff o qualsiasi altro comando Git che produce un diff su un file SQLite, vedrete un diff ben formattato delle modifiche, il che facilita il tracciamento dei cambiamenti nei database SQLite.

Conclusione

In questo articolo abbiamo visto varie tecniche per gestire in Git formati binari come epub, docx, pptx e database SQLite. Configurando Git perché usi convertitori di testo e strategie di diff specifici, potete rendere questi file binari più gestibili e avere una visione più chiara delle loro modifiche. Con questi approcci potete tracciare e mettere sotto controllo di versione una gamma più ampia di formati nei vostri repository Git.

Per maggiori informazioni e ulteriori possibilità di personalizzazione, consultate le fonti indicate e la documentazione di Git: