ไดเร็คทอรี่สำหรับใช้ทำงาน
ไดเร็คทอรี่สำหรับใช้ทำงานคือไดเร็คทอรี่ชั้นนอกสุดของ repository ซึ่งมีไฟล์ที่คุณสามารถอ่าน แก้ไข และใช้ทำงานได้ ไฟล์เหล่านี้มักมาจากส่วนปลายของ repository แต่ก็อาจจะมาจากการแก้ไขครั้งก่อนหน้าได้เช่นกัน และก็อาจจะถูกแก้ไขแล้วแต่ยังไม่ได้ถูกคอมมิทก็ได้
ให้คิดว่าไดเร็คทอรี่สำหรับใช้ทำงานก็คือ"เซ็ตการแก้ไขที่เรากำลังจะคอมมิท"ก็ได้ ถ้าไดเร็คทอรี่สำหรับใช้ทำงานไม่มีเนื้อหาที่ถูกแก้ไข เราจะเรียกไดเร็คทอรี่นี้ว่ายัง สะอาด อยู่
คุณสามารถใช้คำสั่ง hg revert เพื่อยกเลิกการแก้ไขที่ยังไม่ได้ถูกคอมมิททั้งหมด (ดู Revert)
หรือใช้คำสั่ง hg update เพื่อทำให้เนื้อหาในไดเร็คทอรี่สำหรับใช้ทำงานตรงกับเนื้อหาในเซ็ตการแก้ไขที่คุณต้องการ (ดู Update)
ถ้าคุณต้องการลบไฟล์ที่อยู่ในไดเร็คทอรี่สำหรับทำงาน (ไม่ใช่ลบ repository นะ!) คุณสามารถใช้คำสั่ง
hg update null
คุณสามารถตั้งชื่อกิ่งสำหรับไดเร็คทอรี่สำหรับใช้ทำงานได้
นอกจากนั้น Mercurial ยังจัดเก็บข้อมูลต่างๆเกี่ยวกับไดเร็คทอรี่สำหรับใช้ทำงานด้วย (ดู DirState)
บรรพบุรุษ
ไดเร็คทอรี่สำหรับใช้ทำงานอาจมีบรรพบุรุษหนึ่งหรือสองเวอร์ชั่น บรรพบุรุษของไดเร็คทอรี่สำหรับใช้ทำงานนี้จะกลายเป็นบรรพบุรุษของการแก้ไขใหม่ (revision) ที่ถูกสร้างจากการคอมมิท
คำสั่ง hg update จะเปลี่ยนบรรพบุรุษของไดเร็คทอรี่สำหรับใช้ทำงาน ในขณะที่คำสั่ง hg revert จะแก้ไขเฉพาะเนื้อหาของไดเร็คทอรี่ (แต่จะไม่แก้บรรพบุรุษ)
ไดเร็คทอรี่สำหรับใช้ทำงานจะมีบรรพบุรุษสองเวอร์ชั่นได้จากการรวมประวัติการแก้ไขจนกว่าการรวมประวัตินั้นจะถูกคอมมิท
ทันทีที่เกิดการคอมมิท (หรือหลังจากใช้คำสั่ง update -C) ไดเร็คทอรี่สำหรับใช้ทำงานจะมีบรรพบุรุษแค่เวอร์ชั่น เดียว ซึ่งก็คือเซ็ตการแก้ไขที่มาจากการคอมมิท (หรืออัพเดท) นั้น
คำสั่ง hg parents (โดยไม่ระบุเลขครั้งที่แก้ไข) จะแสดงรายการบรรพบุรุษของไดเร็คทอรี่สำหรับใช้ทำงาน
นี่คือตัวอย่างผลลัพธ์ของคำสั่งสำหรับไดเร็คทอรี่สำหรับใช้ทำงานที่มีบรรพบุรุษแค่เวอร์ชั่นเดียว (ไดเร็คทอรี่ไม่มีการแก้ไขใดๆที่รอการคอมมิท):
$ hg parents changeset: 2:86794f718fb1 tag: tip user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial
และนี่คือตัวอย่างผลลัพธ์ของคำสั่งสำหรับไดเร็คทอรี่ที่มีบรรพบุรุษสองเวอร์ชั่น (หลังจากการรวมประวัติการแก้ไขแต่ยังไม่ได้คอมมิท):
$ hg parents changeset: 2:c3844fde99f0 user: mpm@selenic.com date: Tue May 06 20:10:35 2008 +0200 summary: Add description of hello.c changeset: 3:86794f718fb1 tag: tip parent: 1:82e55d328c8c user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial
เมื่อไรที่ต้องมีการอัพเดทเนื้อหา
มีวิธีสองสามวิธีเพื่อที่จะรู้ว่าเราต้องอัพเดทไดเร็คทอรี่สำหรับใช้ทำงานหรือเปล่า (ลองดู เมล์ที่เกี่ยวข้องในกระดานข่าว):
คุณสามารถเปรียบเทียบเนื้อหาในไดเร็คทอรี่สำหรับใช้ทำงานและเวอร์ชั่นที่อยู่ส่วนปลายของ repository ได้โดยใช้คำสั่ง:
hg diff -r tip
ถ้าอยากจะดูว่ามี patch อะไรที่จะถูกนำมาใช้กับไดเร็คทอรี่สำหรับใช้ทำงานเมื่อใช้คำสั่ง update ให้ใช้คำสั่ง:
hg log -r tip:.
ถ้าเกิดไดเร็คทอรี่สำหรับใช้ทำงานของคุณอยู่ที่เวอร์ชั่นปลายของ repository แล้ว (ไม่ต้องมีการอัพเดท) คำสั่ง
hg id
จะเขียนคำว่า "tip" ต่อท้ายจากรหัสประจำเซ็ตการแก้ไข