การรวมประวัติการแก้ไข

คำสั่ง hg merge

การรวมประวัติการแก้ไข คือการรวมเซ็ตการแก้ไขสองอันใน [:ThaiRepository:repository] เป็นเซ็ตการแก้ไขเดียว เรียกว่า[:ThaiMergeChangeset:merge changeset] หรือจะพูดง่ายๆว่าเป็นการรวม[:ThaiBranch:กิ่ง]สองสิ่ง (ซึ่งโดยปกติจะเป็นเซ็ตการแก้ไขที่[:ThaiHead:ส่วนยอด]ของ repository) เป็นกิ่งเดียว

วิธีการรวมประวัตินั้นค่อนข้างง่าย โดยปกติคุณมักจะต้องการรวมประวัติของ[:ThaiTip:ส่วนปลาย]ของ repository เข้ามาใน[:ThaiWorkingDirectory:ไดเร็คทอรี่สำหรับใช้ทำงาน]ของคุณ

เมื่อคุณใช้คำสั่ง hg merge Mercurial จะทำการรวมการแก้ไขต่างๆจากส่วนปลายเข้าไปในไดเร็คทอรี่ของคุณ; หลังจากการรวมประวัติ เซ็ตการแก้ไขเวอร์ชั่นปลายนี้จะกลายเป็นบรรพบุรุษที่สองของไดเร็คทอรี่สำหรับใช้ทำงาน

ขั้นตอนแรกของการรวมประวัติคือการหาเซ็ตการแก้ไขที่เป็น 'บรรพบุรุษ' ของทั้งสองเวอร์ชั่นเสียก่อน (ในที่นี้คือ rev 1) โดยการค้นหาจะทำกับทั้ง repository และเปรียบเทียบแบบไฟล์ต่อไฟล์

ถ้าไฟล์ถูกแก้ไขทั้งใน repository คุณและ repository อื่น Mercurial จะใช้[:ThaiMergeProgram:โปรแกรมการรวมโค้ด] เพื่อรวมเนื้อหาที่ถูกแก้ไขจาก repository อื่นเข้ามาไว้ในเนื้อหาของไดเร็คทอรี่ของคุณ กรณีที่มี[:ThaiConflict:การแก้ไขที่มีความขัดแย้ง]คุณจะต้องแก้ไขความขัดแย้งนี้เองผ่านโปรแกรมดังกล่าว

หลังจากรวมเนื้อหาแล้ว คุณจะต้อง[:ThaiCommit:คอมมิท]การแก้ไขด้วย การคอมมิทนี้จะสร้าง merge changeset ใหม่ (rev 4 ในตัวอย่าง) ถือเป็นการบันทึกผลลัพธ์ของการรวมประวัติการแก้ไขและเนื้อหาอย่างถาวรในไดเร็คทอรี่สำหรับใช้ทำงานของคุณ

Mercurial จะไม่อนุญาติให้คุณทำการรวมประวัติครั้งใหม่จนกว่าคุณจะทำการคอมมิท เพราะว่า Mercurial จำเป็นต้องใช้ประวัติการคอมมิทนี้สำหรับการรวมประวัติครั้งต่อๆไปในอนาคต

และเหมือนเช่นเคย เซ็ตการแก้ไขที่สร้างจากการคอมมิทจะกลายเป็นบรรพบุรุษของไดเร็คทอรี่สำหรับใช้ทำงาน ซึ่งจะมีบรรพบุรุษแค่อันเดียว (parent 1)

ตัวช่วยเหลือ: http://www.selenic.com/mercurial/hg.1.html#merge

หน้าที่เกี่ยวข้อง: [:ThaiTutorialMerge:บทเรียนการรวมประวัติการแก้ไขจาก repository อื่น], [:ThaiResolveConflict]


CategoryCommand