เครื่องมือข้อความและชีวิตประจำวัน · ชุดเครื่องมือข้อความ
อธิบายความแตกต่างข้อความตามบรรทัด: เหตุใดจึงมีการเปลี่ยนคำทั้งบรรทัด
· มันทำงานอย่างไร
ข้อความที่แตกต่าง การเปรียบเทียบเอกสาร การแก้ไข
อธิบายว่าความแตกต่างแบบอิงบรรทัดเปรียบเทียบอะไร เหตุใดจึงรายงานการแก้ไขด้วยคำเดียวเป็นบรรทัดที่ถูกแทนที่ และวิธีการเตรียมข้อความสองข้อความ เพื่อให้การเปรียบเทียบเน้นย้ำถึงสิ่งที่เปลี่ยนแปลงจริง ๆ
ความแตกต่างที่บอกว่าทุกอย่างเปลี่ยนไป — วิธีที่ย่อหน้าที่มีการจัดเรียงใหม่เปลี่ยนการแก้ไขครั้งเดียวให้เป็นบรรทัดที่ถูกตั้งค่าสถานะหลายสิบบรรทัด
ผู้ดูแลสัญญาสามารถเปลี่ยนภาระผูกพันหนึ่งข้อในอนุประโยค วางเวอร์ชันเอกสารสองเวอร์ชันลงในการเปรียบเทียบ และดูบล็อกขนาดใหญ่ที่รายงานเกี่ยวกับการแก้ไขนั้น สาเหตุปกติไม่ใช่ว่าทุกประโยคเปลี่ยนไป คือการคัดลอกจากโปรแกรมประมวลผลคำทำให้ย่อหน้าใหม่ โดยย้ายคำที่ตามมาไปยังบรรทัดทางกายภาพที่แตกต่างกัน
การเปรียบเทียบเส้นสามารถจัดตำแหน่งหน่วยที่ได้รับเท่านั้น หากเวอร์ชัน A ล้อมย่อหน้าหลัง "ซัพพลายเออร์" และเวอร์ชัน B ล้อมหลัง "ซัพพลายเออร์ต้อง" แถวที่เหลือจะไม่ตรงกันทุกประการอีกต่อไป แม้ว่าถ้อยคำส่วนใหญ่จะเหมือนกันก็ตาม คืนค่าขอบเขตเส้นโดยเจตนาก่อนที่จะตัดสินใจว่าเอกสารมีการแก้ไขที่สำคัญหลายสิบครั้ง
ความแตกต่างระหว่างเส้นเปรียบเทียบ - เส้นทั้งหมดเป็นหน่วย จับคู่ด้วยความเท่าเทียมกัน โดยมีการแทรกและการลบอยู่ระหว่างนั้น
ToolAcre แยกแต่ละอินพุตออกเป็นบรรทัดและเปรียบเทียบสตริงที่สมบูรณ์เหล่านั้นเพื่อความเท่าเทียมกัน โดยจะสร้างตารางลำดับรองทั่วไปที่ยาวที่สุด ซึ่งระบุชุดลำดับที่ใหญ่ที่สุดของบรรทัดที่เหมือนกันที่ทั้งสองฝ่ายใช้ร่วมกัน จากนั้นวัสดุระหว่างพุกเหล่านั้นจะถูกปล่อยออกมาเมื่อแถวถูกลบออกจากด้านซ้ายหรือเพิ่มไปทางขวา
การสั่งซื้อมีความสำคัญพอๆ กับข้อความ ประโยคที่ไม่เปลี่ยนแปลงสามารถยึดการจัดตำแหน่งได้เฉพาะในกรณีที่ปรากฏตามลำดับเท่านั้น การเคลื่อนย้ายไปที่อื่นไม่ได้แสดงโดยการดำเนินการย้ายแบบพิเศษ ผลลัพธ์ที่ได้คือสคริปต์แก้ไขที่เน้นบรรทัดน้อยที่สุด ไม่ใช่การตีความความหมายทางกฎหมายหรือความพยายามที่จะจับคู่ประโยคที่คล้ายกันตามหัวข้อ
เหตุใดคำเดียวจึงแสดงทั้งบรรทัด — หน่วยของการเปรียบเทียบคือบรรทัด ดังนั้นความแตกต่างใดๆ ก็ตามจะเข้ามาแทนที่
การเปลี่ยน "อาจ" เป็น "ต้อง" ทำให้บรรทัดทั้งหมดไม่เท่ากัน ในการนำไปใช้งานนี้ บรรทัดนั้นจะถูกปล่อยออกมาเมื่อถูกลบออกจากด้านเก่าและเพิ่มไปยังด้านใหม่ ฟังก์ชันหลักไม่ปล่อยแถวที่เปลี่ยนแปลงสำหรับการทดแทนคำเดียว สองแถวอธิบายการแทนที่ด้วยรายละเอียดของบรรทัด แทนที่จะลบแนวคิดทั้งหมด
อ่านแถวที่อยู่ติดกันเหล่านั้นด้วยกัน การใช้ถ้อยคำร่วมกันช่วยให้บุคคลสามารถค้นหาคำที่แก้ไขได้ แต่อัลกอริทึมที่แสดงในแหล่งที่มาไม่ได้เน้นอักขระที่อยู่ภายใน ความแตกต่างนี้อธิบายว่าทำไมผลลัพธ์จึงแม่นยำในขณะที่แสดงอย่างกว้างๆ: หน่วยการเปรียบเทียบที่รายงานได้น้อยที่สุดคือหนึ่งบรรทัด ไม่ว่าการแก้ไขจะเล็กน้อยเพียงใดก็ตาม
เหตุใดคำหนึ่งจึงทำให้เกิดบรรทัดที่ถูกลบและเพิ่มบรรทัดในการใช้งานนี้
โทเค็นความแตกต่างระดับคำจะทำให้ร้อยแก้วมีความละเอียดมากขึ้น และสามารถแยกคำว่า "อาจ" กับ "ต้อง" ได้ ความแตกต่างระดับอักขระสามารถทำให้การแสดงผลแคบลงอีก ซึ่งมีประโยชน์สำหรับเครื่องหมายวรรคตอนหรือการสะกดคำ วิธีการเหล่านั้นยังสร้างชิ้นส่วนเพิ่มเติมและจำเป็นต้องมีกฎเกี่ยวกับขอบเขตของโทเค็น ดังนั้นความแม่นยำที่ชัดเจนจึงสามารถสร้างการตรวจสอบที่ยุ่งมากขึ้นได้
รายการชุดการเปรียบเทียบบรรทัด บล็อกการกำหนดค่า บันทึก และส่วนคำสั่งเมื่อทุกแถวแสดงรายการที่มีความหมายอยู่แล้ว ช่วยให้ผู้ตรวจสอบบริบทมีความมั่นคงและรักษาความสงบเรียบร้อยโดยไม่ต้องแสร้งทำเป็นว่าเข้าใจประโยค เลือกเครื่องมือที่ดีกว่าเมื่อการทบทวนต้องระบุการแก้ไขภายในย่อหน้ายาว อย่าคาดหวังว่าเส้นทางนี้จะสร้างรายละเอียดนั้น
การเตรียมข้อความให้มีความแตกต่างกัน — หนึ่งประโยคหรือรายการต่อบรรทัด ตัดช่องว่างออก และลงท้ายบรรทัดให้สม่ำเสมอ
เตรียมทั้งสองเวอร์ชันเพื่อให้มีหนึ่งประโยค ประโยคลำดับเลข หรือรายการเดียวที่ใช้ในแต่ละบรรทัด ลบแถวว่างที่ไม่ได้ตั้งใจและตัดช่องว่างนำหน้าหรือต่อท้ายเมื่อความแตกต่างเหล่านั้นไม่มีความหมาย คงการเยื้องโดยเจตนาเมื่อจำเป็น เนื่องจากฟังก์ชันการเปรียบเทียบจะทดสอบสตริงบรรทัดที่แน่นอนและไม่ได้ทำให้ช่องว่างเป็นมาตรฐานก่อนที่จะตรวจสอบความเท่าเทียมกัน
โครงร่างเรียกร้องให้มีการลงท้ายบรรทัดที่สอดคล้องกัน แต่ `toLines` ยอมรับ CRLF, LF และ CR เดี่ยวเป็นตัวคั่นแล้ว ความสอดคล้องที่สำคัญกว่านั้นคือความหมาย: รายการที่เทียบเท่าควรเริ่มต้นและสิ้นสุดที่ตำแหน่งที่เทียบเท่ากัน หลีกเลี่ยงการตัดกระดาษด้วยตนเองที่ความกว้างของหน้า เนื่องจากระยะขอบที่เปลี่ยนแปลงสามารถปลอมแปลงเป็นเนื้อหาที่เปลี่ยนแปลงได้
เตรียมหน่วยสายส่งที่มั่นคง ผสม CRLF, LF และ CR เดียวได้รับการยอมรับแล้ว
สมมติว่ารายการเก่ามีสามแถวแยกกัน: “1 จัดส่งภายในวันศุกร์”, “2 ผู้ซื้อสามารถตรวจสอบบันทึกได้” และ “3 ชำระเงินภายใน 30 วัน” การแก้ไขจะเปลี่ยนเฉพาะแถวกลางเป็น “2 ผู้ซื้อจะต้องตรวจสอบบันทึก” เก็บทั้งสามส่วนไว้ในบรรทัดของตัวเองก่อนที่จะดำเนินการเปรียบเทียบ
แถวที่หนึ่งและสามยังคงมีจุดยึดเท่ากัน ประโยคกลางเก่าปรากฏว่าถูกลบออก และประโยคกลางที่แก้ไขแล้วปรากฏเป็นเพิ่ม ทำให้ผู้ดูแลระบบมีคู่โฟกัสหนึ่งคู่ที่ต้องตรวจสอบ หากวางส่วนคำสั่งเดียวกันเป็นร้อยแก้วที่มีการจัดเรียงใหม่ ความแตกต่างในการห่ออาจทำให้จุดยึดเหล่านั้นแตกและขยายชุดการเปลี่ยนแปลงที่ชัดเจน
สิ่งนี้ไม่ครอบคลุมถึง - การผสานสามทาง การตรวจจับบล็อกที่ถูกย้าย และความแตกต่างของเอกสารที่จัดรูปแบบ
การเปรียบเทียบนี้ไม่ได้ทำการผสานแบบสามทาง ดังนั้นจึงไม่สามารถกระทบยอดลูกหลานที่แก้ไขแล้วสองรายการกับเวอร์ชันฐานที่ใช้ร่วมกันได้ นอกจากนี้ ไม่มีการจำแนกประเภทบล็อกที่ถูกย้าย: การย้ายตำแหน่งอนุประโยคสามารถปรากฏเป็นการลบที่ตำแหน่งเก่าและการเพิ่มที่ตำแหน่งใหม่ แม้ว่าข้อความจะไม่ได้ถูกแตะต้องก็ตาม
เอกสารที่จัดรูปแบบจะทำให้เกิดขอบเขตใหม่ แบบอักษร การเปลี่ยนแปลงที่ติดตาม ตาราง ความคิดเห็น และเค้าโครงจะไม่แสดงในสตริงธรรมดาที่ส่งไปยัง `diffLines` แยกและจัดโครงสร้างข้อความที่เกี่ยวข้องก่อน ขณะเดียวกันก็เก็บต้นฉบับไว้เพื่อการตรวจสอบอย่างเป็นทางการ ข้อความที่เป็นประโยชน์จะเสริมส่วนควบคุมเอกสาร มันไม่ได้แทนที่พวกเขา
ข้อดี — ส่วนต่างของ Text Toolkit เป็นแบบเส้นตามการออกแบบ เตรียมอินพุตและแสดงว่ารายการใดบ้างที่เปลี่ยนแปลง
ความแตกต่างของบรรทัดจะให้ข้อมูลได้มากที่สุดเมื่อแต่ละบรรทัดมีการตัดสินใจที่ตรวจสอบได้หนึ่งครั้ง ToolAcre จัดแถวให้ตรงกัน รักษาลำดับ และรายงานเนื้อหาที่ไม่ตรงกันว่าเป็นการเพิ่มเติมหรือการลบออก การออกแบบนั้นเป็นสิ่งที่คาดเดาได้: การแก้ไขด้วยคำเดียวจะส่งผลต่อทั้งแถว ในขณะที่แถวที่เหมือนกันรอบๆ จะทำให้มีจุดยึดที่ทำให้ผลลัพธ์มีขนาดกะทัดรัด
ก่อนที่จะเปรียบเทียบรายการส่วนคำสั่ง ให้พิจารณาขอบเขต ตัดช่องว่างขอบที่ไม่เกี่ยวข้อง และลบบรรทัดว่างที่ไม่มีโครงสร้างออก จากนั้นเปิด Text diff และตรวจสอบแถวที่ถูกลบและเพิ่มที่อยู่ติดกันเพื่อแทนที่ การเตรียมตัวที่ดีไม่ทำให้สัญญาเปลี่ยน มันทำให้รายงานตามบรรทัดของอัลกอริทึมตรงกับหน่วยที่ผู้ตรวจสอบสนใจจริงๆ