Differences between revisions 1 and 3 (spanning 2 versions)
Revision 1 as of 2008-11-22 16:15:07
Size: 5426
Comment: Translate first part of Repository page to Thai.
Revision 3 as of 2008-11-23 17:04:51
Size: 9985
Comment: Translate the rest into Thai.
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
Sometimes Mercurial users and developers also use the term "repository" when referring to the repository root. But strictly speaking, the `.hg` directory is the "real" repository. บางครั้งผู้ใช้และผู้พัฒนา Mercurial ใช้คำว่า "repository" เวลาพูดถึงไดเร็คทอรี่ราก แต่จริงๆแล้วไดเร็คทอรี่ `.hg` ต่างหากที่เป็น repository "ตัวจริง"
Line 19: Line 19:
=== Creation === === การสร้าง repository ===
Line 21: Line 21:
Repositories can be [:Clone:cloned] with {{{hg clone}}}, which creates a copy of an existing repository. การทำ[:ThaiClone:สำเนา]ของ repository ด้วยคำสั่ง {{{hg clone}}} เป็นวิธีนึงในการสร้าง repository ใหม่จาก repository ที่มีอยู่
Line 23: Line 23:
An existing, already populated but yet untracked directory can be transformed into a repository with {{{hg init}}}, which creates and initializes the {{{.hg}}} subdirectory. นอกจากนั้นคุณยังสามารถแปลงไดเร็คทอรี่ที่มีอยู่แล้วแต่ไม่ถูกเก็บประวัติเป็น repository ด้วยคำสั่ง {{{hg init}}} ซึ่งจะสร้างไดเร็คทอรี่ย่อย {{{.hg}}} ให้พร้อมใช้งาน
Line 26: Line 26:
=== Tracking Files === === การเริ่มเก็บประวัติไฟล์ ===
Line 28: Line 28:
A file in the working directory that shall be tracked by Mercurial must be added with {{{hg add}}}. [:LocalModifications:Local modifications] to tracked files in the working directory can be [:Commit:committed] with {{{hg commit}}}, which adds a new [:ChangeSet:changeset] to the repository by recording it in the {{{.hg}}} directory. ถ้าคุณต้องการเริ่มเก็บประวัติของไฟล์ที่อยู่ในไดเร็คทอรี่สำหรับใช้ทำงาน คุณจะต้องเพิ่มไฟล์เหล่านั้นเข้าไปใน Mercurial โดยใช้คำสั่ง {{{hg add}}} จากนั้นคุณสามารถ[:Commit:คอมมิท][:LocalModifications:การแก้ไขบนเครื่อง]ที่เกิดขึ้นกับไฟล์ที่ถูกเก็บประวัติโดยใช้คำสั่ง {{{hg commit}}} ซึ่งจะทำการสร้าง[:ChangeSet:เซ็ตการแก้ไข]ใน repository ในไดเร็คทอรี่ {{{.hg}}}
Line 30: Line 30:
The working directory can be restored with {{{hg update}}} to any previously committed state by specifying the requested changeset with its [:ChangeSetID:changeset ID]. Use {{{hg parents}}} to see the currently checked
out revision (see [:Parent]).
คุณสามารถย้อนเนื้อหาในไดเร็คทอรี่สำหรับใช้ทำงานกลับไปเป็นเซ็ตการแก้ไขที่ถูกคอมมิทไปแล้วเวอร์ชั่นใดก็ได้โดยใช้คำสั่ง {{{hg update}}} พร้อมกับระบุ [:ChangeSetID:รหัสประจำเซ็ตการแก้ไข] ใช้คำสั่ง {{{hg parents}}} เพื่อดูเวอร์ชั่นของไฟล์ที่อยู่ในไดเร็คทอรี่สำหรับใช้งาน (ดู [:Parent:บรรพบุรุษ])
Line 33: Line 32:
The last commit in a repository can be undone with {{{hg rollback}}} (see [:Rollback]). คุณสามารถยกเลิกคอมมิทครั้งสุดท้ายใน repository ได้ด้วยคำสั่ง {{{hg rollback}}} (ดู [:Rollback])
Line 36: Line 35:
=== Transferring Changesets === === การถ่ายโอนประวัติการแก้ไข ===
Line 38: Line 37:
Changesets can be transferred from one repository to another with {{{hg pull}}}, {{{hg push}}}, {{{hg export}}} and {{{hg import}}} (see [:Pull], [:Push], [:Export], [:Import], [:CommunicatingChanges]). คุณสามารถถ่ายโอนเซ็ตการแก้ไขจาก repository หนึ่งไปสู่อีก repository ได้โดยใช้คำสั่ง {{{hg pull}}}, {{{hg push}}}, {{{hg export}}} และ {{{hg import}}} (ดู [:Pull:การดึงประวัติการแก้ไข], [:Push:การผลักประวัติการแก้ไข], [:Export:การส่งออกประวัติการแก้ไข], [:Import:การนำเข้าประวัติการแก้ไข], [:CommunicatingChanges])
Line 41: Line 40:
=== Checking Integrity === === การตรวจสอบความสมบูรณ์ ===
Line 43: Line 42:
Checking the internal integrity of a repository (the contents of {{{.hg}}}) can be done with {{{hg verify}}}. คุณสามารถตรวจสอบสภาพของ repository ว่าเนื้อหาของไดเร็คทอรี่ {{{.hg}}} มีความสมบูรณ์ถูกต้องหรือไม่โดยใช้คำสั่ง {{{hg verify}}}
Line 46: Line 45:
=== Structure === === โครงสร้าง ===
Line 48: Line 47:
The {{{.hg}}} directory of a repository contains (incomplete listing): ไดเร็คทอรี่ {{{.hg}}} ประกอบไปด้วย (ในที่นี่ระบุรายละเอียดเพียงบางส่วนเท่านั้น):
Line 50: Line 49:
 * The [:Manifest:manifest] — Files {{{.hg/store/00manifest.i}}} and {{{.hg/store/00manifest.d}}}
    Describes the file contents of the repository at a particular changeset ID. Stored in [:Revlog:revlog] format.
 * The [:Changelog:changelog] — Files {{{.hg/store/00changelog.i}}} and {{{.hg/store/00changelog.d}}}
    Contains all changesets. Stored in revlog format.
 * A revlog per tracked file &mdash; Files {{{.hg/store/data/<encoded path>.i}}} and {{{.hg/store/data/<encoded path>.d}}}
    {{{<encoded path>}}} is the path of the tracked file in the working directory, encoded according to [:CaseFoldingPlan].
 * The [:DirState:dirstate] &mdash; File {{{.hg/dirstate}}}
    Tracks various information about the working directory.
 * [:Manifest:มานิเฟสต์] &mdash; ประกอบไปด้วยไฟล์ {{{.hg/store/00manifest.i}}} และ {{{.hg/store/00manifest.d}}}
    ซึ่งทำหน้าที่ระบุเนื้อหาของไฟล์ใน repository ในแต่ละเซ็ตการแก้ไขว่าประกอบไปด้วยอะไรบ้าง ไฟล์มานิเฟสต์ถูกเก็บในรูปแบบ [:Revlog:revlog]
 * [:Changelog:บันทึกการแก้ไข] &mdash; ประกอบไปด้วยไฟล์ {{{.hg/store/00changelog.i}}} และ {{{.hg/store/00changelog.d}}}
    ซึ่งเก็บเซ็ตการแก้ไขทั้งหมด บันทึกการแก้ไขถูกเก็บในรูปแบบ revlog เช่นกัน
 * หนึ่ง revlog ต่อไฟล์ที่ถูกเก็บประวัติ &mdash; สำหรับแต่ละไฟล์ที่ถูกเก็บประวัติจะประกอบไปด้วยไฟล์ {{{.hg/store/data/<encoded path>.i}}} และ {{{.hg/store/data/<encoded path>.d}}}
    {{{<encoded path>}}} คือ path ของไฟล์ที่ถูกเก็บประวัติในไดเร็คทอรี่สำหรับใช้ทำงาน ซึ่งถูกเข้ารหัสตาม [:CaseFoldingPlan]
 * ไฟล์ [:DirState:dirstate] &mdash; ประกอบไปด้วยไฟล์ {{{.hg/dirstate}}}
    มีหน้าที่เก็บข้อมูลต่างๆเกี่ยวกับไดเร็คทอรี่สำหรับใช้ทำงาน
