การจัดการเวอร์ชันด้วย Mercurial

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
รายละเอียดวิชา ง การงานพื้นฐาน4(คอมพิวเตอร์2)
Advertisements

อาจารย์ผู้ร่วมประเมิน
การอบรมการใช้ศูนย์กำลังคนอาชีวศึกษา
ฐานข้อมูลสิทธิบัตรทั่วโลก (ไทย)
ประเภท โครงการต่อยอด/ขยายผลโครงการเดิม(A)
โปรแกรมแสดงประวัติการแก้ไขแฟ้มเอกสาร (Multi-Version Text Viewer / Editor) COE นาย กัณวัตม์ ไชยารัศมี รหัส นาย ชัยวัฒน์ สุขปัญญา รหัส.
ระบบคลังสินค้านม Milk Warehouse System ผู้จัดทำ
HTML Language ภาษา HTML คืออะไร ? HTML (Hyper Text Markup Language) เป็นภาษาที่ใช้ในการพัฒนา web page เพื่อให้โปรแกรม web brower ต่างๆ (Internet Explorer,
Index ความเป็นมา วัตถุประสงค์ ขอบเขตการทำงาน แนวทางแก้ปัญหา
การพัฒนาระบบการส่งคำสั่งล้างข้อมูล ระยะไกล
การใช้งานโปรแกรม 7 สิงหาคม 2555.
ระบบคลังสินค้านม Milk Warehouse System ผู้จัดทำ
FORM อ.กันทิมา อ่อนละออ
1 ProQuest Nursing & Allied Health Source โดย ภวัต เรืองยิ่ง แผนก ฝึกอบรมฐานข้อมูล บริษัท บุ๊คโปรโมชั่น แอนด์ เซอร์วิส จำกัด ปรับปรุงครั้งล่าสุด.
การใช้งาน vi การเรียกโปรแกรม การทำงานของโปรแกรม vi ชื่อไฟล์
ณ ห้องประชุมปฏิบัติการคอมพิวเตอร์ (CAI)
หน่วยงาน สำนักงานจัดการระบบเทคโนโลยีสารสนเทศ
1 โดย ธีรวัฒน์ พุฒิสกุลวงศ์ แผนกฝึกอบรมฐานข้อมูล บริษัท บุ๊คโปรโมชั่น แอนด์เซอร์วิส จำกัด ปรับปรุ่งล่าสุด 12/5/2009.
1 โดย ธีรวัฒน์ พุฒิสกุลวงศ์ แผนกฝึกอบรมฐานข้อมูล บริษัท บุ๊ค โปรโมชั่น แอนด์ เซอร์วิส จำกัด โดย ธีรวัฒน์ พุฒิสกุลวงศ์
1 ภวัต เรืองยิ่ง แผนก ฝึกอบรมฐานข้อมูล บริษัท บุ๊ค โปรโมชั่น แอนด์ เซอร์วิส แก้ไขครั้งล่าสุด 11 May 2009.
บทที่ 13 การผลิตแบบทันเวลาพอดี
การส่งค่าและการเก็บค่า (ต่อ... )
การจัดการเอกสารด้วยไลบรารี
HTTP Client-Server.
คู่มือการใช้ฐานข้อมูลออนไลน์ Science Online
การขอเบิกเงินนอกงบประมาณ
RSA & DSA RSA คือ อัลกอริธึมการเข้าหรัสแบบกุญแจอสมมาตร ซึ่งจะได้
Operating System ฉ NASA 4.
SCC : Suthida Chaichomchuen
การติดตั้ง AppServ
คู่มือสร้างบล็อก blog.spu.ac.th
Jatuphum Juanchaiyaphum
RADIUS & TACACS.
พัฒนาเว็บแอพลิเคชันด้วย Django
สร้างตารางเพิ่มเติม สร้างตารางโดยไปที่ Database explorer > table > add new table กำหนดให้สร้างตาราง UserPic เก็บข้อมูลรูปภาพของผู้ใช้งาน.
ระบบเบิกจ่าย การ LOCK รายการตั้งเบิกกรณีที่มีค่าปรับ
ทำการตั้งเบิกเพิ่ม แบบฟอร์ม GFMIS.ขบ.03 เพื่อชดใช้ใบสำคัญ
Operating System โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้
เตรียมตัวให้พร้อมก่อนเขียนโปรแกรม Java
ระบบจัดการห้องประชุมและสมาชิก
Part 2 WebMin.
วิธีการทางคอมพิวเตอร์
โครงการอบรมการใช้ระบบเว็บเซิร์ฟเวอร์ ของหน่วยงานภายใน มหาวิทยาลัยเทคโนโลยีราชมงคลพระนคร 14 มีนาคม 2556 ณ ศูนย์การเรียนรู้ด้วยตนเองเทเวศร์ สำนักวิทยบริการและเทคโนโลยี
ความรู้เบื้องต้นเกี่ยวกับการสร้าง WebPage
ISMS By Marketing Leased Line.
รายละเอียดของ Print Screen หน้าจอสังเกตการณ์ ของคณะกรรมการประกวดราคา (โปรแกรม CAT e-auction โลโก้ใหม่)
ProQuest Nursing & Allied Health Source
การชี้แจงวิธีการใช้งาน ระบบติดตามออนไลน์
Web Report.
โดย จิรวัฒน์ พรหมพร บริษัท บุ๊ค โปรชั่น แอนด์ เซอร์วิส จำกัด.
ProQuest Dissertations & Theses – A&I
ตัวชี้วัดระดับความสำเร็จของการดำเนินการ มาตรการประหยัดพลังงาน
การใช้ Subversion เบื้องต้น
CHAPTER 12 FORM.
การใช้งานระบบ TU Moodle
ระบบปฏิบัติการ ( Operating System : OS )
การเข้าใช้ Speexx ครั้งแรก Foundation English II
E-Sarabun.
“Disk Operating System”
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
งบกองทุนหลักประกันสุขภาพ
14/01/581 ผู้พัฒนา อะโดบีซิสเต็มส์ ( เริ่ม พัฒนาโดย แมโครมีเดีย ) รุ่นเสถียร ล่าสุด CS3 (9.0) รุ่นทดลอง ล่าสุด (27 มีนาคม พ. ศ. 2550) โอเอส Windows Mac.
การสร้างพจนานุกรม.
เฉลิมชัย ประเทืองรัตน์ อาจารย์ประจำหมวด คอมพิวเตอร์ วุฒิทางการศึกษา วิทยาศาสตรบัณฑิต สาขาเทคโนโลยีสารสนเทศและการสื่อสาร.
การสร้างฟอร์ม(Form) ด้วยภาษา HTML
หน้าจอการสืบค้น (OPAC)
ซอฟต์แวร์บริหารจัดการงานสำนักงานในกลุ่ม Open Source รุ่นใหม่ล่าสุดที่มีการปรับเปลี่ยน โฉมหน้า และการใช้งานให้คล้ายคลึงกับ ซอฟต์แวร์ออฟฟิศที่เป็นที่นิยม.
วิชาเทคโนโลยีคอมพิวเตอร์และระบบปฏิบัติการ รหัสวิชา Computer Technology and Operating System บทที่ 1 เทคโนโลยีคอมพิวเตอร์ อ.รจนา วานนท์ Master.
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
C# Part 0: Introduction to Revision Control
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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

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

ตรวจสอบสถานะการจัดการเวอร์ชัน ใช้คำสั่ง 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 เครื่องหมาย ? แสดงถึงการที่ไฟล์นั้นยังไม่ถูกจัดการเวอร์ชัน

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

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" $ Commit Message หรือข้อความแสดงการแก้ไข ควรให้กระชับและได้ใจความ เช่น "Fix bug …" "Add feature …" ผลลัพธ์จาก hg status แสดงให้เห็นว่าไม่เหลือไฟล์ที่ถูกแก้ไขแต่ยังไม่ได้เก็บลงเป็นรีวิชัน

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 $ เลือก commit เพียงสองไฟล์ เปลี่ยนแปลง 4 ไฟล์ (แก้ 3 เพิ่ม 1) เหลือ 2 การแก้ไข ที่ยังไม่ถูกบันทึก เป็นรีวิชัน

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

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

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

การโคลนและดึง repository ใช้คำสั่ง clone เพื่อดึง repository ทั้งก้อนมาพัฒนาต่อบนเครื่องที่ไม่มีโปรเจ็คอยู่ก่อน ใช้คำสั่ง pull เพื่อให้ repository ในเครื่องมีข้อมูลรีวิชันล่าสุดตามที่อยู่บนเซิร์ฟเวอร์ $ hg clone ssh://username@cloud28.cpe.ku.ac.th/hg/myweb $ hg pull ssh://username@cloud28.cpe.ku.ac.th/hg/myweb

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

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

คำสั่ง 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

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

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