Come posso convertire tutti i finali di riga in CRLF, LF o CR durante le operazioni SVN

StackOverflow https://stackoverflow.com/questions/15687

  •  08-06-2019
  •  | 
  •  

Domanda

Quindi, sei pronto per fare un grosso commit SVN e fallisce perché hai terminazioni di riga incoerenti in alcuni dei tuoi file.La parte divertente è che stai guardando migliaia di file che si estendono su dozzine di cartelle di diversa profondità.

Cosa fai?

È stato utile?

Soluzione

Non penso che pre-impegno hook può effettivamente modificare i dati di cui si sta effettuando il commit: può impedire un commit, ma non penso che possa eseguire la conversione per te.

Sembra che tu voglia il proprietà 'svn:eol-style' impostato su 'nativo' - questo convertirà automaticamente i ritorni a capo in qualsiasi cosa venga utilizzata sulla tua piattaforma (usa 'CRLF', 'CR' o 'LF' per ottenerli indipendentemente da ciò che il sistema operativo desidera).

Puoi usare proprietà automatiche in modo che tutti i file futuri che creerai avranno questa proprietà impostata (gli oggetti di scena automatici sono gestiti dal lato client, quindi dovresti impostarlo per ciascun utente).

Altri suggerimenti

Il primo è pulire tutto.Utilizzi Windows o Unix/Linux/Mac?

Se utilizzi Unix/Linux/Mac, puoi provare qualcosa del genere:

$ find . -type f -name "*.java" -exec dos2unix {}\;

Questo è se lo hai dos2unix sulla tua scatola.Non è sul mio Mac o su nessuna delle sei macchine Linux che abbiamo.Sembra che non abbiamo installato questo particolare pacchetto.Fortunatamente, è abbastanza facile da trovare.

Fai attenzione a usarlo perché non vuoi ridurre i file binari.

Una volta che hai ripulito tutto, dovresti mettere il svn:eol-style proprietà sui tuoi file.Impostandolo su nativo effettuerà il check-out del file con il finale di riga corretto per la tua macchina, ma lo memorizzerà nel formato di fine riga Unix.Le altre tre opzioni sono "LF" per Unix, "CRLF" per Windows e "CR" per Mac precedenti a Mac OS X.La maggior parte delle persone ritiene che i "nativi" funzionino al meglio.L'unico problema con Native è che non effettuerà il check-in di un file con terminazioni di riga miste mentre "LF" e "CRLF" lo faranno.

Una volta fatto ciò, dovresti ottenere un file gancio pre-impegno ciò ti consentirà di imporre terminazioni di riga su file particolari.Quindi, insegna ai tuoi sviluppatori a utilizzare autoproprietà.L'hook pre-commit impedirà qualsiasi commit a meno che la proprietà non venga inserita nel file. Uno sviluppatore si vede rifiutare il commit una o due volte e imposterà le proprietà automatiche da solo.

Aggiungere un gancio pre-impegno che analizza il contenuto del file ed esegue la munging di CRLF/LF/CR/etc per te prima che venga scritto su SVN.

Potresti prendere in considerazione l'utilizzo di un comando come quello di Linux dos2unix per la conversione.Essendo un comando Linux, è facile usarlo in modalità batch con script, ecc.Non so se esiste un equivalente per altri sistemi operativi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top