Line 59: Line 58:
Note that for small revlogs, the revlog data file ({{{*.d}}}) may be missing, because its content may be interleaved into the corresponding index file ({{{*.i}}}) (see also [:RevlogNG]). สำหรับ revlog ที่มีขนาดเล็กไฟล์ข้อมูลของ revlog (revlog data file) ซึ่งมีนามสกุล ({{{*.d}}}) อาจจะไม่มีอยู่ เพราะว่าเนื้อหาทั้งหมดของไฟล์อาจแทรกอยู่ในไฟล์ดัชนี้ (index file) ซึ่งมีนามสกุล ({{{*.i}}}) อยู่แล้ว (ลองดู [:RevlogNG])
Line 62: Line 61:
=== Backup === === การทำสำรอง ===
Line 64: Line 63:
Backing up a repository can be done by using push/pull/clone to a backup repository. A repository which is not actively written to (by other processes concurrently running on the computer) can be backed-up by backing-up the repo directory using normal directory/file backup procedures (like tar, zip, etc). The {{{.hg}}} directory is [:CaseFolding:case folding] tolerant, which means, it can for example be copied onto a FAT filesystem (see also [:BackUp], [:CaseFoldingPlan]). การทำสำรอง repository นั้นสามารถทำได้โดยการผลัก/ดึง/ทำสำเนา repository ต้นฉบับ สำหรับ repository ที่ไม่ค่อยถูกแก้ไขบ่อยๆ (โดยโปรเซสอื่นๆที่ทำงานอยู่บนเครื่องเดียวกัน) คุณสามารถทำสำรองได้โดยใช้วิธีทำสำรองไดเร็คทอรี่/ไฟล์ปกติ (เช่น tar, zip, ฯลฯ) ไดเร็คทอรี่ {{{.hg}}} นั้นมีคุณสมบัติทนต่อ [:CaseFolding:case folding] ซึ่งหมายความว่าคุณสามารถคัดลอกไดเร็คทอรี่นี้ไปที่ระบบไฟล์แบบ FAT ได้ (ลองดู [:BackUp], [:CaseFoldingPlan])
Line 67: Line 66:
=== See also === === ข้อมูลเพิ่มเติม ===

