งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 การจัดการเวอร์ชันด้วย Mercurial ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ (01204223) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 การจัดการเวอร์ชันด้วย Mercurial ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ (01204223) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์"— ใบสำเนางานนำเสนอ:

1 1 การจัดการเวอร์ชันด้วย Mercurial ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ ( ) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์

2 2 ตัวอย่าง Development Timeline Development Timeline revision 3: เพิ่ม ฟีเจอร์ A revision 0: เวอร์ชัน แรกสุด revision 1: แก้บั๊ก X revision 2: แก้บั๊ก Y revision 4: เพิ่ม ฟีเจอร์ B revision 5: แก้บั๊ก Z ปัจจุบัน : ( ยังไม่เก็บเป็น revision)

3 3 ตัวอย่างซอฟต์แวร์จัดการ เวอร์ชัน แบบรวมศูนย์ ( มี repo* กลางที่เดียว )  CVS – Concurrent Versions System  SVN – Apache Subversion แบบกระจาย (repo ติดอยู่กับ ผู้พัฒนา )  Git  Mercurial Repo *Repo = Repository - คลังเก็บเวอร์ชัน ผู้พัฒนา Repo ผู้พัฒนา Repo ผู้พัฒนา Repo ผู้พัฒนา Repo ผู้พัฒนา

4 4 Workflow ระบบจัดการเวอร์ชันแบบรวมศูนย์ (centralized version control system) ระบบจัดการเวอร์ชันแบบกระจาย (distributed version control system) Repo ผู้พัฒนา src code ผู้พัฒนา src code commit update commit update ผู้พัฒนา src code Repo ผู้พัฒนา src code Repo commit/update push / pull / clone

5 5 Mercurial ซอฟต์แวร์จัดการเวอร์ชันแบบกระจาย สั่งงานด้วย Command-Line มี GUI frontend มากมาย  TortoiseHg (Windows/Linux/Mac OS)  MacHg (Mac OS X 10.6+)  ดูเพิ่มเติมที่ herTools

6 6 ส่วนประกอบหลักของการ จัดการเวอร์ชัน รายการรีวิชัน รายละเอียดรีวิชัน revision = changeset ไฟล์ที่มีการเปลี่ยนแปลง ข้อความสรุปการแก้ไข (commit message) เวลาที่แก้ ชื่อผู้ที่แก้ไข

7 7 เตรียมตัวใช้ Mercurial สร้างไฟล์.hgrc ในโฮมไดเรคเตอ รีของตนเพื่อระบุชื่อและอีเมล์  กรอกข้อมูลต่อไปนี้ลงในไฟล์ โดย ใส่ชื่อและอีเมล์ตามความเป็นจริง  ชื่อนี้จะถูกบันทึกเป็นผู้จัดเก็บรีวิชัน [ui] username = Firstname Lastname

8 8 จัดการเวอร์ชันให้ myweb สร้าง mercurial repository ใน ไดเรคตอรี myweb บอก mercurial ให้ไม่ต้องสนใจ ไฟล์ *.pyc  สร้างไฟล์.hgignore ไว้ใน myweb โดยมีข้อความ $ cd myweb $ hg init syntax: glob *.pyc

9 9 ตรวจสอบสถานะการ จัดการเวอร์ชัน ใช้คำสั่ง hg status เพื่อดูสถานะการ จัดการเวอร์ชันของไฟล์ในโปรเจ็ค $ hg status ?.hgignore ? __init__.py ? manage.py ? settings.py ? shape/__init__.py ? shape/models.py ? shape/tests.py ? shape/views.py ? templates/index.html ? templates/rectangle.html ? templates/result.html ? urls.py เครื่องหมาย ? แสดงถึง การที่ไฟล์นั้นยังไม่ถูก จัดการเวอร์ชัน

10 10 ระบุไฟล์ที่ต้องการจัดการ เวอร์ชัน คำสั่ง hg add ใช้บอกให้ mercurial เริ่มจัดการ เวอร์ชันให้ไฟล์  เพิ่มไฟล์ทั้งหมดที่ยังไม่ถูกจัดการเวอร์ชัน  เพิ่มโดยระบุชื่อไฟล์  เพิ่มไฟล์ *.py ทุกไฟล์ในไดเรคตอรีปัจจุบัน  เพิ่มไฟล์ *.py ทุกไฟล์ในไดเรคตอรีปัจจุบันและซับ ไดเรคตอรีทั้งหมด  เพิ่มไฟล์ทุกไฟล์ที่ยังไม่ถูกจัดการ ยกเว้นไฟล์ที่ลง ท้ายด้วย.html $ hg add manage.py settings.py $ hg add $ hg add -I '**.py' $ hg add -I '*.py' $ hg add -X '**.html'

