7 คะแนน โดย xguru 2022-01-21 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • อิงตามทฤษฎีแพตช์ แต่ยังคงทำงานได้รวดเร็วและขยายต่อได้

  • Commutation

→ การเปลี่ยนแปลงแต่ละรายการสามารถนำไปใช้ได้โดยไม่ขึ้นกับลำดับ และไม่เปลี่ยน version id

→ เวิร์กโฟลว์เรียบง่ายกว่า git rebase หรือ hg transplant มาก

→ มีฟีเจอร์ channels ที่คล้ายกับ branch แต่ไม่ใช่สิ่งสำคัญเหมือนในระบบอื่น ตัวอย่างเช่น feature branch ใน Pijul เป็นเพียงการเปลี่ยนแปลงอย่างหนึ่งเท่านั้น

→ การรักษา history ให้สะอาดเป็นค่าตั้งต้น

  • Merge correctness

→ Pijul รับประกันบางอย่างในระหว่างการ merge

→ สิ่งที่สำคัญที่สุดคือจะรักษาลำดับของบรรทัดไว้เสมอ ต่างจาก 3-way merge ที่บางครั้งบรรทัดอาจสลับปะปนกัน

→ หากไม่สามารถระบุลำดับได้ (เช่น กรณีแก้ไขพร้อมกัน) จะถือเป็น Conflict ซึ่งต่างจากระบบที่มองว่าเป็น "Automatic" หรือ "No Conflict"

  • First-class conflicts

→ ใน Pijul, Conflict ไม่ได้ถูกมองว่าเป็น "merge ล้มเหลว" แต่ถูกทำเป็นแบบจำลองให้เป็นกรณีมาตรฐาน

→ โดยเฉพาะ Conflict ที่เกิดขึ้นระหว่างการเปลี่ยนแปลงสองรายการ จะถูกแก้ไขด้วยการเปลี่ยนแปลงหนึ่งรายการ

  • Partial Clones

→ เมื่อใช้ Commutation จะสามารถโคลนเฉพาะส่วนย่อยเล็ก ๆ ของ repository ได้ และในทางปฏิบัติก็สามารถนำไปใช้เฉพาะการเปลี่ยนแปลงของส่วนย่อยนั้นได้ด้วย

→ งานที่เกี่ยวกับ Partial Clone จะสร้าง Changes ที่สามารถส่งเข้าไปยัง repository ขนาดใหญ่ได้อย่างง่ายดาย

3 ความคิดเห็น

 
maxn0d3 2022-12-05

พูดตรงๆ ว่าแม้ Git จะเป็นมาตรฐานที่ใช้กันในงานจริง แต่ก็ใช้งานลำบากมาก T_T ถึงเวลาค่อยๆ ย้ายไปใช้ Pijul ที่พัฒนาด้วย Rust แล้ว

 
galadbran 2022-01-21

ความแตกต่างที่ใหญ่ที่สุดระหว่าง svn กับ git (ถ้าไม่นับเรื่องที่เป็น distributed repository) คือ svn จัดการ diff ในขณะที่ git จัดการ snapshot แต่พอเห็นว่าเป็น patch theory ก็เลยรู้สึกว่ามันน่าจะเป็นแนวที่จัดการ diff มากกว่านะครับ

 
xguru 2022-01-21

ทฤษฎีแพตช์ (Theory of Patches) ดูได้จาก Darcs ซึ่งเป็นระบบจัดการเวอร์ชันแบบกระจาย

เวลาเปรียบเทียบ Darcs กับ Git มักอธิบายแบบนี้

A set of changes that you record in Git is called a “commit”, while in Darcs it is called a “patch”.