“ 1 บรรทัดเพิ่มข้อผิดพลาดช่องว่าง” หมายความว่าอย่างไรเมื่อใช้โปรแกรมแก้ไข


106

ฉันกำลังแก้ไขไฟล์ markdown ของที่เก็บรีโมตที่ถูกโคลนและต้องการทดสอบการสร้างและใช้แพตช์จากสาขาหนึ่งไปยังอีกสาขาหนึ่ง อย่างไรก็ตามทุกครั้งที่ฉันทำการเปลี่ยนแปลงใด ๆ ฉันจะได้รับข้อความต่อไปนี้ระหว่างgit apply:

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

(สิ่งนี้เกิดขึ้นบน Mac ของฉันและฉันไม่รู้ว่ารหัสดั้งเดิมถูกสร้างขึ้นที่ไหน)

ข้อความเตือนหมายความว่าอย่างไรและฉันต้องดูแลหรือไม่?


คำตอบ:


127

คุณไม่จำเป็นต้องดูแล

คำเตือนนี้กำหนดมาตรฐานความสะอาดของไฟล์ข้อความในเรื่องช่องว่างซึ่งเป็นสิ่งที่โปรแกรมเมอร์หลายคนมักจะใส่ใจ ตามคู่มืออธิบาย:

สิ่งที่ถือว่าเป็นข้อผิดพลาดของช่องว่างถูกควบคุมโดยการกำหนดค่า core.whitespace ตามค่าเริ่มต้นช่องว่างต่อท้าย (รวมถึงเส้นที่ประกอบด้วยช่องว่าง แต่เพียงผู้เดียว) และอักขระช่องว่างที่ตามด้วยอักขระแท็บภายในการเยื้องเริ่มต้นของบรรทัดจะถือว่าเป็นข้อผิดพลาดของช่องว่าง

ตามค่าเริ่มต้นคำสั่งจะแสดงข้อความเตือน แต่ใช้โปรแกรมแก้ไข

ดังนั้น "ข้อผิดพลาด" จึงหมายความว่าการเปลี่ยนแปลงทำให้เกิดช่องว่างต่อท้ายบรรทัดเฉพาะช่องว่างหรือช่องว่างที่นำหน้าแท็บ นอกเหนือจากข้อเท็จจริงนั้นไม่มีอะไรผิดพลาดเกี่ยวกับการเปลี่ยนแปลงและจะนำไปใช้อย่างหมดจดและถูกต้อง ในคำอื่น ๆ ถ้าคุณไม่สนใจเกี่ยวกับการ "ถูกต้อง" git config apply.whitespace nowarnช่องว่างความรู้สึกอิสระที่จะไม่สนใจคำเตือนหรือเปิดออกด้วย


12
ดูการกระทำด้วยgit show- หากคอมไพล์ของคุณทำสีคุณจะเห็นช่องว่างที่กระทำผิดปรากฏขึ้นเป็นสีแดงโกรธ นอกจากนี้git show --word-diffจะแสดงให้คุณไม่เพียง แต่การเปลี่ยนแปลงบรรทัด แต่แทรกอยู่ตรงกลางของเส้นซึ่งจะแสดงให้เห็นว่าแพทช์จริงๆเพียง แต่เพิ่มคำที่อยู่ตรงกลางหรือถ้ามันยังเพิ่มช่องว่างต่อท้าย
user4815162342

12
คุณไม่จำเป็นต้องดูแล แต่คุณควร ควรกำจัดช่องว่างต่อท้าย
funroll

1
ยกเว้น OP ไม่เพิ่มช่องว่างต่อท้ายใหม่ให้แก้ไขเฉพาะสิ่งที่มีอยู่แล้วเท่านั้น
user4815162342

4
ฉันเคยเห็นข้อเสนอนี้ในสถานการณ์ที่คล้ายกันเมื่อส่วนท้ายบรรทัดเป็น CRLF สไตล์ Windows แทนที่จะเป็น Unix
Ezequiel Muns

1
@Yarin หากคุณเพิ่มคำไว้ตรงกลางบรรทัดและบรรทัดนั้นมีช่องว่างต่อท้ายอยู่แล้วนั่นอาจทำให้เกิดการเตือน
Warren Dew

4

กรณีหนึ่งที่คุณสามารถดูแลได้อย่างถูกต้องคือเมื่อคุณต้องการแยกความแตกต่างระหว่างข้อผิดพลาดช่องว่าง "เก่า" (ซึ่งคุณอาจต้องการเก็บไว้เพื่อเหตุผลเดิม) และข้อผิดพลาดช่องว่าง "ใหม่" (ที่คุณต้องการหลีกเลี่ยง)

ด้วยเหตุนี้ Git 2.5+ (Q2 2015) จะเสนอตัวเลือกที่เฉพาะเจาะจงมากขึ้นสำหรับการตรวจจับช่องว่าง

ดูกระทำ 0e383e1 , 0ad782fและd55ef3e [26 พฤษภาคม 2015] โดยJunio C Hamano (gitster )
(ผสานโดยJunioในการกระทำ 709cd91 , 11 มิ.ย. 2015)

diff.c: --ws-error-highlight=<kind>option

