- เครื่องมือสำหรับแก้ไข Git Merge Conflict โดยเข้าใจโครงสร้างต้นไม้ภายในไฟล์เพื่อประสานความต้องการของทั้งสองฝั่งอย่างกลมกลืน
- สามารถเพิ่มภาษาใหม่ได้แบบประกาศเชิงกำหนด
- สามารถตั้งค่าให้ใช้ Mergiraf แทนอัลกอริทึม Merge พื้นฐานของ Git ได้
- ช่วยปรับปรุงคำสั่ง Git เช่น
merge, revert, rebase, cherrypick
- หรือจะคงพฤติกรรมดั้งเดิมของ Git ไว้ แล้วเรียกใช้ Mergiraf เองเมื่อเกิดความขัดแย้งก็ได้
เป้าหมายของ Mergiraf
- ไม่ซ่อนความขัดแย้ง
- ฮิวริสติกการ merge ที่รับรู้ไวยากรณ์อาจมองโลกในแง่ดีเกินไปในบางครั้งและถือว่าความขัดแย้งถูกแก้แล้ว
- หากมีความน่าสงสัย Mergiraf จะพยายามรักษาสภาพที่ดีที่สุดไว้โดยคง conflict marker ไว้ในไฟล์
- หากแก้ความขัดแย้งทั้งหมดได้ด้วยตัวเอง ก็จะแนะนำให้ตรวจสอบงานไกล่เกลี่ยผ่านคำสั่ง
mergiraf review
- หากการรวมดูเหมือนผิดพลาด สามารถรายงานได้ง่ายด้วย
mergiraf report
- เร็วพอสำหรับการใช้งานแบบโต้ตอบ
- ยีราฟสามารถวิ่งได้ด้วยความเร็ว 60 กิโลเมตรต่อชั่วโมง
- งานรวมเวอร์ชันที่แตกแขนงของไฟล์มักเกิดขึ้นเป็นกิจวัตรโดยแทบไม่ทันสังเกต ตราบใดที่ไม่มีความขัดแย้ง
- Mergiraf พยายามทำงานให้รวดเร็วเพื่อไม่ให้รบกวนเวิร์กโฟลว์
- เปิดกว้างต่อวิธีอื่น
- ในหลายกรณี การ merge แบบอิงบรรทัดทำงานได้ดีและไม่จำเป็นต้องมีการจัดการต้นไม้
- หากการ merge แบบอิงบรรทัดไม่มีความขัดแย้ง Mergiraf จะส่งคืนผลลัพธ์นั้นทันที (เร็วมาก)
- หากการ merge แบบอิงบรรทัดทำให้เกิดคีย์ซ้ำ Mergiraf จะทำงานเพิ่มเติมเล็กน้อยเพื่อแก้ปัญหาหรือเน้นให้เห็นด้วย conflict marker
2 ความคิดเห็น
ยีราฟสามารถวิ่งได้ด้วยความเร็ว 60 กิโลเมตรต่อชั่วโมงเลยนะ
ความเห็นจาก Hacker News
กำลังทำงานคล้ายกับ SemanticDiff และกำลังเจอปัญหาในการใช้ tree-sitter กับ GumTree
ส่วนสถาปัตยกรรมของ Mergiraf อธิบายวิธีการทำงานของเครื่องมือที่ซับซ้อนนี้ได้อย่างลึกซึ้ง
เหตุผลที่เลือกยีราฟคือมันมองได้ไกลเพราะความสูง และมีหัวใจใหญ่ที่สุดในบรรดาสัตว์เลี้ยงลูกด้วยนมบนบก
วิจารณ์แนวคิดที่อ้างว่าในการแทรกบางกรณี ลำดับไม่สำคัญ
struct Foo; struct Bar;แล้วฝั่ง Left แทรกimpl Foo { }ขณะที่ฝั่ง Right แทรกstruct Baz;ระหว่างสองบรรทัดนี้ ซึ่งคอมพิวเตอร์อาจมองไม่เห็นความแตกต่างมองบวกกับการพัฒนา merge driver ของ Git
printคนละตัว ก็อาจทำให้โค้ดที่ได้ไม่ถูกต้องเมื่อทีมขยายภาษาพื้นฐานให้เข้ากับปัญหาเฉพาะ เครื่องมือที่รับรู้ไวยากรณ์มักเจอปัญหา
เป็นไอเดียที่อาจช่วยแก้ความขัดแย้งที่เกี่ยวข้องกับการจัดรูปแบบอัตโนมัติได้
ตั้งใจจะลองใช้ Mergiraf และใช้งานร่วมกับ git-absorb อยู่แล้ว
การรองรับ Python น่าจะมีประโยชน์
แม้การรองรับภาษายังมีจำกัด แต่ก็หวังว่าจะมีการเพิ่มการรองรับภาษาอื่นอีกมากขึ้น