บทเรียน - แบ่งปันสิ่งที่คุณแก้กับ repository อื่น
(บทนี้เป็นบทที่ 5 จาก 9 บทของบทเรียนการใช้งาน Mercurial บทก่อนหน้าคือ ทำการแก้ไขแรกของคุณ, บทถัดไปคือ แบ่งปันสิ่งที่คุณแก้ไขกับบุคคลอื่นๆ)
ในบทที่แล้วเราได้สร้างเซ็ตของการแก้ไขใน repository my-hello-new-output ทีนี้ก็ถึงเวลาที่เราจะส่งสิ่งที่เราแก้ไขไปให้ repository อื่นล่ะ
เพื่อทำตามวิธีการใช้งาน Mercurial ที่ดีก่อนอื่นเราต้องทำสำเนา repository ต้นแบบเสียก่อน
$ cd .. $ hg clone my-hello my-hello-share updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
เราสามารถใช้คำสั่ง tip เพื่อดูว่าส่วนปลายของแต่ละ repository อยุ่ที่การแก้ไขไหน (จำไว้ว่าปลายของ repository คือเซ็ตการแก้ไขครั้งล่าสุด) เราสามารถใช้ตัวเลือก -q ("be quiet") เพื่อบอกให้ Mercurial พิมพ์ผลลัพธ์แบบย่อแทน
$ cd my-hello-share $ hg -q tip 1:82e55d328c8c $ cd ../my-hello-new-output $ hg -q tip 2:86794f718fb1
เราจะเห็นได้ในตัวอย่างว่าส่วนปลายของทั้งสอง repository แตกต่างกัน เพราะฉะนั้นเราจะลองกลับไปที่ my-hello-share และดึงเอาเซ็ตการแก้ไขใหม่เข้ามาโดยใช้คำสั่ง pull ซึ่งจะดึงประวัติการแก้ไขจาก repository อื่นที่ยังไม่มีอยู่ใน repository ปัจจุบันเข้ามา
$ cd ../my-hello-share $ hg pull ../my-hello-new-output pulling from ../my-hello-new-output searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (run 'hg update' to get a working copy)
เราจะสังเกตุได้ว่าคำสั่ง pull นั้นออกจะคืนผลลัพธ์มากกว่าคำสั่งอื่นๆซักหน่อย แต่ในตัวอย่างนี้คำสั่งนี้ทำงานสำเร็จเรียบร้อยดี
บรรทัดสุดท้ายของผลลัพธ์มีความสำคัญมาก โดยปกติแล้ว Mercurial จะไม่แก้ไขไฟล์ในไดเร็คทอรี่สำหรับใช้ทำงานหลังจากการ ดึงประวัติการแก้ไข ซึ่งก็หมายความว่าถึงแม้ว่า repository จะมีประวัติของเซ็ตการแก้ใหม่ตัวใหม่แล้ว ไฟล์ hello.c ในไดเร็คทอรี่สำหรับใช้ทำงานก็ยังมีเนื้อหาเดิมเหมือนก่อนที่จะดึงประวัติการแก้ไขเข้ามาไม่มีผิด
เราสามารถอัพเดทเนื้อหาของไฟล์นี้ (และไฟล์อื่นๆที่มีถูกแก้ไขจากการดึงประวัติใหม่เข้ามา) โดยทำตามคำแนะนำของ Mercurial (เราจะใช้คำสั่งแบบย่อชื่อ up):
$ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ตอนนี้เราสามารถตรวจสอบได้ว่า my-hello-share และ my-hello-new-output มีเนื้อหาและประวัติการแก้ไขเหมือนกันไม่มีผิด
บทต่อไปจะพูดถึงการ แบ่งปันสิ่งที่เราแก้ไขกับบุคคลอื่น