Wikipediaกล่าวว่าการผสาน 3 ทิศทางนั้นมีข้อผิดพลาดน้อยกว่าการรวมแบบสองทางและบ่อยครั้งที่ผู้ใช้ไม่ต้องการการแทรกแซง ทำไมเป็นกรณีนี้
ตัวอย่างที่ประสบความสำเร็จในการรวม 3 ทางและการรวม 2 ทางล้มเหลวจะเป็นประโยชน์
Wikipediaกล่าวว่าการผสาน 3 ทิศทางนั้นมีข้อผิดพลาดน้อยกว่าการรวมแบบสองทางและบ่อยครั้งที่ผู้ใช้ไม่ต้องการการแทรกแซง ทำไมเป็นกรณีนี้
ตัวอย่างที่ประสบความสำเร็จในการรวม 3 ทางและการรวม 2 ทางล้มเหลวจะเป็นประโยชน์
คำตอบ:
สมมติว่าคุณและเพื่อนของคุณเช็คเอาต์ไฟล์แล้วทำการเปลี่ยนแปลงบางอย่างกับมัน คุณลบบรรทัดที่จุดเริ่มต้นและเพื่อนของคุณเพิ่มบรรทัดในตอนท้าย จากนั้นเขายืนยันไฟล์ของเขาและคุณต้องรวมการเปลี่ยนแปลงของเขาลงในสำเนาของคุณ
หากคุณทำการผสานสองทาง (หรืออีกนัยหนึ่งคือดิฟ) เครื่องมือสามารถเปรียบเทียบสองไฟล์และดูว่าบรรทัดแรกและบรรทัดสุดท้ายนั้นแตกต่างกัน แต่จะรู้ได้อย่างไรว่าจะทำอย่างไรกับความแตกต่าง เวอร์ชันที่ผสานควรรวมบรรทัดแรกหรือไม่ ควรรวมบรรทัดสุดท้ายหรือไม่
ด้วยการผสานสามทางมันสามารถเปรียบเทียบสองไฟล์ แต่ยังสามารถเปรียบเทียบแต่ละไฟล์กับสำเนาต้นฉบับได้ (ก่อนที่คุณจะเปลี่ยนคู่ใดก็ได้) ดังนั้นจะเห็นได้ว่าคุณลบบรรทัดแรกและเพื่อนของคุณเพิ่มบรรทัดสุดท้าย และสามารถใช้ข้อมูลนั้นเพื่อสร้างเวอร์ชันที่ผสาน
สไลด์นี้จากงานนำเสนอที่น่าสนใจ:
ตรรกะที่สำคัญของเครื่องมือการผสานสามทางนั้นง่าย:
- เปรียบเทียบไฟล์ฐานแหล่งที่มาและเป้าหมาย
- ระบุ "chunks" ในไฟล์ต้นทางและไฟล์เป้าหมาย:
- ชิ้นส่วนที่ไม่ตรงกับฐาน
- ชิ้นส่วนที่เข้ากับฐาน
- จากนั้นรวบรวมผลลัพธ์ที่ถูกผสานซึ่งประกอบด้วย:
- ชิ้นที่จับคู่กันในทั้ง 3 ไฟล์
- ชิ้นที่ไม่ตรงกับฐานในแหล่งที่มาหรือในเป้าหมาย แต่ไม่ทั้งคู่
- ชิ้นที่ไม่ตรงกับฐาน แต่สามารถจับคู่กัน (กล่าวคือพวกมันถูกเปลี่ยนแบบเดียวกันทั้งในแหล่งที่มาและเป้าหมาย)
- ตัวยึดสำหรับชิ้นส่วนที่ขัดแย้งที่จะได้รับการแก้ไขโดยผู้ใช้
โปรดทราบว่า "ชิ้นส่วน" ในภาพประกอบนี้เป็นสัญลักษณ์ล้วนๆ แต่ละคนสามารถแสดงบรรทัดในไฟล์หรือโหนดในลำดับชั้นหรือแม้กระทั่งไฟล์ในไดเรกทอรี ทุกอย่างขึ้นอยู่กับว่าเครื่องมือการผสานแบบใดที่มีความสามารถ
คุณอาจถามว่าข้อดีของการผสานแบบ 3 ทิศทางเหนือการผสานแบบสองทางคืออะไร อันที่จริงไม่มีสิ่งเช่นการผสานสองทางเครื่องมือเดียวที่แตกต่างกันสองไฟล์และช่วยให้คุณ "ผสาน" โดยการเลือกชิ้นจากไฟล์หนึ่งหรืออื่น ๆ
การผสานแบบ 3 ทิศทางเท่านั้นทำให้คุณสามารถทราบได้ว่าชิ้นส่วนนั้นเป็นการเปลี่ยนแปลงจากจุดเริ่มต้นหรือไม่และการเปลี่ยนแปลงนั้นขัดแย้งกันหรือไม่
ฉันเขียนโพสต์โดยละเอียดเกี่ยวกับเรื่องนี้ โดยทั่วไปคุณไม่สามารถติดตามการลบ / เพิ่มด้วยสองทางมากไม่ได้ผลมาก
วิธีการผสานสามทางที่การเปลี่ยนแปลงสองชุดกับไฟล์ฐานหนึ่งถูกรวมเข้าด้วยกันเมื่อถูกนำไปใช้แทนที่จะนำไปใช้อย่างใดอย่างหนึ่งแล้วผสานผลลัพธ์กับอีกไฟล์หนึ่ง
ตัวอย่างเช่นการมีสองการเปลี่ยนแปลงที่เพิ่มบรรทัดในตำแหน่งเดียวกันอาจถูก interpreded เป็นการเพิ่มสองส่วนไม่ใช่การเปลี่ยนแปลงหนึ่งบรรทัด
ตัวอย่างเช่น
ไฟล์ a ได้รับการแก้ไขโดยคนสองคนหนึ่งคนเพิ่มกวางมูสตัวหนึ่งและอีกตัวเพิ่มเม้าส์
#File a
dog
cat
#diff b, a
dog
+++ mouse
cat
#diff c, a
dog
+++ moose
cat
ตอนนี้ถ้าเรารวมการเปลี่ยนแปลงตามที่เรานำไปใช้เราจะได้รับ (การรวม 3 ทาง)
#diff b and c, a
dog
+++ mouse
+++ moose
cat
แต่ถ้าเราใช้ b แล้วดูการเปลี่ยนจาก b เป็น c มันจะดูเหมือนว่าเราเพิ่งเปลี่ยน 'u' เป็น 'o' (ผสานสองทาง)
#diff b, c
dog
--- mouse
+++ moose
cat