SVN - แนวคิดพื้นฐาน

Version Control System คืออะไร?

Version Control System (VCS) เป็นซอฟต์แวร์ที่ช่วยให้นักพัฒนาซอฟต์แวร์สามารถทำงานร่วมกันและรักษาประวัติผลงานที่สมบูรณ์

Following are the goals of a Version Control System.

  • อนุญาตให้นักพัฒนาทำงานพร้อมกัน
  • อย่าเขียนทับการเปลี่ยนแปลงของกันและกัน
  • รักษาประวัติทุกรุ่นทุกอย่าง

A VCS is divided into two categories.

  • ระบบควบคุมเวอร์ชันส่วนกลาง (CVCS) และ
  • ระบบควบคุมเวอร์ชันกระจาย / กระจายอำนาจ (DVCS)

ในบทช่วยสอนนี้เราจะเน้นเฉพาะระบบควบคุมเวอร์ชันส่วนกลางและโดยเฉพาะอย่างยิ่ง Subversion. การโค่นล้มอยู่ภายใต้ระบบควบคุมเวอร์ชันส่วนกลางซึ่งหมายความว่าจะใช้เซิร์ฟเวอร์ส่วนกลางเพื่อจัดเก็บไฟล์ทั้งหมดและเปิดใช้งานการทำงานร่วมกันในทีม

คำศัพท์เกี่ยวกับการควบคุมเวอร์ชัน

เริ่มต้นด้วยการพูดคุยเกี่ยวกับคำศัพท์ที่เราจะใช้ในบทช่วยสอนนี้

  • Repository:ที่เก็บเป็นหัวใจของระบบควบคุมเวอร์ชันใด ๆ เป็นศูนย์กลางที่นักพัฒนาจัดเก็บงานทั้งหมดของพวกเขา Repository ไม่เพียง แต่เก็บไฟล์ แต่ยังเก็บประวัติ ที่เก็บถูกเข้าถึงผ่านเครือข่ายโดยทำหน้าที่เป็นเซิร์ฟเวอร์และเครื่องมือควบคุมเวอร์ชันที่ทำหน้าที่เป็นไคลเอนต์ ไคลเอนต์สามารถเชื่อมต่อกับที่เก็บจากนั้นพวกเขาสามารถจัดเก็บ / ดึงข้อมูลการเปลี่ยนแปลงไปยัง / จากที่เก็บได้ โดยการจัดเก็บการเปลี่ยนแปลงไคลเอนต์ทำให้การเปลี่ยนแปลงเหล่านี้พร้อมใช้งานสำหรับบุคคลอื่นและโดยการดึงการเปลี่ยนแปลงไคลเอนต์จะรับการเปลี่ยนแปลงของผู้อื่นเป็นสำเนา

  • Trunk: trunk คือไดเร็กทอรีที่การพัฒนาหลักทั้งหมดเกิดขึ้นและมักจะถูกตรวจสอบโดยนักพัฒนาเพื่อทำงานในโครงการ

  • Tags: ไดเร็กทอรีแท็กใช้เพื่อจัดเก็บสแนปชอตที่มีชื่อของโปรเจ็กต์ การดำเนินการแท็กอนุญาตให้ตั้งชื่อที่สื่อความหมายและน่าจดจำให้กับเวอร์ชันเฉพาะในที่เก็บ

    ตัวอย่างเช่น LAST_STABLE_CODE_BEFORE_EMAIL_SUPPORT น่าจดจำกว่า

    UUID ที่เก็บ: 7ceef8cb-3799-40dd-a067-c216ec2e5247 และ

    การแก้ไข: 13

  • Branches:การดำเนินการของสาขาใช้เพื่อสร้างสายการพัฒนาอื่น จะมีประโยชน์เมื่อคุณต้องการให้กระบวนการพัฒนาของคุณแยกออกเป็นสองทิศทางที่แตกต่างกัน ตัวอย่างเช่นเมื่อคุณออกเวอร์ชัน 5.0 คุณอาจต้องการสร้างสาขาเพื่อให้สามารถแยกการพัฒนาฟีเจอร์ 6.0 ออกจากการแก้ไขข้อบกพร่อง 5.0

  • Working copy:สำเนาการทำงานคือสแนปชอตของที่เก็บ ทุกทีมจะแชร์ที่เก็บข้อมูล แต่คนอื่นไม่ได้แก้ไขโดยตรง นักพัฒนาแต่ละคนจะตรวจสอบสำเนาที่ใช้งานได้แทน สำเนาการทำงานเป็นสถานที่ทำงานส่วนตัวที่นักพัฒนาสามารถทำงานของตนโดยแยกออกจากส่วนที่เหลือของทีม

  • Commit changes:Commit เป็นกระบวนการจัดเก็บการเปลี่ยนแปลงจากที่ทำงานส่วนตัวไปยังเซิร์ฟเวอร์ส่วนกลาง หลังจากยอมรับการเปลี่ยนแปลงจะพร้อมใช้งานสำหรับทุกทีม นักพัฒนารายอื่นสามารถเรียกดูการเปลี่ยนแปลงเหล่านี้ได้โดยอัปเดตสำเนาที่ใช้งานได้ Commit คือการดำเนินการแบบปรมาณู การคอมมิตทั้งหมดสำเร็จหรือถูกย้อนกลับ ผู้ใช้ไม่เคยเห็นการกระทำที่เสร็จสิ้นไปแล้วครึ่งหนึ่ง