#pragma section-numbers 3 == Repository == ''(สำหรับคำแนะนำสั้นๆเกี่ยวกับหลักการทำงานของ Mercurial ลองอ่าน [[ThaiUnderstandingMercurial|ทำความเข้าใจ Mercurial]])'' ถ้าจะพูดกันให้ถูกแล้วคำว่า '''repository''' นั้นหมายถึงไดเร็คทอรี่ชื่อ `.hg` (จุด hg) ใน''ไดเร็คทอรี่รากของ repository'' มากกว่า ไดเร็คทอรี่รากก็คือไดเร็คทอรี่ที่เป็นบรรพบุรุษของไดเร็คทอรี่ `.hg` Mercurial เก็บโครงสร้างข้อมูลต่างๆ – หรือที่เรียกว่าเมตาดาต้า – ภายในไดเร็คทอรี่ `.hg` นี้ เราเรียกไฟล์และไดเร็คทอรี่ทั้งหมดที่อยู่ในไดเร็คทอรี่เดียวกับ `.hg` ว่าอยู่ใน[[ThaiWorkingDirectory|ไดเร็คทอรี่สำหรับใช้ทำงาน]] วิธีง่ายๆสำหรับจำก็คือ ให้จำว่า repository คือที่ๆเก็บประวัติของโปรเจค ส่วนไดเร็คทอรี่สำหรับใช้ทำงานคือเนื้อหา ณ เวลาใดเวลาหนึ่งในประวัติของโปรเจค คุณสามารถระบุที่อยู่ repository ในเครื่องของคุณโดยใช้ path ของไดเร็คทอรี่รากของ repository (ใช้กับตัวเลือก `-R` ในคำสั่งต่างๆ) บางครั้งผู้ใช้และผู้พัฒนา Mercurial ใช้คำว่า "repository" เวลาพูดถึงไดเร็คทอรี่ราก แต่จริงๆแล้วไดเร็คทอรี่ `.hg` ต่างหากที่เป็น repository "ตัวจริง" <> === การสร้าง repository === การทำ[[ThaiClone|สำเนา]]ของ repository ด้วยคำสั่ง {{{hg clone}}} เป็นวิธีนึงในการสร้าง repository ใหม่จาก repository ที่มีอยู่ นอกจากนั้นคุณยังสามารถแปลงไดเร็คทอรี่ที่มีอยู่แล้วแต่ไม่ถูกเก็บประวัติเป็น repository ด้วยคำสั่ง {{{hg init}}} ซึ่งจะสร้างไดเร็คทอรี่ย่อย {{{.hg}}} ให้พร้อมใช้งาน === การเริ่มเก็บประวัติไฟล์ === ถ้าคุณต้องการเริ่มเก็บประวัติของไฟล์ที่อยู่ในไดเร็คทอรี่สำหรับใช้ทำงาน คุณจะต้องเพิ่มไฟล์เหล่านั้นเข้าไปใน Mercurial โดยใช้คำสั่ง {{{hg add}}} จากนั้นคุณสามารถ[[ThaiCommit|คอมมิท]][[ThaiLocalModifications|การแก้ไขบนเครื่อง]]ที่เกิดขึ้นกับไฟล์ที่ถูกเก็บประวัติโดยใช้คำสั่ง {{{hg commit}}} ซึ่งจะทำการสร้าง[[ThaiChangeSet|เซ็ตการแก้ไข]]ใน repository ในไดเร็คทอรี่ {{{.hg}}} คุณสามารถย้อนเนื้อหาในไดเร็คทอรี่สำหรับใช้ทำงานกลับไปเป็นเซ็ตการแก้ไขที่ถูกคอมมิทไปแล้วเวอร์ชั่นใดก็ได้โดยใช้คำสั่ง {{{hg update}}} พร้อมกับระบุ [[ThaiChangeSetID|รหัสประจำเซ็ตการแก้ไข]] ใช้คำสั่ง {{{hg parents}}} เพื่อดูเวอร์ชั่นของไฟล์ที่อยู่ในไดเร็คทอรี่สำหรับใช้งาน (ดู [[ThaiParent|บรรพบุรุษ]]) คุณสามารถยกเลิกคอมมิทครั้งสุดท้ายใน repository ได้ด้วยคำสั่ง {{{hg rollback}}} (ดู [[ThaiRollback]]) === การถ่ายโอนประวัติการแก้ไข === คุณสามารถถ่ายโอนเซ็ตการแก้ไขจาก repository หนึ่งไปสู่อีก repository ได้โดยใช้คำสั่ง {{{hg pull}}}, {{{hg push}}}, {{{hg export}}} และ {{{hg import}}} (ดู [[ThaiPull|การดึงประวัติการแก้ไข]], [[ThaiPush|การผลักประวัติการแก้ไข]], [[ThaiExport|การส่งออกประวัติการแก้ไข]], [[ThaiImport|การนำเข้าประวัติการแก้ไข]], [[ThaiCommunicatingChanges]]) === การตรวจสอบความสมบูรณ์ === คุณสามารถตรวจสอบสภาพของ repository ว่าเนื้อหาของไดเร็คทอรี่ {{{.hg}}} มีความสมบูรณ์ถูกต้องหรือไม่โดยใช้คำสั่ง {{{hg verify}}} === โครงสร้าง === ไดเร็คทอรี่ {{{.hg}}} ประกอบไปด้วย (ในที่นี่ระบุรายละเอียดเพียงบางส่วนเท่านั้น): * [[ThaiManifest|มานิเฟสต์]] — ประกอบไปด้วยไฟล์ {{{.hg/store/00manifest.i}}} และ {{{.hg/store/00manifest.d}}} ซึ่งทำหน้าที่ระบุเนื้อหาของไฟล์ใน repository ในแต่ละเซ็ตการแก้ไขว่าประกอบไปด้วยอะไรบ้าง ไฟล์มานิเฟสต์ถูกเก็บในรูปแบบ [[ThaiRevlog|revlog]] * [[ThaiChangelog|บันทึกการแก้ไข]] — ประกอบไปด้วยไฟล์ {{{.hg/store/00changelog.i}}} และ {{{.hg/store/00changelog.d}}} ซึ่งเก็บเซ็ตการแก้ไขทั้งหมด บันทึกการแก้ไขถูกเก็บในรูปแบบ revlog เช่นกัน * หนึ่ง revlog ต่อไฟล์ที่ถูกเก็บประวัติ — สำหรับแต่ละไฟล์ที่ถูกเก็บประวัติจะประกอบไปด้วยไฟล์ {{{.hg/store/data/.i}}} และ {{{.hg/store/data/.d}}} {{{}}} คือ path ของไฟล์ที่ถูกเก็บประวัติในไดเร็คทอรี่สำหรับใช้ทำงาน ซึ่งถูกเข้ารหัสตาม [[ThaiCaseFoldingPlan]] * ไฟล์ [[ThaiDirState|dirstate]] — ประกอบไปด้วยไฟล์ {{{.hg/dirstate}}} มีหน้าที่เก็บข้อมูลต่างๆเกี่ยวกับไดเร็คทอรี่สำหรับใช้ทำงาน สำหรับ revlog ที่มีขนาดเล็กไฟล์ข้อมูลของ revlog (revlog data file) ซึ่งมีนามสกุล ({{{*.d}}}) อาจจะไม่มีอยู่ เพราะว่าเนื้อหาทั้งหมดของไฟล์อาจแทรกอยู่ในไฟล์ดัชนี้ (index file) ซึ่งมีนามสกุล ({{{*.i}}}) อยู่แล้ว (ลองดู [[RevlogNG]]) === การทำสำรอง === การทำสำรอง repository นั้นสามารถทำได้โดยการผลัก/ดึง/ทำสำเนา repository ต้นฉบับ สำหรับ repository ที่ไม่ค่อยถูกแก้ไขบ่อยๆ (โดยโปรเซสอื่นๆที่ทำงานอยู่บนเครื่องเดียวกัน) คุณสามารถทำสำรองได้โดยใช้วิธีทำสำรองไดเร็คทอรี่/ไฟล์ปกติ (เช่น tar, zip, ฯลฯ) ไดเร็คทอรี่ {{{.hg}}} นั้นมีคุณสมบัติทนต่อ [[ThaiCaseFolding|case folding]] ซึ่งหมายความว่าคุณสามารถคัดลอกไดเร็คทอรี่นี้ไปที่ระบบไฟล์แบบ FAT ได้ (ลองดู [[ThaiBackUp]], [[ThaiCaseFoldingPlan]]) === ข้อมูลเพิ่มเติม === * [[ManPages]] * [[RepositoryNaming]] * [[PublishingRepositories]] * [[RepositoryConversion]] * [[DeveloperRepos]] * [[RepoSamples]] * [[SharedRepository]] ---- CategoryGlossary CategoryThai