ผลต่างระหว่างรุ่นของ "418342 ภาคปลาย 2552/ปฏิบัติการที่ 1"
แถว 28: | แถว 28: | ||
hg clone https://theory.cpe.ku.ac.th/418342_<<ชื่อ account>> <<ชื่อไดเรคทอรีที่คุณต้องการให้เป็นที่อยู่ของ repository>> | hg clone https://theory.cpe.ku.ac.th/418342_<<ชื่อ account>> <<ชื่อไดเรคทอรีที่คุณต้องการให้เป็นที่อยู่ของ repository>> | ||
− | เช่น ถ้าผมต้องการให้ repository ของผมอยู่ที่ไดเรคทอรี | + | เช่น ถ้าผมต้องการให้ repository ของผมอยู่ที่ไดเรคทอรี c:\418342 ผมอาจจะสั่งคำสั่งต่อไปนี้ |
− | cd | + | cd c:\ |
hg clone https://theory.cpe.ku.ac.th/418342_pramook 418342 | hg clone https://theory.cpe.ku.ac.th/418342_pramook 418342 | ||
+ | |||
+ | สำหรับคนที่ใช้ TortoiseHg คุณสามารถคลิกขวาในหน้าต่าง Explorer ของไดเรคทอรีที่คุณต้องการ "Clone a Repository Here..." | ||
+ | |||
+ | <blockquote> | ||
+ | === คำถาม 1 === | ||
+ | ในไดเรคทอรีที่คุณเพิ่งจะโคลนมามีไฟล์อะไรบ้าง (รวมไฟล์ที่ถูกซ่อน (hidden)) ด้วย | ||
+ | </blockquote> | ||
+ | |||
+ | == การ 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" | ||
+ | |||
+ | <blockquote> | ||
+ | === คำถาม 2 === | ||
+ | ใน master repository มีไฟล์อยู่กี่ไฟล์? อะไรบ้าง? | ||
+ | </blockquote> | ||
+ | |||
+ | ในการณ์นี้ให้คุณเข้าไปในไดเรคทอรีที่ของ repository แล้วสั่ง | ||
+ | |||
+ | hg pull https://theory.cpe.ku.ac.th/418342_master |
รุ่นแก้ไขเมื่อ 11:04, 5 พฤศจิกายน 2552
เนื้อหา
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