Size: 12718
Comment: Put into Thai category
|
← Revision 6 as of 2009-05-19 19:30:56 ⇥
Size: 12735
Comment: converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
''(บทนี้เป็นบทที่ 3 จาก 9 บทของ [:ThaiTutorial:บทเรียนการใช้งาน Mercurial] บทก่อนหน้าคือ [:ThaiTutorialClone:ทำสำเนา repository ที่มีอยู่], บทถัดไปคือ [:ThaiTutorialFirstChange:ทำการแก้ไขแรกของคุณ])'' | ''(บทนี้เป็นบทที่ 3 จาก 9 บทของ [[ThaiTutorial|บทเรียนการใช้งาน Mercurial]] บทก่อนหน้าคือ [[ThaiTutorialClone|ทำสำเนา repository ที่มีอยู่]], บทถัดไปคือ [[ThaiTutorialFirstChange|ทำการแก้ไขแรกของคุณ]])'' |
Line 5: | Line 5: |
หลังจากที่เราได้ทำตามขั้นตอนในบท [:ThaiTutorialClone:ทำสำเนา repository ที่มีอยู่] เราก็จะมีสำเนาของ repository ในเครื่องตัวเองชื่อ {{{my-hello}}} | หลังจากที่เราได้ทำตามขั้นตอนในบท [[ThaiTutorialClone|ทำสำเนา repository ที่มีอยู่]] เราก็จะมีสำเนาของ repository ในเครื่องตัวเองชื่อ {{{my-hello}}} |
Line 7: | Line 7: |
ลองมาดูกันว่า [:Repository:repository] นี้มีประวัติการแก้ไขอะไรบ้างกัน เราสามารถดูประวัติได้โดยใช้คำสั่ง {{{log}}} ซึ่งจะพิมพ์สรุปการแก้ไขทุกครั้งที่เกิดขึ้นใน repository โดยเริ่มแสดงจากการแก้ไขครั้งล่าสุดไปจนถึงการแก้ไขครั้งแรก | ลองมาดูกันว่า [[Repository|repository]] นี้มีประวัติการแก้ไขอะไรบ้างกัน เราสามารถดูประวัติได้โดยใช้คำสั่ง {{{log}}} ซึ่งจะพิมพ์สรุปการแก้ไขทุกครั้งที่เกิดขึ้นใน repository โดยเริ่มแสดงจากการแก้ไขครั้งล่าสุดไปจนถึงการแก้ไขครั้งแรก |
Line 26: | Line 26: |
* ย่อหน้าแต่ละย่อหน้าในผลลัพธ์อธิบายเกี่ยวกับ[:ChangeSet:เซ็ตการแก้ไข]แต่ละเซ็ต เซ็ตการแก้ไขก็คือการจัดกลุ่มไฟล์ต่างๆที่ถูกแก้ไขให้เป็นกลุ่มเดียวเวลาคอมมิท | * ย่อหน้าแต่ละย่อหน้าในผลลัพธ์อธิบายเกี่ยวกับ[[ChangeSet|เซ็ตการแก้ไข]]แต่ละเซ็ต เซ็ตการแก้ไขก็คือการจัดกลุ่มไฟล์ต่างๆที่ถูกแก้ไขให้เป็นกลุ่มเดียวเวลาคอมมิท |
Line 29: | Line 29: |
* ตัวเลขตัวแรกก่อนเครื่องหมาย : คือ[:RevisionNumber:ครั้งที่แก้ไข] เป็นตัวเลขสั้นๆที่ใช้ระบุเซ็ตการแก้ไขใดๆ ตัวเลขนี้จะมีความหมายเฉพาะสำหรับ repository นี้เท่านั้น * ตัวเลขฐาน 16 หลังเครื่องหมาย : เป็นรูปแบบย่อ (short-form) ของ[:ChangeSetID:รหัสประจำเซ็ตการแก้ไข]; ตัวเลขนี้ใช้เพื่อระบุเซ็ตการแก้ไขนี้ใน repository ใดก็ตามที่มีเซ็ตการแก้ไขนี้อยู่ ถ้าคุณต้องพูดถึงเซ็ตการแก้ไขกับคนอื่นๆให้ใช้รหัสประจำเซ็ตการแก้ไขแทนที่จะใช้ตัวเลขครั้งที่แก้ไข * {{{tag}}} คือ[:Tag:ป้ายกำกับ]ซึ่งเป็นชื่อที่มีความหมายของเซ็ตการแก้ไข |
* ตัวเลขตัวแรกก่อนเครื่องหมาย : คือ[[RevisionNumber|ครั้งที่แก้ไข]] เป็นตัวเลขสั้นๆที่ใช้ระบุเซ็ตการแก้ไขใดๆ ตัวเลขนี้จะมีความหมายเฉพาะสำหรับ repository นี้เท่านั้น * ตัวเลขฐาน 16 หลังเครื่องหมาย : เป็นรูปแบบย่อ (short-form) ของ[[ChangeSetID|รหัสประจำเซ็ตการแก้ไข]]; ตัวเลขนี้ใช้เพื่อระบุเซ็ตการแก้ไขนี้ใน repository ใดก็ตามที่มีเซ็ตการแก้ไขนี้อยู่ ถ้าคุณต้องพูดถึงเซ็ตการแก้ไขกับคนอื่นๆให้ใช้รหัสประจำเซ็ตการแก้ไขแทนที่จะใช้ตัวเลขครั้งที่แก้ไข * {{{tag}}} คือ[[Tag|ป้ายกำกับ]]ซึ่งเป็นชื่อที่มีความหมายของเซ็ตการแก้ไข |
Line 33: | Line 33: |
* ป้ายกำกับพิเศษที่ชื่อ {{{tip}}} เป็นป้ายที่ระบุ[:Tip:ส่วนปลาย]ของ repository (ที่เป็นเซ็ตการแก้ไขล่าสุดใน repository เสมอ) ถ้าคุณสร้างเซ็ตการแก้ไขใหม่ (ซึ่งเรากำลังจะทำในอีกแป๊ปเดียว) ป้ายกำกับ {{{tip}}} จะถูกลบออกจากเซ็ตการแก้ไขล่าสุดและถูกเพิ่มที่เซ็ตการแก้ไขใหม่ที่เราเพิ่งสร้างแทน | * ป้ายกำกับพิเศษที่ชื่อ {{{tip}}} เป็นป้ายที่ระบุ[[Tip|ส่วนปลาย]]ของ repository (ที่เป็นเซ็ตการแก้ไขล่าสุดใน repository เสมอ) ถ้าคุณสร้างเซ็ตการแก้ไขใหม่ (ซึ่งเรากำลังจะทำในอีกแป๊ปเดียว) ป้ายกำกับ {{{tip}}} จะถูกลบออกจากเซ็ตการแก้ไขล่าสุดและถูกเพิ่มที่เซ็ตการแก้ไขใหม่ที่เราเพิ่งสร้างแทน |
Line 36: | Line 36: |
* {{{summary}}} เป็นบรรทัดแรกของคำอธิบายของเซ็ตการแก้ไข คำอธิบายนี้จะถูกใส่โดยผู้สร้างเซ็ตการแก้ไขตอนคอมมิทเพื่อบอกคนอื่นว่าเค้าได้แก้ไขอะไรไปบ้าง และแก้ไขเพราะอะไร (ลองดู ["ChangeSetComments"]) * {{{parent}}} บอกว่าเซ็ตการแก้ไขไหนเป็น[:Parent:บรรพบุรุษ]ของเซ็ตการแก้ไขนี้ ถ้ามีบรรพบุรุษมากกว่าหนึ่งนั่นก็หมายความว่าเซ็ตการแก้ไขนี้ถูก[:Merge:รวม]จากส่วนยอดของ repository มากกว่าหนึ่งอัน |
* {{{summary}}} เป็นบรรทัดแรกของคำอธิบายของเซ็ตการแก้ไข คำอธิบายนี้จะถูกใส่โดยผู้สร้างเซ็ตการแก้ไขตอนคอมมิทเพื่อบอกคนอื่นว่าเค้าได้แก้ไขอะไรไปบ้าง และแก้ไขเพราะอะไร (ลองดู [[ChangeSetComments]]) * {{{parent}}} บอกว่าเซ็ตการแก้ไขไหนเป็น[[Parent|บรรพบุรุษ]]ของเซ็ตการแก้ไขนี้ ถ้ามีบรรพบุรุษมากกว่าหนึ่งนั่นก็หมายความว่าเซ็ตการแก้ไขนี้ถูก[[Merge|รวม]]จากส่วนยอดของ repository มากกว่าหนึ่งอัน |
Line 77: | Line 77: |
ผลลัพธ์จากตัวเลือก `--debug` จะแสดงฟิลด์เหล่านี้เพิ่ม (ลองดู [:DebuggingFeatures]): | ผลลัพธ์จากตัวเลือก `--debug` จะแสดงฟิลด์เหล่านี้เพิ่ม (ลองดู [[DebuggingFeatures]]): |
Line 81: | Line 81: |
* {{{manifest}}} แสดง[:Manifest:รหัส manifest] สำหรับเซ็ตการแก้ไขนี้ | * {{{manifest}}} แสดง[[Manifest|รหัส manifest]] สำหรับเซ็ตการแก้ไขนี้ |
Line 97: | Line 97: |
<!> ตัวเลือก {{{-r}}} สนับสนุน syntax มากมายสำหรับเลือกช่วงของเซ็ตการแก้ไขที่เราต้องการดู แต่เนื่องจากเรามีการแก้ไขแค่ 2 ครั้งในตัวอย่างเราจึงไม่สามารถแสดงวิธีการใช้ตัวเลือกต่างๆได้มากนัก ลองอ่าน [http://www.selenic.com/mercurial/hg.1.html#log manpage] เพิ่มเติมดู | <!> ตัวเลือก {{{-r}}} สนับสนุน syntax มากมายสำหรับเลือกช่วงของเซ็ตการแก้ไขที่เราต้องการดู แต่เนื่องจากเรามีการแก้ไขแค่ 2 ครั้งในตัวอย่างเราจึงไม่สามารถแสดงวิธีการใช้ตัวเลือกต่างๆได้มากนัก ลองอ่าน [[http://www.selenic.com/mercurial/hg.1.html#log|manpage]] เพิ่มเติมดู |
Line 134: | Line 134: |
ตอนนี้เราพอจะมีไอเดียบ้างแล้วว่า repository มีความเป็นมายังไง ถึงเวลาที่จะ[:ThaiTutorialFirstChange:ทำการแก้ไขแรก]แล้ว! | ตอนนี้เราพอจะมีไอเดียบ้างแล้วว่า repository มีความเป็นมายังไง ถึงเวลาที่จะ[[ThaiTutorialFirstChange|ทำการแก้ไขแรก]]แล้ว! |
บทเรียน - ดูประวัติการแก้ไขใน repository
(บทนี้เป็นบทที่ 3 จาก 9 บทของ บทเรียนการใช้งาน Mercurial บทก่อนหน้าคือ ทำสำเนา repository ที่มีอยู่, บทถัดไปคือ ทำการแก้ไขแรกของคุณ)
หลังจากที่เราได้ทำตามขั้นตอนในบท ทำสำเนา repository ที่มีอยู่ เราก็จะมีสำเนาของ repository ในเครื่องตัวเองชื่อ my-hello
ลองมาดูกันว่า 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
เราลองมาทำความเข้าใจความหมายของแต่ละบรรทัดกัน
ย่อหน้าแต่ละย่อหน้าในผลลัพธ์อธิบายเกี่ยวกับเซ็ตการแก้ไขแต่ละเซ็ต เซ็ตการแก้ไขก็คือการจัดกลุ่มไฟล์ต่างๆที่ถูกแก้ไขให้เป็นกลุ่มเดียวเวลาคอมมิท
- ในตัวอย่างด้านบน repository มีประวัติการแก้ไขสองครั้ง (สองเซ็ตการแก้ไข)
changeset เป็นเลขที่หรือรหัสที่ใช้เพื่อระบุเซ็ตการแก้ไขนั้นๆ
ตัวเลขตัวแรกก่อนเครื่องหมาย : คือครั้งที่แก้ไข เป็นตัวเลขสั้นๆที่ใช้ระบุเซ็ตการแก้ไขใดๆ ตัวเลขนี้จะมีความหมายเฉพาะสำหรับ repository นี้เท่านั้น
ตัวเลขฐาน 16 หลังเครื่องหมาย : เป็นรูปแบบย่อ (short-form) ของรหัสประจำเซ็ตการแก้ไข; ตัวเลขนี้ใช้เพื่อระบุเซ็ตการแก้ไขนี้ใน repository ใดก็ตามที่มีเซ็ตการแก้ไขนี้อยู่ ถ้าคุณต้องพูดถึงเซ็ตการแก้ไขกับคนอื่นๆให้ใช้รหัสประจำเซ็ตการแก้ไขแทนที่จะใช้ตัวเลขครั้งที่แก้ไข
tag คือป้ายกำกับซึ่งเป็นชื่อที่มีความหมายของเซ็ตการแก้ไข
เราสามารถสร้างป้ายกำกับได้มากกว่าหนึ่งป้ายสำหรับเซ็ตการแก้ไข จริงๆแล้วคงมีไม่กี่เซ็ตที่มีป้ายกำกับติดตัวเพราะฉะนั้นคุณคงไม่ค่อยเห็นบรรทัด tag นี้บ่อยนัก
ป้ายกำกับพิเศษที่ชื่อ tip เป็นป้ายที่ระบุส่วนปลายของ repository (ที่เป็นเซ็ตการแก้ไขล่าสุดใน repository เสมอ) ถ้าคุณสร้างเซ็ตการแก้ไขใหม่ (ซึ่งเรากำลังจะทำในอีกแป๊ปเดียว) ป้ายกำกับ tip จะถูกลบออกจากเซ็ตการแก้ไขล่าสุดและถูกเพิ่มที่เซ็ตการแก้ไขใหม่ที่เราเพิ่งสร้างแทน
user บอกว่าใครเป็นคนสร้างเซ็ตการแก้ไขนี้ ค่านี้ไม่มีรูปแบบตายตัว แต่โดยปกติจะเป็นอีเมล์และบางครั้งก็มีชื่อผู้สร้างด้วย
date บอกว่าเซ็ตการแก้ไขนี้ถูกสร้างเมื่อไร Mercurial จะพิมพ์วันที่โดยใช้เขตเวลาที่ผู้สร้างเซ็ตการแก้ไขอยู่
summary เป็นบรรทัดแรกของคำอธิบายของเซ็ตการแก้ไข คำอธิบายนี้จะถูกใส่โดยผู้สร้างเซ็ตการแก้ไขตอนคอมมิทเพื่อบอกคนอื่นว่าเค้าได้แก้ไขอะไรไปบ้าง และแก้ไขเพราะอะไร (ลองดู ChangeSetComments)
parent บอกว่าเซ็ตการแก้ไขไหนเป็นบรรพบุรุษของเซ็ตการแก้ไขนี้ ถ้ามีบรรพบุรุษมากกว่าหนึ่งนั่นก็หมายความว่าเซ็ตการแก้ไขนี้ถูกรวมจากส่วนยอดของ repository มากกว่าหนึ่งอัน
- โดยปกติแล้วเซ็ตการแก้ไขจะมีบรรพบุรุษแค่อันเดียวนั้นก็คือเซ็ตการแก้ไขก่อนหน้า อย่างที่เห็นได้ในตัวอย่างด้านบน
เราสามารถดูรายละเอียดเพิ่มเติมได้โดยขอให้ 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 (...)
ผลลัพธ์จากตัวเลือก -v มีฟิลด์เพิ่มขึ้นมาอีกสองสามอัน
files บอกว่าไฟล์ไหนถูกแก้ไขบ้างในเซ็ตการแก้ไขนี้
description แสดงคำอธิบายทั้งหมด (ไม่ใช่แค่บรรทัดแรก)
- ในตัวอย่างด้านบน เนื่องจากว่าคำอธิบายยาวแค่บรรทัดเดียวเราจะไม่เห็นความแตกต่างเวลาใช้ตัวเลือกนี้
ผลลัพธ์จากตัวเลือก --debug จะแสดงฟิลด์เหล่านี้เพิ่ม (ลองดู DebuggingFeatures):
changeset จะแสดงรหัสประจำเซ็ตการแก้ไขแบบเต็ม
ฟิลด์ parent สองอันสำหรับระบุรหัสประจำเซ็ตการแก้ไขของบรรพบุรุษทั้งสองของเซ็ตการแก้ไขนี้ รหัส -1:0000000000000000000000000000000000000000 จะแทนค่ากรณีที่ไม่มีบรรพบุรุษ
manifest แสดงรหัส manifest สำหรับเซ็ตการแก้ไขนี้
file+ แสดงไฟล์ที่ถูกเพิ่มใหม่ในเซ็ตการแก้ไขนี้
file- แสดงไฟล์ที่ถูกลบออกในเซ็ตการแก้ไขนี้
คำสั่ง log มาพร้อมกับตัวเลือก -r สำหรับดูรายละเอียดของเซ็ตการแก้ไขโดยเจาะจง
$ 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 มากมายสำหรับเลือกช่วงของเซ็ตการแก้ไขที่เราต้องการดู แต่เนื่องจากเรามีการแก้ไขแค่ 2 ครั้งในตัวอย่างเราจึงไม่สามารถแสดงวิธีการใช้ตัวเลือกต่างๆได้มากนัก ลองอ่าน manpage เพิ่มเติมดู
นอกจากนั้นก็ยังมีตัวเลือก -p ที่มาพร้อมกับคำสั่ง log สำหรับแสดง patch ของเซ็ตการแก้ไข:
$ 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 เพื่อแสดงรายละเอียดของส่วนปลายของ 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 มีความเป็นมายังไง ถึงเวลาที่จะทำการแก้ไขแรกแล้ว!