Yama uygularken "1 satır boşluk hataları ekler" ne anlama geliyor?


106

Klonlanmış bir uzak deponun bazı markdown dosyalarını düzenliyorum ve bir şubeden diğerine yama oluşturmayı ve uygulamayı test etmek istedim. Ancak, her değişiklik yaptığımda şu mesajla karşılaşıyorum git apply:

0001-b.patch:16: trailing whitespace.
warning: 1 line adds whitespace errors.

(Bu, Mac'imde oluyor ve orijinal kodun nerede oluşturulduğunu bilmiyorum.)

Uyarı mesajı ne anlama geliyor ve önemsemem gerekiyor mu?


Yanıtlar:


127

Umursamana gerek yok.

Uyarı, birçok programcının ilgilendiği türden, beyaz boşluklarla ilgili olarak metin dosyalarının temizliği için bir standart oluşturur. Gibi manuel açıklıyor:

Boşluk hataları olarak kabul edilenler, core.whitespace yapılandırması tarafından kontrol edilir. Varsayılan olarak, sondaki beyaz boşluklar (yalnızca beyaz boşluklardan oluşan satırlar dahil) ve hemen ardından satırın ilk girintisinin içinde bir sekme karakteri gelen bir boşluk karakteri, boşluk hataları olarak kabul edilir.

Varsayılan olarak, komut uyarı mesajları verir ancak yamayı uygular.

Dolayısıyla, "hata", değişikliğin sonda bir beyaz boşluk, yalnızca beyaz boşluk içeren bir satır veya bir sekmeden önce gelen bir boşluk getirdiği anlamına gelir. Bunun dışında değişimde hatalı bir şey yok, temiz ve doğru bir şekilde uygulanacaktır. Diğer bir deyişle, "yanlış" boşlukla ilgilenmiyorsanız, uyarıyı göz ardı etmekten veya ile kapatmaktan çekinmeyin git config apply.whitespace nowarn.


12
İşleme ile bakın git show- eğer erkek arkadaşınız renk yapıyorsa, rahatsız edici beyaz boşluğun kızgın kırmızıyla ortaya çıktığını göreceksiniz. Ayrıca, git show --word-diffsize yalnızca satır değişikliğini değil, satırın ortasındaki eklemeleri de gösterecektir; bu, yamanın gerçekten yalnızca ortasına bir sözcük ekleyip eklemediğini veya sonda bir boşluk ekleyip eklemediğini göstermelidir.
user4815162342

12
Umursamana gerek yok . Ama yapmalısın. Sondaki beyaz boşluk ortadan kaldırılmalıdır.
funroll

1
OP'nin sonuna yeni boşluk eklememesi dışında, yalnızca zaten var olanı değiştirir.
user4815162342

4
Satır sonları Unix yerine Windows tarzı CRLF'ler olduğunda, benzer bir durumda bu pervaneyi gördüm.
Ezequiel MUNS

1
@Yarin Bir satırın ortasına bir sözcük eklerseniz ve satırın sonunda boşluk varsa, bu uyarıyı tetikleyebilir.
Warren Dew

4

Meşru olarak umursayabileceğiniz bir durum, "eski" beyaz boşluk hatası (eski nedenlerden dolayı saklamak isteyebileceğiniz) ile "yeni" boşluk hatalarını (kaçınmak istediğiniz) ayırt etmek istediğiniz zamandır.

Bu amaçla Git 2.5+ (2015 2. Çeyrek), beyaz boşluk tespiti için daha spesifik bir seçenek önerecektir.

Bkz 0e383e1 taahhüt , 0ad782f ve d55ef3e kriteri: [2015 26 Mayıs] Junio Cı Hamano ( gitster) .
(Göre Birleştirilmiş Junio içinde 709cd91 işlemek 2015 11 Haz)

diff.c: --ws-error-highlight=<kind>seçenek

Geleneksel olarak, sadece yeni satırlarda ortaya çıkan boşluk kırılmalarını önemsiyorduk.
Bazı insanlar beyaz boşluk kırılmalarını eski çizgilere de boyamak ister. Yeni bir satırda bir beyaz boşluk kırılması gördüklerinde, karşılık gelen eski satırda aynı türden beyaz boşluk kırılmasını görebilirler ve "Ah, bu kırılmalar oradadır ancak orijinalden miras alınmıştır, bu yüzden onlara dokunmayalım şimdi. "

Tanıtın --ws-error-highlight=<kind>onları virgülle ayrılmış listesi geçmesi olanak veren, seçeneği old, newve contextüzerinde boşluk vurgulamak hataları neler satırları belirtmek için.

Dokümantasyon şimdi içerir :

--ws-error-highlight=<kind>

İle belirtilen <kind>renkte ile belirtilen satırlardaki boşluk hatalarını vurgulayın color.diff.whitespace.
<kind>virgülle ayrılmış bir listesi old, new, context.
Bu seçenek verilmediğinde, yalnızca newsatırlardaki boşluk hataları vurgulanır.

Örneğin --ws-error-highlight=new,old, hem silinen hem de eklenen satırlardaki boşluk hatalarını vurgular.
alliçin kısa el olarak kullanılabilir old,new,context.

Örneğin, eski bir boşluk hatası (vardı tamamlama bbb), ancak yalnızca (sonunda yeni hatalar odaklanabilir still bbbve ccc):

eski ve yeni shitespace hataları

(test sonra yapılır t/t4015-diff-whitespace.sh)


Git 2.26 (Q1 2020) ile, diff-*alt komutların sıhhi tesisat ailesi şimdi diff.wsErrorHighlightdaha önce göz ardı edilen yapılandırmaya dikkat ediyor ; bu da " git add -p" boşluk sorunlarını son kullanıcıya göstermeye olanak tanır .

Bkz. Commit da80635 (31 Ocak 2020), Jeff King ( peff) .
( Junio ​​C Hamanogitster tarafından birleştirildi - - in commit df04a31 , 14 Şub 2020)

diff: diff.wsErrorHighlight'ı "temel" yapılandırmaya taşı

İmza: Jeff King

Diff.wsErrorHighlight'ı ayrıştırıyoruz git_diff_ui_config(), yani sıhhi tesisat komutları için değil, sadece git diffkendisi gibi porselenlerde etkili oluyor .
Bu, add--interactiverenkle kullanıcı tarafından görülebilen bir farklılık üreten komut dosyalarının seçeneğe uymadığı anlamına geldiği için biraz can sıkıcıdır .

Bu betiğe yapılandırmayı ayrıştırmayı ve --ws-error-highlightdiff tesisatına göre iletmeyi öğretebiliriz . Ancak daha basit bir çözüm var.

Yalnızca renk başka şekilde etkinleştirildiğinde devreye girdiği için, bu seçeneğe uymak sıhhi tesisat için makul derecede güvenli olmalıdır. Ve renklendirilmiş çıktıyı ayrıştıran herhangi biri color.diff.*, gördükleri kesin çıktıyı değiştirebilecek olguyla zaten ilgilenmelidir ; bu seçenekler, 9a1805a872'dekigit_diff_basic_config() başlangıcından beri bir parçası olmuştur (bir "temel" diff yapılandırma geri çağrısı ekleyin, 2008-01-04, Git v1.5.4-rc3).

Böylece add--interactive, aynı teknedeki diğer komutlarla birlikte, tesisat kullanıcılarına zarar verme riski çok düşük olan "temel" yapılandırmaya taşıyabiliriz .



-2

Çizgi ile başlayıp Çünkü TABbir Istead SPACE. Yama dosyası üzerinde gidin ve değiştirme TABile SPACE. Örneğin, vim on line + x yama dosyasından boşluk kaldırmak ve + işaretini kaldırmak ve eqiv'de orijinal boyuta boşluk (CTRL) eklemek için.


1
-1 Gerçekten git'in Linus stili sekme girintisinden şikayet edeceğini mi düşünüyorsun? Eğer varsa, sekmenin tek yasal kullanımı tam olarak satırın başlangıcıdır.
user2394284
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.