418342 ภาคปลาย 2552/ปฏิบัติการที่ 1
เนื้อหา
Mercurial
ในเทอมนี้เราจะใช้ Mercurial ซึ่งเป็นซอฟต์แวร์สำหรับจัดการซอร์สโค้ดตัวหนึ่ง ในการให้การบ้าน การส่งการบ้าน รวมไปถึงการทำแล็บ
คุณสามารถดาวน์โหลด Mercurial ได้จาก [1] และถ้าคุณใช้ระบบปฏิบัติการ Windows เราแนะนำให้คุณลง TortoiseHg ด้วย เพราะมันช่วยทำให้คุณใช้ Mercurial ได้สะดวกขึ้นมาก
เราได้สร้าง repository (ที่เก็บไฟล์) ส่วนตัวให้กับนิสิตทุกคนที่ลงทะเบียนแล้ว ซึ่งมันอยู่ที่ https://theory.cpe.ku.ac.th/418342_<<ชื่อ account เกษตร ของคุณ>> ส่วนรหัสผ่านเราจะแจกให้คุณในชั้นเรียน
เมื่อคุณเข้าไปแล้วจะพบว่าในนั้นไม่มีไฟล์อะไรอยู่เลย
การทำงานกับระบบจัดการซอร์สโค้ด
การทำงานโดยใช้ระบบจัดการซอร์สโค้ดมีขั้นตอนดังต่อไปนี้
คุณทำการ clone repository ที่เก็บอยู่บนเครื่องเซิร์ฟเวอร์ (ในที่นี้คือเครื่อง theory.cpe.ku.ac.th) ลงเครื่องส่วนตัวของคุณ while true do pull ความเปลี่ยนแปลงที่อยู่บน server มา update ซอร์สโค้ดที่เก็บไว้บนเครื่อง แก้ไขซอร์สโค้ดบนเครื่องส่วนตัว commit ความเปลี่ยนแปลงที่คุณสร้าง push ความเปลี่ยนแปลงที่อยู่บนเครื่องส่วนตัวเข้าเครื่องเซิร์ฟเวอร์
คุณจะเห็นได้ว่ามีขั้นตอนที่มีชื่อเป็นภาษาอังกฤษสามขั้นตอนคือ clone, pull, update, commit, และ push ขั้นตอนสามขั้นตอนนี้เป็นคำสั่งของ mercurial ที่คุณสามารถใช้ได้โดยตรง และเราจะมาเรียนรู้มันกันในวันนี้
การ clone
การ clone คือการคัดลอก repository ทั้ง repository มาเก็บไว้บนเครื่องของคุณ สิ่งที่คุณได้มากับ repository คือประวัติศาสตร์ความเปลี่ยนแปลงทั้งหมดที่คุณเคยสร้างกับโค้ดที่อยู่ใน repository นั้น ฉะนั้นเมื่อคุณมี repository แล้วคุณสามารถจะย้อนไปดูโค้ดเวอร์ชันไหนก็ได้ตั้งแต่เริ่มต้นทำงาน คล้ายกับที่คุณสามารถดู history ของหน้าวิกินี้ได้
การโคลนเราจะใช้การสั่ง hg clone โดยให้คุณเข้าไปใน command prompt ของระบบปฏิบัติการคุณ แล้วสั่ง
hg clone https://theory.cpe.ku.ac.th/418342_<<ชื่อ account>> <<ชื่อไดเรคทอรีที่คุณต้องการให้เป็นที่อยู่ของ repository>>
เช่น ถ้าผมต้องการให้ repository ของผมอยู่ที่ไดเรคทอรี c:\418342 ผมอาจจะสั่งคำสั่งต่อไปนี้
cd c:\ hg clone https://theory.cpe.ku.ac.th/418342_pramook 418342
สำหรับคนที่ใช้ TortoiseHg คุณสามารถคลิกขวาในหน้าต่าง Explorer ของไดเรคทอรีที่คุณต้องการ "Clone a Repository Here..."
คำถาม 1
ในไดเรคทอรีที่คุณเพิ่งจะโคลนมามีไฟล์อะไรบ้าง (รวมไฟล์ที่ถูกซ่อน (hidden)) ด้วย
การ pull
เวลาโปรแกรมเมอร์หลายคนทำงานพร้อมๆ กัน จะมีการตั้ง server กลางไว้หนึ่งเครื่องเพื่อเก็บโค้ดที่เสถียรและได้รับการทดสอบมาอย่างดีแล้ว หลังจากนั้นโปรแกรมเมอร์แต่ละคนก็จะ clone repository มาไว้บนเครื่องของตัวเอง แล้วทำงานไปเรื่อยๆ บางคนทำงานเสร็จแล้วก็จะส่งโค้ดที่ตนเองแก้ไขหรือเพิ่มเข้า repository ไป เมื่อโปรแกรมเมอร์คนอื่นต้องการจะได้ความเปลี่ยนแปลงที่โปรแกรมคนอื่นสร้างและส่งเข้าสู่ server แล้ว เขาจะทำการ "pull" มันออกมาจาก server
สำหรับการเรียนการสอนวิชานี้ การตั้ง server ของเราจะไม่เหมือนกับที่กล่าวในย่อหน้าที่แล้ว ผมได้ตั้ง "master repository" ที่จะบรรจุโค้ดแล็ปและการบ้านไว้ ถ้าคุณต้องการโค้ดของแล็ปหรือการบ้าน คุณจะต้องไป pull มันจาก master repository มายัง repository บนเครื่องคอมพิวเตอร์ส่วนตัวของคุณ
master repository ของเราอยู่ที่ https://theory.cpe.ku.ac.th/418342_master/ เมื่อคุณเข้าเวบไซต์ที่ URL นี้คุณสามารถเข้าไปดูว่าใน repository นี้ไฟล์อะไรอยู่บ้างด้วยการคลิกที่ลิงค๋ "manifest"
คำถาม 2
ใน master repository มีไฟล์อยู่กี่ไฟล์? อะไรบ้าง?
ในการณ์นี้ให้คุณเข้าไปในไดเรคทอรีที่ของ repository แล้วสั่ง
hg pull https://theory.cpe.ku.ac.th/418342_master