Repository

(สำหรับคำแนะนำสั้นๆเกี่ยวกับหลักการทำงานของ Mercurial ลองอ่าน [:ThaiUnderstandingMercurial:ทำความเข้าใจ Mercurial])

ถ้าจะพูดกันให้ถูกแล้วคำว่า repository นั้นหมายถึงไดเร็คทอรี่ชื่อ .hg (จุด hg) ในไดเร็คทอรี่รากของ repository มากกว่า ไดเร็คทอรี่รากก็คือไดเร็คทอรี่ที่เป็นบรรพบุรุษของไดเร็คทอรี่ .hg Mercurial เก็บโครงสร้างข้อมูลต่างๆ – หรือที่เรียกว่าเมตาดาต้า – ภายในไดเร็คทอรี่ .hg นี้

เราเรียกไฟล์และไดเร็คทอรี่ทั้งหมดที่อยู่ในไดเร็คทอรี่เดียวกับ .hg ว่าอยู่ใน[:WorkingDirectory:ไดเร็คทอรี่สำหรับใช้ทำงาน]

วิธีง่ายๆสำหรับจำก็คือ ให้จำว่า repository คือที่ๆเก็บประวัติของโปรเจค ส่วนไดเร็คทอรี่สำหรับใช้ทำงานคือเนื้อหา ณ เวลาใดเวลาหนึ่งในประวัติของโปรเจค

คุณสามารถระบุที่อยู่ repository ในเครื่องของคุณโดยใช้ path ของไดเร็คทอรี่รากของ repository (ใช้กับตัวเลือก -R ในคำสั่งต่างๆ)

บางครั้งผู้ใช้และผู้พัฒนา Mercurial ใช้คำว่า "repository" เวลาพูดถึงไดเร็คทอรี่ราก แต่จริงๆแล้วไดเร็คทอรี่ .hg ต่างหากที่เป็น repository "ตัวจริง"

TableOfContents

การสร้าง repository

การทำ[:ThaiClone:สำเนา]ของ repository ด้วยคำสั่ง hg clone เป็นวิธีนึงในการสร้าง repository ใหม่จาก repository ที่มีอยู่

นอกจากนั้นคุณยังสามารถแปลงไดเร็คทอรี่ที่มีอยู่แล้วแต่ไม่ถูกเก็บประวัติเป็น repository ด้วยคำสั่ง hg init ซึ่งจะสร้างไดเร็คทอรี่ย่อย .hg ให้พร้อมใช้งาน

การเริ่มเก็บประวัติไฟล์

ถ้าคุณต้องการเริ่มเก็บประวัติของไฟล์ที่อยู่ในไดเร็คทอรี่สำหรับใช้ทำงาน คุณจะต้องเพิ่มไฟล์เหล่านั้นเข้าไปใน Mercurial โดยใช้คำสั่ง hg add จากนั้นคุณสามารถ[:Commit:คอมมิท][:LocalModifications:การแก้ไขบนเครื่อง]ที่เกิดขึ้นกับไฟล์ที่ถูกเก็บประวัติโดยใช้คำสั่ง hg commit ซึ่งจะทำการสร้าง[:ChangeSet:เซ็ตการแก้ไข]ใน repository ในไดเร็คทอรี่ .hg

