Differences between revisions 2 and 3
Revision 2 as of 2008-11-19 12:04:20
Size: 11408
Comment: Translate remaining half of page.
Revision 3 as of 2008-11-19 15:41:44
Size: 11412
Comment: Changed tutorial index link to Thai index
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
''(หน้านี้เป็นหน้าที่ 2 จาก 9 ของ[:Tutorial:บทเรียน]การใช้งาน Mercurial หน้าก่อนหน้าคือ [:ThaiTutorialClone], หน้าถัดไปคือ [:ThaiTutorialFirstChange])'' ''(หน้านี้เป็นหน้าที่ 2 จาก 9 ของ[:ThaiTutorial:บทเรียน]การใช้งาน Mercurial หน้าก่อนหน้าคือ [:ThaiTutorialClone], หน้าถัดไปคือ [:ThaiTutorialFirstChange])''

บทเรียน - ดูประวัติการแก้ไขใน repository

(หน้านี้เป็นหน้าที่ 2 จาก 9 ของ[:ThaiTutorial:บทเรียน]การใช้งาน Mercurial หน้าก่อนหน้าคือ [:ThaiTutorialClone], หน้าถัดไปคือ [:ThaiTutorialFirstChange])

หลังจากที่เราได้ทำตามขั้นตอนใน ThaiTutorialClone เราก็จะมีสำเนาส่วนตัวของ repository ในเครื่องตัวเองชื่อ my-hello

ลองมาดูกันว่า [:Repository:repository] นี้มีประวัติการแก้ไขอะไรบ้าง เราสามารถดูประวัติได้โดยใช้คำสั่ง log ซึ่งจะพิมพ์สรุปการแก้ไขทุกๆอันที่เกิดขึ้นใน repository โดยเริ่มแสดงจากการแก้ไขล่าสุดไปจนถึงการแก้ไขแรก

$ cd my-hello
$ hg log
changeset:   1:82e55d328c8c
tag:         tip
user:        mpm@selenic.com
date:        Fri Aug 26 01:21:28 2005 -0700
summary:     Create a makefile

changeset:   0:0a04b987be5a
user:        mpm@selenic.com
date:        Fri Aug 26 01:20:50 2005 -0700
summary:     Create a standard "hello, world" program

เราลองมาทำความเข้าใจแต่ละบรรทัดของผลลัพธ์กัน

  • ย่อหน้าแต่ละย่อหน้าอธิบายเกี่ยวกับ [:ChangeSet:changeset] หนึ่ง โดย changeset คือการแก้ไขไฟล์ต่างๆที่ถูกจัดกลุ่มเป็นกลุ่มเดียวกัน

    • ในตัวอย่างด้านบน เราจะเห็นได้ว่าประวัติของ repository ประกอบไปด้วยสอง changesets
  • changeset ระบุเลขที่ changeset

    • ตัวเลขแรกก่อนเครื่องหมาย : คือ[:RevisionNumber:ตัวเลข revision]; เป็นตัวเลขสั้นๆที่ใช้ระบุ changeset ใดๆ ตัวเลขนี้มีความหมายเฉพาะสำหรับ repository นี้เท่านั้น

    • ตัวเลขที่เป็นเลขฐาน 16 หลังเครื่องหมาย : เป็นรูปแบบสั้น (short-form) ของ [:ChangeSetID:changeset ID]; ตัวเลขนี้เป็นตัวแทนของ changeset นี้ในทุกๆ repository ที่มี changeset นี้ ถ้าคุณต้องพูดถึง changeset ใดกับคนอื่นๆ ให้ใช้เลข changeset ID แทนที่จะใช้ตัวเลข revision

  • tag คือ[:Tag:ป้ายกำกับ] ซึ่งเป็นชื่อที่มีความหมายสำหรับ changeset

    • คุณสามารถสร้างป้ายกำกับได้มากกว่าหนึ่งป้ายสำหรับ changeset ใดๆ จริงๆแล้วคงมีไม่กี่ changeset ที่มีป้ายกำกับติดตัว เพราะฉะนั้นคุณคงไม่ค่อยเห็นบรรทัด tag บ่อยนัก

    • ป้ายกำกับพิเศษที่ชื่อ tip เป็นป้ายที่ระบุ[:Tip:ปลาย]ของ repository ซึ่งก็คือ changeset ล่าสุดใน repository เสมอ ถ้าคุณสร้าง changeset ใหม่ (ซึ่งเรากำลังจะทำในอีกแป๊ปเดียว) ป้ายกำกับ tip จะถูกลบออกจาก changeset ล่าสุดและไปเพิ่มที่ changeset ใหม่ที่เราเพิ่งสร้างแทน

  • user บอกว่าใครเป็นคนสร้าง changeset ค่านี้ไม่มีรูปแบบตายตัว แต่โดยปกติจะเป็นอีเมล์ และบางครั้งก็มีชื่อผู้สร้างด้วย

  • date บอกว่า changeset นี้ถูกสร้างเมื่อไร Mercurial จะพิมพ์วันที่โดยใช้เขตเวลาที่ผู้สร้าง changeset อยู่

  • summary เป็นบรรทัดแรกของคำอธิบาย changeset คำอธิบายนี้จะถูกใส่โดยผู้สร้าง changeset เวลาที่พวกเค้าสร้าง เพื่อบอกคนอื่นๆว่าเค้าได้แก้ไขอะไรไปบ้าง และแก้ไขเพราะอะไร (ลองดู ["ChangeSetComments"])

  • parent บอกว่า changeset ไหนเป็น [:Parent:บรรพบุรุษ] ของ changeset นี้ ถ้ามีบรรพบุรุษมากกว่าหนึ่งนั่นก็หมายความว่า changeset นี้ถูก[:Merge:รวม] จากการแก้ไขในหลายๆ repository

    • โดยปกติแล้ว changeset จะมีบรรพบุรุษแค่อันเดียวนั้นก็คือ changeset ก่อนหน้า อย่างที่เห็นได้ในตัวอย่างด้านบน

