ใน VCS แบบดั้งเดิมฉันสามารถเข้าใจได้ว่าทำไมคุณถึงไม่ยอมส่งไฟล์ที่ไม่ได้แก้ไขเพราะคุณสามารถทำลายบิลด์ อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมคุณไม่ควรส่งไฟล์ที่ไม่ได้แก้ไขใน DVCS (บางไฟล์จะป้องกันไม่ให้คุณส่งไฟล์)
แต่ฉันคิดว่าที่เก็บของคุณควรถูกล็อคจากการผลักและดึงแต่ไม่ได้กระทำ
ความสามารถในการส่งมอบระหว่างกระบวนการผสานมีข้อดีหลายประการ (ดังที่ฉันเห็น):
- การเปลี่ยนแปลงที่เกิดขึ้นจริงรวมอยู่ในประวัติศาสตร์
- หากการรวมมีขนาดใหญ่มากคุณสามารถทำสัญญาเป็นระยะได้
- หากคุณทำผิดพลาดมันจะง่ายกว่ามากในการย้อนกลับ (โดยไม่ต้องทำซ้ำการผสานทั้งหมด)
- ไฟล์อาจยังคงถูกตั้งค่าสถานะเป็นไม่ได้แก้ไขจนกว่าจะมีการทำเครื่องหมายว่าแก้ไขแล้ว สิ่งนี้จะป้องกันการผลัก / ดึง
คุณอาจจะมีชุดของเซ็ตการแก้ไขทำหน้าที่เป็นผสานแทนที่จะเป็นชุดเดียว git rerere
นี้จะช่วยให้คุณยังคงใช้เครื่องมือเช่น
เหตุใดจึงมีการส่งไฟล์ที่ไม่ได้รับการแก้ไข / ป้องกัน? มีเหตุผลอื่นนอกเหนือจากประเพณีหรือไม่?
hg 1.6
หลังจากการรวมไฟล์จะถูกทำเครื่องหมายว่ายังไม่ได้แก้ไข hg
จะไม่ยอมให้คุณทำจนกว่าคุณจะทำเครื่องหมายว่าพวกเขาได้รับการแก้ไขแล้ว (ไม่ได้แปลว่าคุณต้องแก้ไขพวกเขาจริง ๆ แต่ฉันคิดว่านั่นเป็นความคิด)
hg
ดูแลรายการของไฟล์ที่มีหรือไม่มีการตั้งค่าสถานะเป็น "แก้ไข" (โดยใช้hg resolve
) หากมีU
ไฟล์ใด ๆในรายการนี้มันจะไม่ยอมให้คุณทำ
hg resolve
ใช้สำหรับการผสานกับความขัดแย้งโดยเฉพาะ ดูselenic.com/mercurial/hg.1.html#resolve Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.