Differences between revisions 1 and 2
Revision 1 as of 2008-11-19 11:04:09
Size: 10218
Comment:
Revision 2 as of 2008-11-19 12:04:20
Size: 11408
Comment: Translate remaining half of page.
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
ลองมาดูกันว่า [:Repository:repository] นี้มีประวัติการแก้ไขอะไรบ้างกัน เราสามารถดูประวัติได้โดยใช้คำสั่ง {{{log}}} ซึ่งจะพิมพ์สรุปการแก้ไขทุกๆอันที่เกิดขึ้นใน repository โดยเริ่มแสดงจากการแก้ไขล่าสุดไปจนถึงการแก้ไขแรก ลองมาดูกันว่า [:Repository:repository] นี้มีประวัติการแก้ไขอะไรบ้าง เราสามารถดูประวัติได้โดยใช้คำสั่ง {{{log}}} ซึ่งจะพิมพ์สรุปการแก้ไขทุกๆอันที่เกิดขึ้นใน repository โดยเริ่มแสดงจากการแก้ไขล่าสุดไปจนถึงการแก้ไขแรก
Line 77: Line 77:
The `--debug` output adds the following fields to the verbose output (see also [:DebuggingFeatures]): ผลลัพธ์จากตัวเลือก `--debug` เพิ่มฟิลด์เหล่านี้ (ลองดู [:DebuggingFeatures]):
Line 79: Line 79:
 * {{{changeset}}} now gives the unabbreviated changeset ID.
 * two {{{parent}}} fields giving the changeset ID of both parents for this changeset, where {{{-1:0000000000000000000000000000000000000000}}} refers to a non-existant parent.
 * {{{manifest}}} gives the [:Manifest:manifest] ID for this changeset.
 * {{{file+}}} lists the file(s) added in this changeset.
 * {{{file-}}} lists the file(s) removed in this changeset.
 * {{{changeset}}} จะแสดง changeset ID แบบเต็ม
 * ฟิลด์ {{{parent}}} สองอันที่ระบุ changeset ID ของบรรพบุรุษทั้งสองของ changeset นี้ โดยที่ ID {{{-1:0000000000000000000000000000000000000000}}} แทนค่ากรณีที่ไม่มีบรรพบุรุษ
 * {{{manifest}}} แสดง [:Manifest:manifest] ID สำหรับ changeset นี้
 * {{{file+}}} แสดงไฟล์ที่ถูกเพิ่มใหม่ใน changeset นี้
 * {{{file-}}} แสดงไฟล์ที่ถูกลบออกใน changeset นี้
Line 86: Line 86:
The {{{log}}} command comes with a {{{-r}}} option to view specific changesets. คำสั่ง {{{log}}} มาพร้อมกับตัวเลือก {{{-r}}} เพื่อดูรายละเอียดสำหรับ changeset โดยเจาะจง
Line 97: Line 97:
<!> The {{{-r}}} option actually supports a very flexible syntax to select a range of changesets. However, due to limited number of changesets available in our sample repository, we are unable to provide a good demonstration. Please consult the [http://www.selenic.com/mercurial/hg.1.html#log manpage] for more information. <!> ตัวเลือก {{{-r}}} สนับสนุน syntax มากมายในการเลือกช่วงของ changesets แต่เนื่องจากเรามีจำนวน changeset ในตัวอย่างค่อนข้างจำกัด เราจึงไม่สามารถแสดงวิธีการใช้ตัวเลือกต่างๆได้ ลองอ่าน [http://www.selenic.com/mercurial/hg.1.html#log manpage] เพิ่มเติมดู
Line 99: Line 99:
The {{{log}}} command also comes with a {{{-p}}} option to show the patches associated with the changesets: นอกจากนั้นก็ยังมีตัวเลือก {{{-p}}} ที่มาพร้อมกับคำสั่ง {{{log}}} เพื่อแสดง patch ต่างที่เกี่ยวข้องกับ changeset:
Line 116: Line 116:
We can also use the {{{tip}}} command to show info of the ''tip'', i.e. the latest, changeset. The {{{tip}}} command may be considered a shortcut to {{{log -r tip}}}. เรายังสามารถใช้คำสั่ง {{{tip}}} เพื่อแสดงรายละเอียดของส่วนปลายหรือ changeset ล่าสุดของ ของ repository คิดซะว่าคำสั่ง {{{tip}}} เป็นทางลัดสำหรับคำสั่ง {{{log -r tip}}}
Line 134: Line 134:
Now that we have some slight idea of what has happened, let's jump in and make some changes! Onwards, to [:TutorialFirstChange]! ถึงตรงนี้เราพอจะมีไอเดียบ้างแล้วว่าเกิดอะไรขึ้นใน repository ถึงเวลาที่จะแก้ไขไฟล์แล้ว! ลุยต่อที่ [:ThaiTutorialFirstChange]!

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

(หน้านี้เป็นหน้าที่ 2 จาก 9 ของ[:Tutorial:บทเรียน]การใช้งาน 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)