2012-03-19 23 views
125

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 schede.Unione senza conflitti di spazi vuoti

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?

Non è possibile modificare git da solo o utilizzare uno strumento di terze parti, ma l'uso di un gancio è soddisfacente.

+0

Possibile duplicazione di [git whitespace woes] (http: // stackoverflow.it/questions/1316364/git-whitespace-woes) –

+0

@CeesTimmerman: Err, è due mesi più giovane di questo. – callumacrae

+0

"ha chiesto il 22 agosto '09 alle 16:27", che è più vecchio di 2 anni. –

risposta

174
git merge -Xignore-all-space 

Or (più precisa)

git merge -Xignore-space-change 

dovrebbe essere sufficiente per ignorare i conflitti legati tutto spazio durante l'unione.

Vedi git diff:

--ignore-space-change 

Ignora cambiamenti nella quantità di spazi bianchi.
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.
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 di fondersi con --no-commit e rivedere la fusione prima del vero e proprio commettere.


Le OP Callum Macrae rapporti che, in questo caso, l'unione procedono senza interruzione, e gli spazi finali contenuti nei cerotti richiesta di pull vengono applicate ai file locali.
Tuttavia, l'OP utilizza un gancio di pre-commit che si occupa di detti spazi finali.
(suppongo un po 'simile a this one, anche referenced here).


del PO pre-commit hook è referenced here:

Oltre a rimuovere spazio vuoto iniziale, si rimuove uno a tre spazi prima linguette (ho tabulazione impostato a 4), e aggiunge EOLs .
Ho segnalato che il codice che aggiunge EOL cancella il file in Windows, ma non è stato in grado di replicarlo.

+0

Grazie! Quello ignorerà lo spazio bianco proprio dove ci sono conflitti, o tutti gli spazi bianchi cambiano nel file? – callumacrae

+0

@CallumMacrae buona domanda. Dovrò testare quel caso. – VonC

+0

Dai miei test fino ad ora, sembra che rimuova tutte le modifiche degli spazi bianchi nel file. Tuttavia, ora sto usando il gancio di pre-commit per rimuovere gli spazi vuoti di coda, quindi non è un problema. – callumacrae

Problemi correlati