it-swarm-vi.tech

Làm cách nào để tôi nói với Subversion để coi tệp là tệp nhị phân?

Làm cách nào để tôi nói với Subversion (svn) để coi tệp là tệp nhị phân?

62
Nick

Có thể xác định thủ công một tệp nằm trong kho lưu trữ dưới dạng nhị phân bằng cách sử dụng:

svn propset svn:mime-type application/octet-stream <filename>

Điều này thường không cần thiết, vì Subversion sẽ cố gắng xác định xem một tệp có phải là nhị phân khi tệp được thêm lần đầu tiên hay không. Nếu Subversion gắn thẻ không chính xác một loại nhất định là "văn bản" khi nó được coi là nhị phân, thì có thể định cấu hình Subversion's tính năng tự động đạo cụ để tự động gắn thẻ tệp đó với loại MIME không phải văn bản. Bất kể thuộc tính được cấu hình trên tệp là gì, Subversion vẫn lưu trữ tệp ở định dạng nhị phân trong kho lưu trữ.

Nếu Subversion xác định loại MIME là loại "văn bản", nó cho phép một số tính năng nhất định không có trên các tệp nhị phân, chẳng hạn như svn diff svn đổ lỗi . Nó cũng cho phép chuyển đổi kết thúc dòng tự động, có thể định cấu hình trên cơ sở từng khách hàng.

Để biết thêm thông tin, hãy xem Subversion xử lý các tệp nhị phân như thế nào?

81
stormlash

Từ trang 367 của sách lật đổ

Theo nghĩa chung nhất, Subversion xử lý các tệp nhị phân duyên dáng hơn CVS. Vì CVS sử dụng RCS, nó chỉ có thể lưu trữ các bản sao đầy đủ liên tiếp của tệp nhị phân thay đổi. Tuy nhiên, Subversion thể hiện sự khác biệt giữa các tệp bằng thuật toán phân biệt nhị phân, bất kể chúng chứa dữ liệu văn bản hay nhị phân. Điều đó có nghĩa là tất cả các tệp được lưu trữ khác nhau (được nén) trong kho lưu trữ.

Người dùng CVS phải đánh dấu các tệp nhị phân bằng cờ -kb để ngăn dữ liệu bị cắt xén (do mở rộng từ khóa và bản dịch kết thúc dòng). Đôi khi họ quên làm điều này.

Subversion có con đường hoang tưởng hơn. Đầu tiên, nó không bao giờ thực hiện bất kỳ loại từ khóa hoặc bản dịch kết thúc dòng nào trừ khi bạn yêu cầu nó làm điều đó một cách rõ ràng (xem phần được gọi là Từ khóa Thay thế Từ khóa và phần được gọi là Chuỗi ký tự kết thúc dòng để biết thêm chi tiết). Theo mặc định, Subversion coi tất cả dữ liệu tệp dưới dạng chuỗi byte theo nghĩa đen và các tệp luôn được lưu trữ trong kho lưu trữ ở trạng thái chưa được dịch.

Thứ hai, Subversion duy trì một khái niệm nội bộ về việc một tập tin là dữ liệu văn bản của Google hay dữ liệu nhị phân, nhưng khái niệm này chỉ còn tồn tại trong bản sao làm việc. Trong quá trình cập nhật svn, Subversion sẽ thực hiện hợp nhất theo ngữ cảnh trên các tệp văn bản được sửa đổi cục bộ, nhưng sẽ không cố gắng làm như vậy đối với các tệp nhị phân.

Để xác định xem có thể hợp nhất theo ngữ cảnh hay không, Subversion kiểm tra thuộc tính loại svn: mime. Nếu tệp không có thuộc tính loại svn: mime hoặc có loại MIME có dạng văn bản (ví dụ: văn bản/*), Subversion giả sử đó là văn bản. Mặt khác, Subversion giả định tệp là nhị phân. Subversion cũng giúp người dùng bằng cách chạy thuật toán phát hiện nhị phân trong lệnh nhập svn và svn thêm lệnh. Các lệnh này sẽ đoán đúng và sau đó (có thể) đặt thuộc tính nhị phân svn: loại mime trên tệp đang được thêm. (Nếu Subversion đoán sai, người dùng luôn có thể xóa hoặc chỉnh sửa thuộc tính.)

Chỉnh sửa tay sẽ được thực hiện bởi

svn propset svn:mime-type some/type filename.extension
21
Evil Andy

Về cơ bản, bạn phải đặt loại mime thành octet-stream:

svn propset svn:mime-type application/octet-stream <filename>
15
KTamas

Nếu 'svn add' đoán loại không chính xác và cung cấp cho bạn một lỗi như sau:

svn: E200009: File 'qt/examples/dialogs/configdialog/images/config.png' has inconsistent newlines
svn: E135000: Inconsistent line ending style

sau đó, cách giải quyết là thêm tệp không có thuộc tính và sau đó đặt thuộc tính trong bước thứ hai:

svn add --no-auto-props qt/examples/dialogs/configdialog/images/config.png
svn propset svn:mime-type image/png qt/examples/dialogs/configdialog/images/config.png
13
user1454388

Ví dụ:

svn propset svn:mime-type image/png foo.png
8
Jan Krüger

Mặc dù Subversion cố gắng tự động phát hiện một tệp có phải là nhị phân hay không, bạn có thể ghi đè loại mime bằng cách sử dụng svn propset . Ví dụ, svn propset svn:mime-type application/octet-stream example.txt. Điều này sẽ làm cho tệp của bạn hoạt động như một tập hợp các byte chứ không phải là một tệp văn bản. Xem thêm, hướng dẫn sử dụng svn trên Tính di động của tệp .

4
grammar31

Nếu sử dụng rùa svn trong Windows, nhấp chuột phải vào tệp và đi đến thuộc tính. Nhấp vào mới và thêm một thuộc tính mới của loại svn: mime-type. Đối với giá trị đặt: application/octet-stream

3
Brian R. Bondy

Theo Subversion FAQ , bạn có thể sử dụng đạo cụ svn để thay đổi thuộc tính svn: mime-type thành ứng dụng/octet-stream

2
Adrian Petrescu

svn tìm kiếm một thuộc tính kiểu mime, đoán nó là văn bản nếu nó không tồn tại. Bạn có thể khám phá thiết lập thuộc tính này, xem http://svnbook.red-bean.com/en/1.5/svn.forcvs.binary-and-trans.html

2
Paul Dixon

Nó thường làm điều này theo mặc định cho bạn, nhưng nếu không, bạn cần xem xét các thuộc tính tệp và đạo cụ.

0
Frank Wiles