2010-06-01 22 views
37

Bạn có thể giải thích về lỗi khoảng trắng trong git, ý nghĩa của chúng, 'squelching' và tôi có cần phải lo lắng về nó không?git, lỗi khoảng trắng, squelching và autocrlf, câu trả lời dứt khoát

(Chạy msysgit, nhưng với người dùng khác trên linux).

Đã có một câu trả lời 'dứt khoát' cho autocrlf here (thiết lập nó là false git config --global core.autocrlf false )

+0

Và một câu trả lời 'dứt khoát' lỗi khoảng trắng [ở đây] (http://stackoverflow.com/questions/12396622/what-does-1-line-adds-whitespace-errors -mean-when-apply-a-vá/12396793 # 12396793). –

Trả lời

22

Squelching ban đầu được một chức năng được sử dụng trong viễn thông để thiết lập một ngưỡng trên mà một tín hiệu là hoặc không alllowed xuyên qua.

Trong trường hợp của bạn, khi bạn nhìn thấy:

warning: squelched 104 whitespace errors 
warning: 109 lines add whitespace errors. 

Nó có nghĩa là: thay vì hiển thị các thông báo lỗi 100, nó cảnh báo bạn nó cần phải có hiển thị những lỗi (nhưng nó sẽ không, để không lộn xộn đầu ra)

Tôi không có đề xuất dứt khoát nào về chính sách khoảng trắng, ngoại trừ việc xác định lý do tại sao chúng được giới thiệu ngay từ đầu.
Nếu trình soạn thảo của bạn không chuyển đổi các ký tự eol (cuối dòng) giữa Window và Unix, thì điều đó có nghĩa là bằng cách nào đó, hãy thêm hoặc xóa các khoảng trắng tự động, không phải lúc nào cũng hữu ích.

Một thử nghiệm đầu tiên (như trong blog post này) là để de-kích hoạt chính sách:

git config core.whitespace nowarn 

hoặc thử

git config core.whitespace fix 

và xem nếu điều kiện cho hoạt động rebase bạn.

+0

Vì vậy, điều gì đó giống như trình chỉnh sửa của tôi chuyển đổi các tab thành không gian sẽ hiển thị dưới dạng lỗi? (Trên thực tế, đó không phải là một sự tái xuất hiện cho tôi thông điệp này, nó đã được áp dụng lại một stash - nó không ngăn cản việc áp dụng lại, nhưng tôi muốn hiểu thông điệp) – Benjol

+1

@Benjol: trong trường hợp này, thông điệp 'squelch' ở đó để cảnh báo bạn sẽ gặp rắc rối trong các tình huống hợp nhất trong tương lai (hợp nhất, rebase, push to, pull from) – VonC

+0

Tôi "core.whitespace no warn" không hoạt động đối với tôi. Tôi có phải khởi động lại máy hoặc thiết bị đầu cuối hay gì đó không? – kakyo

12

Sau khi tìm kiếm câu trả lời đó là tốt và nhìn vào cả hai git-config và git-áp dụng hướng dẫn sử dụng, tôi thấy rằng

git config apply.whitespace nowarn 

deactivates hiển thị lỗi khoảng trắng trong kho hiện tại của bạn.

Để làm cho nó có sẵn cho tất cả các kho chỉ cần thêm --global như thế này:

git config --global apply.whitespace nowarn 
+0

'core.whitespace' không hoạt động đối với tôi nhưng' apply.whitespace' đã hoạt động. Trong trường hợp của tôi, áp dụng một diff là ném cảnh báo khoảng trắng 'git apply file.diff'. – amertkara

13

Dưới đây là làm thế nào để sửa chữa "dấu khoảng trắng" lỗi khi sử dụng git áp dụng:

Điều đầu tiên bạn cần phải biết là: lỗi khoảng trắng là gì. Điều này được giải thích trên core.whitespace setting documentation. Về cơ bản, git xử lý một số loại lỗi khoảng trắng:

blank-at-eol 
blank-at-eof 
space-before-tab 
indent-with-non-tab 
tab-in-indent 
cr-at-eol 

dấu khoảng trắng lỗi có thể tăng lên khi vá một tập tin sử dụng dòng cửa sổ theo phong cách kết thúc (CRLF). Để tránh cảnh báo này, bạn có thể hỏi git apply để không hiển thị cảnh báo:

git apply --whitespace=nowarn fix.patch 

hoặc bạn có thể chỉnh sửa cấu hình git on the fly (với -c) để nói "git ok, CR ở cuối dòng là tinh lúc này":

git -c core.whitespace=cr-at-eol apply fix.patch 

Nếu bạn muốn làm cho nó vĩnh viễn , chỉ cần chỉnh sửa cấu hình git như thế:

git config apply.whitespace nowarn 

hay:

git config core.whitespace cr-at-eol 
Các vấn đề liên quan