คุณสามารถย้อนเนื้อหาในไดเร็คทอรี่สำหรับใช้ทำงานกลับไปเป็นเซ็ตการแก้ไขที่ถูกคอมมิทไปแล้วเวอร์ชั่นใดก็ได้โดยใช้คำสั่ง hg update พร้อมกับระบุ [:ChangeSetID:รหัสประจำเซ็ตการแก้ไข] ใช้คำสั่ง hg parents เพื่อดูเวอร์ชั่นของไฟล์ที่อยู่ในไดเร็คทอรี่สำหรับใช้งาน (ดู [:Parent:บรรพบุรุษ])

คุณสามารถยกเลิกคอมมิทครั้งสุดท้ายใน repository ได้ด้วยคำสั่ง hg rollback (ดู [:Rollback])

การถ่ายโอนประวัติการแก้ไข

คุณสามารถถ่ายโอนเซ็ตการแก้ไขจาก repository หนึ่งไปสู่อีก repository ได้โดยใช้คำสั่ง hg pull, hg push, hg export และ hg import (ดู [:Pull:การดึงประวัติการแก้ไข], [:Push:การผลักประวัติการแก้ไข], [:Export:การส่งออกประวัติการแก้ไข], [:Import:การนำเข้าประวัติการแก้ไข], [:CommunicatingChanges])

การตรวจสอบความสมบูรณ์

คุณสามารถตรวจสอบสภาพของ repository ว่าเนื้อหาของไดเร็คทอรี่ .hg มีความสมบูรณ์ถูกต้องหรือไม่โดยใช้คำสั่ง hg verify

โครงสร้าง

ไดเร็คทอรี่ .hg ประกอบไปด้วย (ในที่นี่ระบุรายละเอียดเพียงบางส่วนเท่านั้น):

  • [:Manifest:มานิเฟสต์] — ประกอบไปด้วยไฟล์ .hg/store/00manifest.i และ .hg/store/00manifest.d

    • ซึ่งทำหน้าที่ระบุเนื้อหาของไฟล์ใน repository ในแต่ละเซ็ตการแก้ไขว่าประกอบไปด้วยอะไรบ้าง ไฟล์มานิเฟสต์ถูกเก็บในรูปแบบ [:Revlog:revlog]

  • [:Changelog:บันทึกการแก้ไข] — ประกอบไปด้วยไฟล์ .hg/store/00changelog.i และ .hg/store/00changelog.d

    • ซึ่งเก็บเซ็ตการแก้ไขทั้งหมด บันทึกการแก้ไขถูกเก็บในรูปแบบ revlog เช่นกัน
  • หนึ่ง revlog ต่อไฟล์ที่ถูกเก็บประวัติ — สำหรับแต่ละไฟล์ที่ถูกเก็บประวัติจะประกอบไปด้วยไฟล์ .hg/store/data/<encoded path>.i และ .hg/store/data/<encoded path>.d

    • <encoded path> คือ path ของไฟล์ที่ถูกเก็บประวัติในไดเร็คทอรี่สำหรับใช้ทำงาน ซึ่งถูกเข้ารหัสตาม [:CaseFoldingPlan]

  • ไฟล์ [:DirState:dirstate] — ประกอบไปด้วยไฟล์ .hg/dirstate

    • มีหน้าที่เก็บข้อมูลต่างๆเกี่ยวกับไดเร็คทอรี่สำหรับใช้ทำงาน

สำหรับ revlog ที่มีขนาดเล็กไฟล์ข้อมูลของ revlog (revlog data file) ซึ่งมีนามสกุล (*.d) อาจจะไม่มีอยู่ เพราะว่าเนื้อหาทั้งหมดของไฟล์อาจแทรกอยู่ในไฟล์ดัชนี้ (index file) ซึ่งมีนามสกุล (*.i) อยู่แล้ว (ลองดู [:RevlogNG])

การทำสำรอง

การทำสำรอง repository นั้นสามารถทำได้โดยการผลัก/ดึง/ทำสำเนา repository ต้นฉบับ สำหรับ repository ที่ไม่ค่อยถูกแก้ไขบ่อยๆ (โดยโปรเซสอื่นๆที่ทำงานอยู่บนเครื่องเดียวกัน) คุณสามารถทำสำรองได้โดยใช้วิธีทำสำรองไดเร็คทอรี่/ไฟล์ปกติ (เช่น tar, zip, ฯลฯ) ไดเร็คทอรี่ .hg นั้นมีคุณสมบัติทนต่อ [:CaseFolding:case folding] ซึ่งหมายความว่าคุณสามารถคัดลอกไดเร็คทอรี่นี้ไปที่ระบบไฟล์แบบ FAT ได้ (ลองดู [:BackUp], [:CaseFoldingPlan])

ข้อมูลเพิ่มเติม


CategoryGlossary CategoryThai

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