2009-10-05 25 views
9

Chúng tôi có một kho lưu trữ được xuất từ ​​lật đổ vào git. Kho lưu trữ này được sử dụng bởi người dùng Mac, Linux và PC. Không cần phải nói rằng kết thúc dòng là một mớ hỗn độn. Một số tệp kết thúc bằng CRLF, LF hoặc CR và một số tệp có kết hợp giữa hai hoặc ba tệp trong một tệp.Làm rõ/xóa các vấn đề kết thúc dòng trong GIT

Thêm autocrlf = true dường như khắc phục sự cố một chút. Tuy nhiên, sự khác biệt xuất hiện khá lạ ở lần, tức là chỉnh sửa một dòng cho một tệp làm cho tất cả các dòng xuất hiện thay đổi trong khác biệt (tôi giả định đó là do kết thúc dòng cho tệp đã được viết lại) và đôi khi một dòng chỉnh sửa tệp hoạt động chính xác.

Có trang web không, hoặc ai đó có thể giải thích cách chúng tôi có thể sắp xếp điều này không? Có một thiết lập git chúng ta phải thiết lập, hoặc chúng ta phải làm một cập nhật số lượng lớn của tất cả các tập tin để có một dòng nhất định kết thúc hoặc những gì?

Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao vì nó là một mớ hỗn độn!

(Sau đây stackoverflow post xuất hiện nó có thể giúp đỡ, mặc dù nó không trả lời những gì sẽ xảy ra khi chúng tôi có một máy Mac hoặc PC hoặc Linux sử dụng cam kết vá khác)

Trả lời

5

này liên quan SO câu hỏi sẽ được quan tâm đến bạn:

Trying to fix line-endings with git filter-branch, but having no luck

Và đây là a link lời khuyên tương tự từ Github.

Ngoài ra, như đã đề cập trong bài đăng của Greg Hewgill, bạn nên xác minh rằng các ủy viên tương lai sử dụng trình chỉnh sửa xử lý chính sách dòng kết thúc mới một cách chính xác.

Khi bạn nói "Thêm autocrlf = true dường như khắc phục sự cố một chút". Tôi cho rằng điều này được thực hiện bằng cách sử dụng .gitattributes.

+2

Vì vậy, bước một: khắc phục các kết thúc dòng trong kho lưu trữ. Bước hai: yêu cầu mọi người sử dụng 'git config --global core.autocrlf true' và sau đó tát chúng xung quanh nếu chúng cam kết mà không sử dụng nó? – corydoras

+0

@corydoras: Vẻ đẹp của '.gitattributes' là tệp có thể được đẩy vào kho lưu trữ. Nếu 'core.autocrlf' được đặt trong một tệp và được đẩy, thì tôi tin rằng nó sẽ thực thi kết thúc dòng trong bất kỳ dòng vô tính nào. Tuy nhiên, tôi không chắc chắn nếu nhân bản tươi sẽ là cần thiết hoặc nếu mỗi người đi làm sẽ cần phải làm theo những lời khuyên được đưa ra trên Github. –

5

tôi sẽ cố gắng, càng nhiều càng tốt, để chuẩn hóa trên một dòng chung sẽ được sử dụng trong tất cả các tệp nguồn trong dự án của bạn. Một lựa chọn tốt nhất để chọn có thể là LF, tuy nhiên tôi sẽ kiểm tra (các) trình soạn thảo được các nhà phát triển sử dụng xử lý dòng chung được chọn của bạn kết thúc một cách chính xác và chính xác. (Trong trường hợp này, có nghĩa là không thay đổi mỗi dòng trong tệp chỉ vì người dùng đã thay đổi một dòng.)

Bạn có thể cần thực hiện một công việc dọn dẹp lớn và có một cam kết lớn thay đổi tất cả các kết thúc dòng tệp vào tiêu chuẩn bạn đã chọn. Điều này sẽ khó xử nhưng có lẽ không phải là vụng về như duy trì một loạt các kết thúc dòng khác nhau.

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