2009-01-19 26 views
35

Tôi có một số tệp mà tôi đã kiểm tra vào SVN mà không cần thiết lập đúng loại Mime. Ban đầu SVN phân loại chúng thành nhị phân.Cách giải thích để SVN xử lý tệp dưới dạng văn bản chứ không phải nhị phân

Tôi đã đặt loại Mime của họ trong SVN qua propset thành "text/plain; charset = UTF-8" và I'vc đảm bảo rằng tất cả các tệp được UTF-8 ký. Khi tôi 'svn đổ lỗi tên tập tin', svn nói rằng tập tin là nhị phân và không cho tôi đầu ra đổ lỗi rõ ràng.

Bất kỳ đề xuất nào về cách thuyết phục SVN rằng đây là những tệp văn bản thực sự?

+0

Propget có trả về loại mime thích hợp không? –

+0

Cảm ơn sự tương tác! Có, propget không trả lại loại thích hợp. Tôi vừa làm một: svn propget svn: mime-type tên tệp Kết quả: văn bản/đồng bằng; charset = UTF-8 – DWright

+1

@DWright, chỉ để xác nhận, svn-propset thay đổi loại trong bản sao làm việc cục bộ và _requires một svn commit_ cho loại được thay đổi trong kho lưu trữ. Cả hai loại đều cần phải khớp và có thể "có khả năng khác" đối với lỗi svn diff/svn để có thể hoạt động. – Fox

Trả lời

46

Thiết lập svn: mime-type để chỉ "text/plain" giúp:

svn propset svn:mime-type text/plain build.xml 
svn commit build.xml 

Ngoài ra, bạn có thể buộc Subversion để điều trị một tập tin dưới dạng văn bản khi đổ lỗi:

svn blame file/to/blame --force 
+0

Cảm ơn bạn. Cờ --force đã làm những gì tôi cần. Tôi cũng đã thử chỉ sử dụng "văn bản/đồng bằng", nhưng điều đó không thay đổi nó. – DWright

+7

Dành cho người đọc trong tương lai: svn propset svn: mime-type văn bản/plain build.xml –

+0

Use'find. -name * .proto | xargs svn propset svn: mime-type text/plain' để đánh dấu tất cả các tập tin 'proto' dưới dạng tập tin văn bản thuần túy: –

1

This answer có cùng ý tưởng, nhưng ngược lại. Các trích dẫn trong đó vẫn có liên quan đến truy vấn của bạn.

+0

Vâng, tôi đã thử ngược lại, thiết lập thuộc tính thành văn bản/đồng bằng. Dường như không hoạt động. – DWright

0

Sau khi bạn đã thêm tệp vào kho lưu trữ, bạn có thể cũng cần phải đặt loại trên REPOSITORY. Sử dụng URL tới kho lưu trữ thay vì đường dẫn đến bản sao làm việc trên lệnh propset của bạn.

+1

Điều này sai (hoặc không rõ ràng là sai). Các thuộc tính Subversion được cam kết với kho lưu trữ khi bạn kiểm tra chúng, giống như bất kỳ thay đổi tệp nào khác. – yam655

0

Dường như thao tác với loại mime không thuyết phục svn xử lý tệp dưới dạng văn bản. Nhưng nếu đúng loại mime được thiết lập trước khi cam kết đầu tiên thì svn sẽ xử lý tệp đúng cách. Ví dụ, svn thêm eclipse .project và .classpath như application/xml và xử lý chúng như bin. Nhưng nếu trước khi cam kết đầu tiên bạn thay đổi nó thành văn bản/xml, chúng sẽ được coi là văn bản.

2

Tôi gặp vấn đề tương tự: Tôi đã kiểm tra một số tệp utf8 (mã hóa gốc cho Linux), một số trong số đó đã được chọn sai dưới dạng nhị phân và hiển thị "(bin)". Tôi không đi sâu vào cách xảy ra lỗi, nhưng kiểm tra những gì đã có ...

$ svn propget svn:mime-type * 

... lưu ý rằng tập tin văn bản được kiểm tra trong một cách chính xác không có svn: mime tài sản ở tất cả, và chỉ đơn giản là xóa các svn : mime-type tài sản từ các tập tin văn bản sai lầm sai lệch nhị phân.

$ svn propdel svn:mime-type [mislabeled-text-file...] 
$ svn ci -m "zap binary mime-types" [mislabeled-text-file...] 

Điều này dường như đã không hoạt động. Caveat usor: Tôi không biết Windows sẽ hoạt động như thế nào trong trường hợp này, mặc dù điều này có thể dễ dàng kiểm chứng.

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