11 11 Commit - บันทึกรีวิชัน บันทึกโค้ดปัจจุบันเป็นรีวิชันใหม่โดยใช้ คำสั่ง commit  ควรตรวจสอบสถานะไฟล์ก่อนโดยใช้คำสั่ง status $ hg status A.hgignore A __init__.py A manage.py A settings.py A shape/__init__.py A shape/models.py A shape/tests.py A shape/views.py A templates/index.html A templates/rectangle.html A templates/result.html A urls.py $ hg commit –m "First revision" $ hg status $ Commit Message หรือข้อความแสดงการแก้ไข ควรให้กระชับและได้ใจความ เช่น "Fix bug …" "Add feature …" ผลลัพธ์จาก hg status แสดงให้ เห็นว่าไม่เหลือไฟล์ที่ถูกแก้ไขแต่ ยังไม่ได้เก็บลงเป็นรีวิชัน

12 12 Commit แบบเลือกไฟล์ เราไม่จำเป็นต้อง commit ทุกไฟล์ที่มีการ เปลี่ยนแปลงลงในรีวิชันเดียว ตามธรรมเนียมปฏิบัติที่ดี แต่ละรีวิชันของ ซอฟต์แวร์ควรทำงานได้สมบูรณ์ในตัวเอง  เช่นแก้บั๊กเสร็จ 1 แห่งหรือเพิ่มฟีเจอร์ 1 อย่าง  ไม่ควรใช้เป็นที่เก็บไฟล์ที่เซฟครึ่ง ๆ กลาง ๆ $ hg status M shape/views.py M templates/rectangle.html A templates/triangle.html M urls.py $ hg commit –m "Fix incorrect URL" shape/views.py urls.py $ hg status M templates/rectangle.html A templates/triangle.html $ เปลี่ยนแปลง 4 ไฟล์ ( แก้ 3 เพิ่ม 1) เลือก commit เพียงสองไฟล์ เหลือ 2 การแก้ไข ที่ยังไม่ถูกบันทึก เป็นรีวิชัน

13 13 ตรวจดูรายการรีวิชัน ใช้คำสั่ง log ใช้ทางเลือก -v เพื่อแสดงไฟล์ที่ แก้ไขและถูกบันทึกลงในแต่ละรีวิชัน $ hg log changeset: 0:87ad7f0fe866 tag: tip user: Chaiporn Jaikaeo date: Wed Jul 06 22:07: summary: First revision Commit message ชื่อผู้บันทึกรีวิชัน ลำดับ / หมายเลขรีวิชัน เวลาที่บันทึก $ hg -v log

14 14 TortoiseHg ให้ผู้ใช้สั่งงาน Mercurial ผ่าน GUI ใช้คำสั่ง hgtk แทนที่ hg ได้กับ คำสั่งส่วนใหญ่ $ hgtk add $ hgtk status $ hgtk commit $ hgtk log

15 15 เตรียม repository บน เซิร์ฟเวอร์ ใช้ ssh เข้าไปยังเครื่อง cloud28 เพื่อ สร้าง hg repository ไว้เก็บโปรเจ็คของ ตน ใช้คำสั่ง push ที่เครื่องตนเองเพื่อส่ง ข้อมูลรีวิชันทั้งหมดไปไว้บนเครื่อง cloud28 $ hg push $ ssh Password: : ( ตอนนี้อยู่ที่เครื่อง cloud28) $ mkdir hg $ cd hg $ hg init myweb $ logout

16 16 การโคลนและดึง repository ใช้คำสั่ง clone เพื่อดึง repository ทั้งก้อนมาพัฒนาต่อบนเครื่องที่ไม่มี โปรเจ็คอยู่ก่อน ใช้คำสั่ง pull เพื่อให้ repository ใน เครื่องมีข้อมูลรีวิชันล่าสุดตามที่อยู่บน เซิร์ฟเวอร์ $ hg clone $ hg pull

17 17 การสลับรีวิชัน ใช้คำสั่ง update เพื่อเปลี่ยนโค้ด ปัจจุบันไปเป็นโค้ด ณ เวลาที่รีวิชันถูก สร้างขึ้น  ปรับโค้ดไปเป็นโค้ดของรีวิชันที่ 3  ปรับโค้ดไปเป็นโค้ดของรีวิชันล่าสุด $ hg update 3 $ hg update

18 18 ซอฟต์แวร์ที่พัฒนาหลาย คน สั่ง merge เพื่อรวบประวัติรีวิชัน ต่างกันเข้าด้วยกัน Timeline Repo เซิร์ฟเวอร์กลาง Repo เครื่องของ Chaiporn Repo เครื่องของ Jittat commit push clone commit pull push pull merge commit push pull

19 19 คำสั่ง merge $ hg push คลังเก็บเวอร์ชันกลาง pushing to... searching for changes abort: push creates new remote heads on branch 'default'! (you should pull and merge or use push -f to force) $ hg pull คลังเก็บเวอร์ชันกลาง : $ hg merge $ hg commit -m commit message $ hg push คลังเก็บเวอร์ชันกลาง

20 20 ตัวอย่างกระบวนการ merge Repository สองแห่ง (r1 และ r2) โคลนมาจากที่เดียวกันแต่เริ่มมี ประวัติรีวิชันต่างกัน

21 21 ตัวอย่างกระบวนการ merge r2 สั่ง pull มาจาก r1 r2 สั่ง merge และ commit


ดาวน์โหลด ppt 1 การจัดการเวอร์ชันด้วย Mercurial ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ (01204223) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์

งานนำเสนอที่คล้ายกัน


Ads by Google