2009-08-08 27 views
36

Tôi đang cài đặt bản beta msysgit 1.6.4 trên VPC phát triển Win Vista của mình. Màn hình cài đặt đang yêu cầu tôi có muốn sử dụng kết thúc dòng Unix hoặc chấm dứt dòng DOS hay không. Thông thường, tôi chọn DOS, nhưng văn bản thiết lập chỉ ra rằng kết thúc DOS có thể có nghĩa là các tệp không hoạt động với tất cả các công cụ dòng lệnh của Git. Kết thúc dòng Unix "... hầu hết các ứng dụng [Windows] có thể xử lý việc này ...".Git 1.6.4 beta trên Windows (msysgit) - Kết thúc dòng Unix hoặc DOS

Có ai biết tôi nên chọn tùy chọn nào để sử dụng Git qua trình bao cho công việc VS 2008 của tôi không?

Trả lời

106

Cài đặt đó trong quá trình cài đặt msysgit thực sự ở đây để sửa giá trị của core.autocrlfconfig.

core.autocrlf 

Nếu đúng, làm cho git chuyển đổi CRLF vào cuối các dòng trong tập tin văn bản để LF khi đọc từ hệ thống tập tin, và chuyển đổi ngược lại khi văn bản cho hệ thống tập tin.

Biến có thể được đặt thành 'input', trong trường hợp này, chuyển đổi chỉ xảy ra khi đọc từ hệ thống tệp nhưng tệp được viết bằng LF ở cuối dòng.

Hiện tại, đường dẫn nào để xem xét "văn bản" (tức là phải tuân theo cơ chế autocrlf) được quyết định hoàn toàn dựa trên nội dung.

tôi sẽ nhấn mạnh vào không cố gắng để chuyển đổi bất cứ điều gì automagically, các tác dụng phụ chỉ là quá quan trọng (trong nhiệm kỳ của xung đột sáp nhập tiềm năng, đặc biệt là về phát triển phân phối với các môi trường khác nhau)

Nếu công cụ của bạn có thể xử lý chấm dứt dòng Unix, bạn nên thiết lập chúng để tạo ra các dòng Unix, sau đó có thể được đọc bởi Windows (VS2008, Notepad ++, ...) và Unix, và có thể được xử lý bởi bất kỳ tập lệnh 'sh' Git nào.

Nhưng với core.autocrlf đặt thành false, quyết định chuyển đổi văn bản chấm dứt văn bản sẽ là một hình thức tự nguyện rõ ràng, không phải là nền ẩn bên có hiệu lực một.


Xem thêm tại "How line ending conversions work with git core.autocrlf between different operating systems"

 
       | Resulting conversion when  | Resulting conversion when 
       | committing files with various | checking out FROM repo - 
       | EOLs INTO repo and    | with mixed files in it and 
       | core.autocrlf value:   | core.autocrlf value:   
-------------------------------------------------------------------------------- 
File    | true  | input  | false | true  | input | false 
-------------------------------------------------------------------------------- 
Windows-CRLF  | CRLF -> LF | CRLF -> LF | as-is | as-is  | as-is | as-is 
Unix -LF   | as-is  | as-is  | as-is | LF -> CRLF | as-is | as-is 
Mac -CR   | as-is  | as-is  | as-is | as-is  | as-is | as-is 
Mixed-CRLF+LF | as-is  | as-is  | as-is | as-is  | as-is | as-is 
Mixed-CRLF+LF+CR | as-is  | as-is  | as-is | as-is  | as-is | as-is 

+0

Cảm ơn bạn! Tôi đang đi trước với chấm dứt dòng Unix. –

+0

Tôi không thấy cách bạn có thể nhận được xung đột hợp nhất dựa trên kết thúc dòng. Trong trường hợp bạn có autocrlf True, nếu bạn tìm nạp từ một người có CRLF cục bộ thì các kết thúc sẽ được chuyển thành LF (trước khi hợp nhất) không? (Bạn cũng sẽ có bất kỳ CRLF nào được chuyển thành LF nếu bạn vừa mới đẩy cục bộ) – RJFalconer

+0

@BlueNovember: lý do là bạn không thể đảm bảo mọi Git trong mọi môi trường có cài đặt đúng. Ngay cả khi bạn không nhận được xung đột trong môi trường của bạn, bạn có thể gây ra vấn đề không ngờ trong các máy khách Git từ xa khác. – VonC

2

Visual Studio 2008 xử lý Unix chấm dứt dòng mà không gặp sự cố. Tuy nhiên, nó sẽ cố gắng để phát hiện các tập tin văn bản với chấm dứt dòng không phù hợp trong một nỗ lực để sửa chữa những. Notepad, mặt khác không thể hiển thị đúng các tệp văn bản Unix.

+35

Hy vọng rằng khả năng tương thích Notepad không phải là một yêu cầu quan trọng. –

+0

Không, tính tương thích của Notepad không phải là vấn đề. Âm thanh như Unix chấm dứt là sự lựa chọn tốt hơn. Cảm ơn bạn! –

+9

Notepad ++ hoạt động hoàn hảo với cả hai kiểu kết thúc dòng. – alexandrul

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