เครื่องมือสำหรับนักพัฒนา · การเปรียบเทียบข้อความ
วิธีอ่าน Unified Diff: Hunk Headers, Context Lines และ +/- Markers
· พื้นหลัง
ข้อความที่แตกต่าง แพทช์ นักพัฒนาเวิร์กโฟลว์
ถอดรหัสรูปแบบ diff แบบรวมทีละบรรทัด ตั้งแต่ส่วนหัวของไฟล์และช่วง @@ ไปจนถึงบรรทัดบริบทและเปลี่ยนเครื่องหมาย ดังนั้นแพตช์จากเครื่องมือใดๆ ก็สมเหตุสมผล
ผนังของเครื่องหมายบวก เครื่องหมายลบ และ @@ — เปิดขึ้นเมื่อพบแพทช์ครั้งแรกในอีเมลหรือคำขอดึง
`changes.patch` ที่ดาวน์โหลดจะเริ่มต้นด้วยเครื่องหมายวรรคตอนที่คล้ายกับเอาต์พุต diff ที่คุ้นเคย แต่โครงสร้างที่แน่นอนนั้นมีความสำคัญ ToolAcre เขียนป้ายกำกับสองป้าย จากนั้นทุกแถวเปรียบเทียบจะมีเครื่องหมายหนึ่งอักขระ การอ่านสิ่งที่มีอยู่นั้นปลอดภัยกว่าการจัดหาฟิลด์ทางจิตใจจากรูปแบบแพตช์อื่น
เปิดไฟล์ในตัวแก้ไขข้อความธรรมดา สองบรรทัดแรกระบุป้ายกำกับด้านซ้ายและขวาที่ UI จัดทำเป็น `original` และ `changed` บรรทัดต่อมาจะสร้างข้อความที่เปรียบเทียบขึ้นใหม่โดยใช้เครื่องหมายบริบท การลบออก และการเพิ่มเติม
บรรทัดส่วนหัวของไฟล์ — อธิบายบรรทัด --- และ +++ เส้นทาง และเครื่องมือเติมคำนำหน้า a/ และ b/
ส่วนหัวคือ `--- original` ตามด้วย `+++ changed` ในเครื่องมืออื่นๆ คำนำหน้าเหล่านั้นอาจอยู่ในไวยากรณ์แพตช์ที่สมบูรณ์ยิ่งขึ้น แต่ผู้ส่งออกรายนี้ไม่เพิ่มการประทับเวลา เส้นทาง หรือข้อมูลเมตา ป้ายกำกับจะอธิบายด้านข้าง ไม่ใช่ไฟล์ที่พิสูจน์แล้วว่ามีอยู่บนดิสก์
ความแตกต่างนั้นมีความสำคัญเนื่องจาก Text diff ยอมรับสตริงที่วางมากกว่าอ็อบเจ็กต์ไฟล์ ดาวน์โหลดจะสร้างรายงานข้อความในเครื่องหลังการเปรียบเทียบ การปฏิบัติต่อป้ายกำกับเป็นเส้นทางที่เก็บข้อมูลหรือตัวระบุการแก้ไขจะระบุแหล่งที่มาที่ UI ไม่เคยรวบรวม
อธิบายส่วนหัวก้อนใหญ่ — ถอดรหัส @@ -12,7 +12,8 @@ เป็นบรรทัดเริ่มต้นและจำนวนบรรทัดสำหรับแต่ละด้าน
ไม่มีบรรทัดที่ขึ้นต้นด้วย `@@` ใน `toUnifiedText` ฟังก์ชันจะแมปกับแถวทั้งหมดโดยตรงหลังป้ายกำกับทั้งสอง ดังนั้นเอาต์พุตนี้จึงไม่มีช่วงจำนวนมากที่จะถอดรหัสและไม่มีคู่ start-line/count ที่ฝังอยู่ในข้อความที่ดาวน์โหลด
หมายเลขบรรทัดยังคงอยู่ในมุมมองเบราว์เซอร์ที่แสดงผล โดยที่แถวมีตำแหน่งซ้ายและขวา การส่งออกจะเลือกการนำเสนอที่ง่ายกว่า หากโปรแกรมดาวน์สตรีมต้องการอุปกรณ์ที่เป็นหนึ่งเดียวที่เป็นมาตรฐาน ให้ตรวจสอบความเข้ากันได้แทนที่จะถือว่าส่วนขยาย `.patch` ไม่มีไวยากรณ์
ToolAcre ไม่ปล่อยส่วนหัว @@ ก้อนใหญ่ ดังนั้นจึงไม่มีให้ถอดรหัส
ช่องว่างนำหน้าหมายถึงแถวที่ไม่เปลี่ยนแปลง ลบเครื่องหมายลบด้านซ้าย และเครื่องหมายบวกทำเครื่องหมายบวกด้านขวา UI สามารถยุบการรันที่เท่ากันในระยะยาวได้ แต่ `lastDiff` จะคงผลลัพธ์ที่สมบูรณ์ไว้และการดาวน์โหลดจะทำให้แถวทั้งหมดเป็นอนุกรม ไม่มีเครื่องหมายข้ามเข้าสู่สตริงแพตช์
โครงร่างกล่าวถึงบรรทัดบริบทสามบรรทัดเป็นค่าเริ่มต้น สามถูกใช้โดยการเรียกการยุบภาพ ไม่ใช่โดยการส่งออก การรวมเส้นทางเหล่านั้นเข้าด้วยกันจะทำให้เนื้อหาที่ดาวน์โหลดมีน้อยเกินไป การนำเสนอและการทำให้เป็นอนุกรมใช้แถวร่วมกัน แต่ใช้การแปลงที่แตกต่างกัน
การดาวน์โหลดจะทำเครื่องหมายทุกแถวและไม่ใช้ค่าเริ่มต้นบริบทสามบรรทัด
เปรียบเทียบฝั่งซ้าย `a b` กับฝั่งขวา `a c` บรรทัดที่ส่งออกประกอบด้วยป้ายกำกับสองรายการ ตามด้วย space-a, minus-b และ plus-c เมื่ออ่านจากบนลงล่างจะเห็นว่า `a` ยังคงอยู่ `b` ถูกนำออกจากต้นฉบับ และ `c` ถูกเพิ่มในฝั่งที่เปลี่ยนแปลง
การแก้ไขจึงแสดงเป็นการลบและการเพิ่มเติมที่อยู่ติดกันเมื่อการจัดแนววางเข้าด้วยกัน รูปแบบไม่ได้ตั้งชื่อว่า "แก้ไขแล้ว" หากบรรทัดที่ซ้ำกันช่วยให้สามารถจัดแนวใหม่ได้ ลำดับอาจดูแตกต่างออกไปในขณะที่ยังคงคำนึงถึงแถวอินพุตแต่ละแถว
ตัวอย่างการทำงาน: อ่านสตรีมรูปแพตช์แบบเต็มที่ ToolAcre ส่งออกจริง
รูปแบบ diff แบบปกติ บริบท และแบบรวมที่สมบูรณ์มีข้อกำหนดและประวัติของตัวเอง แต่ไม่ได้นำไปใช้หรือจัดทำเป็นเอกสารโดยชุดแหล่งที่มาที่ใช้ในที่นี้ บทความนี้ไม่ได้อ้างว่าเหตุใดรูปแบบหนึ่งจึงได้รับความนิยมหรือรายการฟิลด์ ToolAcre ไม่ปล่อยออกมา
ใช้คำสั่งควบคุมเวอร์ชันเมื่อเครื่องมืออื่นต้องใช้แพตช์ การดาวน์โหลดของ ToolAcre มีประโยชน์ในฐานะเครื่องมือตรวจสอบแบบพกพา แต่พื้นที่เก็บข้อมูลไม่มีตัวแยกวิเคราะห์โปรแกรมแก้ไขหรือใช้ฟังก์ชันที่พิสูจน์ว่าสามารถเดินทางไปกลับผ่านผู้ใช้โปรแกรมแก้ไขตามอำเภอใจ
การเปรียบเทียบรูปแบบแบบรวม บริบท และรูปแบบปกติโดยสมบูรณ์ต้องใช้แหล่งข้อมูลภายนอก
โปรแกรมแก้ไขไบนารี เปลี่ยนชื่อส่วนหัว การเปลี่ยนแปลงโหมด และแอปพลิเคชันอยู่นอกเส้นทางนี้ ข้อความไม่มีตัวระบุวัตถุหรือบรรพบุรุษร่วมกัน ไม่สามารถแสดงถึงการดำเนินการของพื้นที่เก็บข้อมูลเพียงเพราะเครื่องหมายของมันดูคุ้นเคย
ผู้ส่งออกยังสะท้อนถึงตัวเลือกการเปรียบเทียบที่ใช้งานอยู่ด้วย แถวที่ถือว่าเท่ากันหลังจากการปรับขนาดตัวพิมพ์หรือช่องว่างจะมีข้อความต้นฉบับด้านซ้ายเท่านั้น ดังนั้นเอกสารที่มีรูปทรงแพตช์จึงไม่ใช่การสร้างอินพุตทั้งสองแบบไบต์ต่อไบต์ใหม่ภายใต้การจับคู่แบบหลวมๆ
ประเด็นสำคัญ: ส่วนต่างคือเรื่องราวที่ถูกบีบอัด — สรุปลำดับการอ่านและบันทึกว่าการเปรียบเทียบข้อความของ ToolAcre แสดงการเปลี่ยนแปลงประเภทเดียวกันกับบรรทัดที่ไฮไลต์เพื่อให้ตรวจสอบอย่างรวดเร็วได้อย่างไร
อ่านป้ายกำกับทั้งสองก่อน จากนั้นจึงตีความแถวนำหน้าทุกแถวตามลำดับ หากคุณต้องการหมายเลขบรรทัดที่แสดงผล ให้กลับไปที่มุมมองเบราว์เซอร์ หากคุณต้องการ Hunk ที่สมบูรณ์ตามมาตรฐาน ให้สร้างพวกมันด้วยเครื่องมือที่จัดทำเอกสารสัญญานั้น
ToolAcre นำเสนอวิธีที่กะทัดรัดในการเปรียบเทียบนอกหน้าโดยไม่ต้องอ้างว่าใช้คุณลักษณะแพตช์ทุกรายการ ชื่อที่แคบกว่านั้น—เอาต์พุตที่มีรูปทรงเป็นแพตช์—ช่วยให้ความคาดหวังสอดคล้องกับฟังก์ชันที่แน่นอน และหลีกเลี่ยงคำมั่นสัญญาที่ผิดพลาดเกี่ยวกับความเข้ากันได้ของแอปพลิเคชัน