2010-07-19 29 views
12

Trên hộp Windows của tôi, tôi đã cố gắng tạo bản vá Subversion bằng cách sử dụng lệnh svn diff > my_patch.diff. Tệp kết quả được mã hóa bằng UTF-16, thay vì UTF-8 hoặc ASCII, vì vậy khi tôi cố gắng sử dụng patch (từ GnuWin32) để áp dụng bản vá, nó không hoạt động.Cách ngăn chặn "svn diff" từ Tạo đầu ra Unicode trên Windows

Tôi đã có thể chuyển đổi tệp bản vá thành UTF8 bằng cách mở tệp đó trong Notepad và lưu dưới dạng định dạng mong muốn, và patch xử lý sau đó. Nhưng, có cách nào để có được svn diff để tạo UTF8 trên Windows không?


Cập nhật: Như câu trả lời của tôi cho thấy, nó chỉ ra rằng vấn đề là thực sự không liên quan đến Subversion, diff, hoặc patch. Đó là PowerShell đã chuyển đổi đầu ra thành Unicode một cách hữu ích. Tôi để lại câu hỏi như vậy là để ai đó có vấn đề tương tự có thể vấp ngã.

+0

Trong hương vị Linux, có thể cung cấp '--diff-cmd', đó cũng là trường hợp của biến thể dòng lệnh của cửa sổ? – Wrikken

+0

'--diff-cmd' được hỗ trợ. Tôi nên sử dụng cái gì làm đối số? –

+2

Lưu ý phụ: Subversion không thích UTF-16 hoặc UTF-32. Nó sẽ luôn coi chúng là các tệp nhị phân và do đó 'svn diff' thậm chí không hoạt động trên chúng (braindead nhưng vẫn không sửa). Vì vậy, có (hiện tại) không thể là một cách mà 'svn di' Unicode trong bất cứ điều gì khác hơn là UTF-8. – Joey

Trả lời

14

Sau nhiều đầu gãi và thử nghiệm với diff tiện ích khác nhau, tôi figured này ra:

Tôi đã chạy svn diff trong một cửa sổ lệnh PowerShell tôi. Các toán tử chuyển hướng đầu ra của PowerShell chuyển đổi đầu ra thành Unicode.

Nếu tôi chạy svn diff > my_patch.diff trong vỏ cmd.exe, thì mọi thứ hoạt động tốt.

Để làm công việc này trong PowerShell, người ta phải sử dụng một lệnh như thế này:

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

tôi chắc chắn rằng có ai đó tại Microsoft người nghĩ rằng hành vi này là thực sự tuyệt vời.

Các vấn đề liên quan