เราสามารถดูรายละเอียดเพิ่มเติมได้โดยขอให้ Mercurial พิมพ์ผลลัพธ์มากหน่อยผ่านตัวเลือก -v หรือจะใช้ตัวเลือก --debug ที่มีผลในระดับ global กับทุกๆคำสั่งก็ได้:

$ hg log -v
changeset:   1:82e55d328c8c
tag:         tip
user:        mpm@selenic.com
date:        Fri Aug 26 01:21:28 2005 -0700
files:       Makefile
description:
Create a makefile

(...)

$ hg log --debug
changeset:   1:82e55d328c8ca4ee16520036c0aaace03a5beb65
tag:         tip
parent:      0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9
parent:      -1:0000000000000000000000000000000000000000
manifest:    1:0c7c1d435e6703e03ac6634a7c32da3a082d1600
user:        mpm@selenic.com
date:        Fri Aug 26 01:21:28 2005 -0700
files+:      Makefile
extra:       branch=default
description:
Create a makefile

(...)

ผลลัพธ์แบบละเอียดนี้มีฟิลด์เพิ่มขึ้นมาอีกสองสามอัน

  • files บอกว่าไฟล์ไหนถูกแก้ไขบ้างใน changeset นี้

  • description แสดงคำอธิบายทั้งหมด (ไม่ใช่แค่บรรทัดแรก)

    • ในตัวอย่างด้านบน เนื่องจากว่าคำอธิบายยาวแค่บรรทัดเดียว เพราะฉะนั้นเราจะไม่เห็นความแตกต่างเวลาใช้ตัวเลือกนี้

ผลลัพธ์จากตัวเลือก --debug เพิ่มฟิลด์เหล่านี้ (ลองดู [:DebuggingFeatures]):

  • changeset จะแสดง changeset ID แบบเต็ม

  • ฟิลด์ parent สองอันที่ระบุ changeset ID ของบรรพบุรุษทั้งสองของ changeset นี้ โดยที่ ID -1:0000000000000000000000000000000000000000 แทนค่ากรณีที่ไม่มีบรรพบุรุษ

  • manifest แสดง [:Manifest:manifest] ID สำหรับ changeset นี้

  • file+ แสดงไฟล์ที่ถูกเพิ่มใหม่ใน changeset นี้

  • file- แสดงไฟล์ที่ถูกลบออกใน changeset นี้

คำสั่ง log มาพร้อมกับตัวเลือก -r เพื่อดูรายละเอียดสำหรับ changeset โดยเจาะจง

$ hg log -r1
changeset:   1:82e55d328c8c
tag:         tip
user:        mpm@selenic.com
date:        Fri Aug 26 01:21:28 2005 -0700
summary:     Create a makefile

<!> ตัวเลือก -r สนับสนุน syntax มากมายในการเลือกช่วงของ changesets แต่เนื่องจากเรามีจำนวน changeset ในตัวอย่างค่อนข้างจำกัด เราจึงไม่สามารถแสดงวิธีการใช้ตัวเลือกต่างๆได้ ลองอ่าน [http://www.selenic.com/mercurial/hg.1.html#log manpage] เพิ่มเติมดู

นอกจากนั้นก็ยังมีตัวเลือก -p ที่มาพร้อมกับคำสั่ง log เพื่อแสดง patch ต่างที่เกี่ยวข้องกับ changeset:

$ hg log -r1 -p
changeset:   1:82e55d328c8c
tag:         tip
user:        mpm@selenic.com
date:        Fri Aug 26 01:21:28 2005 -0700
summary:     Create a makefile

diff -r 0a04b987be5a -r 82e55d328c8c Makefile
--- /dev/null   Fri Aug 26 01:20:50 2005 -0700
+++ b/Makefile  Fri Aug 26 01:21:28 2005 -0700
@@ -0,0 +1,1 @@
+all: hello

เรายังสามารถใช้คำสั่ง tip เพื่อแสดงรายละเอียดของส่วนปลายหรือ changeset ล่าสุดของ ของ repository คิดซะว่าคำสั่ง tip เป็นทางลัดสำหรับคำสั่ง log -r tip

$ hg tip
changeset:   1:82e55d328c8c
tag:         tip
user:        mpm@selenic.com
date:        Fri Aug 26 01:21:28 2005 -0700
summary:     Create a makefile

$ hg log -r tip
changeset:   1:82e55d328c8c
tag:         tip
user:        mpm@selenic.com
date:        Fri Aug 26 01:21:28 2005 -0700
summary:     Create a makefile

ถึงตรงนี้เราพอจะมีไอเดียบ้างแล้วว่าเกิดอะไรขึ้นใน repository ถึงเวลาที่จะแก้ไขไฟล์แล้ว! ลุยต่อที่ [:ThaiTutorialFirstChange]!


CategoryTutorial

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