2010-07-19 5 views
12

Nella mia finestra di Windows, ho provato a creare una patch Subversion utilizzando il comando svn diff > my_patch.diff. Il file risultante è stato codificato con UTF-16, anziché UTF-8 o ASCII, quindi quando ho provato a utilizzare patch (da GnuWin32) per applicare la patch, non ha funzionato.Come impedire "svn diff" dalla generazione dell'output Unicode su Windows

Sono stato in grado di convertire il file di patch in UTF8 aprendolo in Blocco note e salvando come il formato desiderato, e patch gestito bene dopo quello. Ma c'è un modo per ottenere svn diff per generare UTF8 su Windows?


Aggiornamento: Come la mia risposta indica, si scopre che il problema è davvero estraneo a Subversion, diff o patch. È stato PowerShell che è stato oh-così-utile convertire l'output in Unicode. Sto lasciando la domanda così com'è, in modo che qualcuno con un problema simile potrebbe inciampare su di esso.

+0

Nelle versioni linux, è possibile fornire '--diff-cmd', è anche il caso della variante della riga di comando di Windows? – Wrikken

+0

'--diff-cmd' è supportato. Cosa dovrei usare come argomento? –

+2

Nota a margine: Subversion non ama UTF-16 o UTF-32. Li tratterà sempre come file binari e quindi 'svn diff' non funziona nemmeno su di essi (braindead ma ancora nessuna correzione). Quindi, lì (al momento) non può essere un modo che svn di 'Unicode in nient'altro che UTF-8. – Joey

risposta

14

Dopo tanto testa-graffio e la sperimentazione di diversi diff utility, ho capito questo:

correvo il mio svn diff in una finestra di comando PowerShell. Gli operatori di reindirizzamento dell'output di PowerShell convertono l'output in Unicode.

Se corro svn diff > my_patch.diff in una shell , allora tutto funziona correttamente.

per fare questo lavoro in PowerShell, si deve utilizzare un comando come questo:

svn diff | out-file -encoding ascii my_patch.diff 

Sono sicuro che ci sia qualcuno alla Microsoft che pensa che questo comportamento è davvero impressionante.