Unione senza conflitti di spazi bianchi

Ho un problema in cui ho un grosso commit che modifica circa un migliaio di righe di codice, rimuovendo gli spazi bianchi dalla fine delle righe e rimuovendo gli spazi prima delle tabs.

Ci sono anche circa 50 richieste di pull per questo progetto, che avranno tutti conflitti quando il mio commit viene unito. C’è un modo in cui git può essere impostato in modo che quando si uniscono i commit futuri, ignori i conflitti in cui uno di essi è solo un cambiamento di spazio bianco?

La modifica di git stesso o l’utilizzo di uno strumento di terze parti non è ansible, ma l’uso di un hook va bene.

git merge -Xignore-all-space 

O (più preciso)

  git merge -Xignore-space-change 

dovrebbe essere sufficiente per ignorare tutti i conflitti relativi allo spazio durante l’unione.

Vedi git diff :

 --ignore-space-change 

Ignora i cambiamenti nella quantità di spazi bianchi.
Questo ignora lo spazio bianco alla fine della riga e considera tutte le altre sequenze di uno o più caratteri di spaziatura equivalenti.

 --ignore-all-space 

Ignora gli spazi bianchi quando si confrontano le linee.
Questo ignora le differenze anche se una riga ha spazi bianchi in cui l’altra linea non ne ha.

ks1322 aggiunge nei commenti un buon consiglio:

Vale la pena fondersi con --no-commit e rivedere l’unione prima del commit effettivo .


L’ OP Callum Macrae riporta che, in tal caso, l’unione procede senza interruzioni e gli spazi finali contenuti nelle patch di richiesta pull vengono applicati ai file locali.
Tuttavia, l’OP utilizza un hook di pre-commit che si occupa di detti spazi finali.
(Suppongo un po ‘simile a questo , anch’esso menzionato qui ).


L’hook pre-commit dell’OP è riferito qui :

Oltre a rimuovere spazi bianchi finali, rimuove da uno a tre spazi prima delle tabs (ho impostato la larghezza della scheda su 4) e aggiunge EOL.
Ho avuto rapporti che il codice che aggiunge EOL cancella il file in Windows, ma non è stato in grado di replicarlo.