ตามเนื้อผ้าเราสนใจเฉพาะการแตกของช่องว่างที่เกิดขึ้นในบรรทัดใหม่เท่านั้น
บางคนต้องการทาสีช่องว่างบนเส้นเก่าด้วย เมื่อพวกเขาเห็นช่องว่างแตกในบรรทัดใหม่พวกเขาสามารถมองเห็นการแตกของช่องว่างแบบเดียวกันบนบรรทัดเก่าที่สอดคล้องกันและต้องการพูดว่า "อามีรอยแตกเหล่านั้นอยู่ที่นั่น แต่มันได้รับการถ่ายทอดมาจากต้นฉบับดังนั้นอย่าแตะต้องมันเพื่อ ตอนนี้”

แนะนำ--ws-error-highlight=<kind>ตัวเลือกที่ช่วยให้พวกเขาผ่านจุลภาคคั่นรายการold, newและcontextสามารถระบุสิ่งที่สายที่จะไฮไลท์ช่องว่างข้อผิดพลาดใน

เอกสารขณะนี้รวมถึง :

--ws-error-highlight=<kind>

ข้อผิดพลาดไฮไลท์ช่องว่างในสายตามที่ระบุไว้ในสีที่ระบุโดย<kind> เป็นจุลภาคคั่นรายการ, , เมื่อไม่ได้ระบุตัวเลือกนี้จะมีการเน้นเฉพาะข้อผิดพลาดของช่องว่างในบรรทัดเท่านั้น color.diff.whitespace
<kind>oldnewcontext
new

เช่น--ws-error-highlight=new,oldไฮไลต์ข้อผิดพลาดช่องว่างทั้งบรรทัดที่ลบและเพิ่ม
allสามารถใช้เป็นแบบสั้นสำหรับold,new,context.

ตัวอย่างเช่นการกระทำเก่ามีข้อผิดพลาดช่องว่าง ( bbb) หนึ่งข้อแต่คุณสามารถมุ่งเน้นไปที่ข้อผิดพลาดใหม่เท่านั้น (ในตอนท้ายของstill bbbและccc):

ข้อผิดพลาด shitespace เก่าและใหม่

(ทดสอบเสร็จแล้วt/t4015-diff-whitespace.sh)


ด้วย Git 2.26 (Q1 2020) กลุ่มคำdiff-*สั่งย่อยของระบบประปาตอนนี้ให้ความสำคัญกับการdiff.wsErrorHighlightกำหนดค่าซึ่งถูกละเลยมาก่อน ซึ่งจะช่วยให้ " git add -p" แสดงปัญหาช่องว่างแก่ผู้ใช้ปลายทาง

ดูกระทำ da80635 (31 มกราคม 2020) โดยเจฟฟ์คิง (peff )
(ผสานโดยJunio ​​C Hamano - gitster-ในการกระทำ df04a31 , 14 ก.พ. 2020)

diff: ย้าย diff.wsErrorHighlight ไปที่ config "basic"

ลงนามโดย: Jeff King

เราแยกวิเคราะห์ diff.wsErrorHighlight git_diff_ui_config()ซึ่งหมายความว่าจะไม่มีผลกับคำสั่งประปาเฉพาะสำหรับ porcelains เช่นเดียวกับgit diffตัวมันเอง
นี้เป็นที่น่ารำคาญอย่างอ่อนโยนขณะที่มันหมายความว่าสคริปต์เช่นadd--interactiveซึ่งผลิตต่างใช้มองเห็นได้ด้วยสีไม่เคารพตัวเลือก

เราสามารถสอนสคริปต์นั้นให้แยกวิเคราะห์ config และส่งต่อไป--ws-error-highlightยัง diff ประปาได้ แต่มีวิธีที่ง่ายกว่านั้น

ควรมีความปลอดภัยพอสมควรสำหรับระบบประปาที่จะเคารพตัวเลือกนี้เนื่องจากจะเริ่มทำงานเมื่อเปิดใช้งานสีเท่านั้น และใครก็ตามที่แยกวิเคราะห์เอาต์พุตที่มีสีจะต้องจัดการกับความจริงที่color.diff.*อาจเปลี่ยนแปลงผลลัพธ์ที่แน่นอนที่พวกเขาเห็น ตัวเลือกเหล่านี้เป็นส่วนหนึ่งของgit_diff_basic_config()การเริ่มต้นใน9a1805a872 (เพิ่มการเรียกกลับ "พื้นฐาน" diff config, 2008-01-04, Git v1.5.4-rc3)

ดังนั้นเราจึงสามารถย้ายไปยังการกำหนดค่า "พื้นฐาน" ซึ่งจะแก้ไขadd--interactiveพร้อมกับสคริปต์อื่น ๆ ในเรือลำเดียวกันโดยมีความเสี่ยงต่ำมากที่จะทำร้ายผู้ใช้ระบบประปา



-2

เนื่องจากบรรทัดเริ่มต้นด้วยTABistead ของSPACE. ไปที่ไฟล์แก้ไขและแทนที่TABด้วยSPACE. เช่น on vim on line + จาก patch file type x เพื่อลบช่องว่างและไม่ลบเครื่องหมาย + และแทรกช่องว่าง (CTRL) บน eqiv เป็นขนาดดั้งเดิม


1
-1 คุณคิดว่าคอมไพล์จะบ่นเกี่ยวกับการเยื้องแท็บสไตล์ Linus หรือไม่? การใช้แท็บอย่างถูกกฎหมายเพียงอย่างเดียวคือจุดเริ่มต้นของบรรทัด
user2394284
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.