ไดเร็คทอรี่สำหรับใช้ทำงาน

ไดเร็คทอรี่สำหรับใช้ทำงานคือไดเร็คทอรี่ชั้นนอกสุดของ 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" ต่อท้ายจากรหัสประจำเซ็ตการแก้ไข


CategoryGlossary CategoryThai

ThaiWorkingDirectory (last edited 2009-05-19 19:30:56 by localhost)