2009-03-25 30 views
14

Tôi có một kho lưu trữ có các cửa sổ (cp1252) và linux (utf8). Rõ ràng Git bị nhầm lẫn và đặt tên tệp không hợp lệ (từ quan điểm của Linux). Tôi biết tôi có thể sử dụng móc để đổi tên các tập tin trong một bên (trên Linux, ví dụ, đổi tên các tập tin từ cp1252 để utf8 khi họ đến và ngược lại khi họ đi), nhưng ... chính xác làm thế nào để tôi làm điều đó? Chính xác cái móc nào tôi phải viết?Git - xử lý tên tệp mã hóa hỗn hợp

+1

Sẽ dễ dàng hơn khi chuyển đổi tệp một lần và sử dụng UTF-8 trên Windows không? – TimWolla

Trả lời

7

Câu hỏi hay!

http://www.serverwatch.com/tutorials/article.php/3705216 Nói về một công cụ có tên "convmv" sẽ sửa tên tệp. Điều này có thể hữu ích.

Iconv http://www.gnu.org/software/libiconv/ có thể chuyển đổi văn bản tùy ý thành các bộ ký tự khác nhau.

http://ozmm.org/posts/git_post_commit_for_profit.html Cho bạn biết cách thực hiện móc hậu hậu, cụ thể hơn là Ruby. Có vẻ như bạn chỉ cần thêm một tập lệnh để thực hiện trong .git/hooks/post-commit và git sẽ chạy nó sau khi bạn cam kết. Nó có thể là một kịch bản mà thậm chí chạy một kịch bản trong repo git của bạn.

Đối với tập lệnh, tôi khuyên bạn nên chỉ quét bằng tìm, chuyển tên tệp thành UTF-8, xem nếu tên đó đã là tên đó và nếu không, hãy di chuyển nó.

+0

nhưng sau cam kết móc đúng? Tôi đã suy nghĩ tôi đã phải chuyển đổi (trên linux) từ cp1252 sang utf8 sau khi các tập tin Received aingnd quay lại cp1252 trước khi commit hoặc so sánh các tập tin với kho lưu trữ khác (vì máy linux là một thiểu số trong mạng - và convmv có thể dễ dàng cài đặt trong * buntu) ... – Massa

+1

'tiền cam kết' có vẻ đầy hứa hẹn. xem: http://git-scm.com/book/en/Customizing-Git-Git-Hooks – tessi

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