2010-07-19 6 views
12

Auf meinem Windows-Rechner zu verhindern, habe ich versucht, mit dem Befehl svn diff > my_patch.diff einen Subversion-Patch zu erstellen. Die resultierende Datei wurde mit UTF-16 anstelle von UTF-8 oder ASCII codiert. Als ich versuchte, patch (von GnuWin32) zu verwenden, um den Patch anzuwenden, funktionierte das nicht.Wie „svn diff“ von Genen Unicode Ausgabe unter Windows

Ich konnte die Patch-Datei in UTF8 konvertieren, indem Sie es im Editor öffnen und speichern als das gewünschte Format, und patch behandelt danach gut. Aber gibt es eine Möglichkeit, svn diff UTF8 unter Windows zu generieren?


Update: Als meine Antwort zeigt an, es stellt sich heraus, dass das Problem zu Subversion wirklich nichts zu tun hat, diff oder patch. Es war PowerShell, die die Ausgabe achtsam in Unicode umwandelte. Ich lasse die Frage so, wie sie ist, damit jemand mit einem ähnlichen Problem darüber stolpern kann.

+0

In Linux-Varianten, ein '--diff-cmd' gegeben werden kann, ist, dass auch der Fall für die Kommandozeile Variante Fenster? – Wrikken

+0

'--diff-cmd' wird unterstützt. Was soll ich als Argument verwenden? –

+2

Randnotiz: Subversion mag UTF-16 oder UTF-32 nicht. Es wird sie immer als Binärdateien behandeln und deshalb funktioniert 'svn diff' nicht einmal an ihnen (braindead, aber immer noch nicht behoben). Also, (derzeit) kann kein Weg sein, dass 'svn di' Unicode in etwas anderem als UTF-8. – Joey

Antwort

14

Nach viel Kopf-Kratzen und mit verschiedenen diff Dienstprogramme experimentieren, ich dachte, dies aus:

, ich hatte meine svn diff in einem Powershell-Befehlsfenster. Die Ausgabeumleitungsoperatoren der PowerShell konvertieren die Ausgabe in Unicode.

Wenn ich svn diff > my_patch.diff in einer Shell cmd.exe ausführen, dann funktioniert alles gut.

Um diese Arbeit in Powershell zu machen, einen einen Befehl wie diesen verwenden müssen:

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

Ich bin sicher, dass es jemand bei Microsoft ist, die dieses Verhalten denken wirklich genial.