ฉันเพิ่งเริ่มวางโค้ดของฉันภายใต้การควบคุมเวอร์ชัน (ในแล็บที่ฉันทำงานอยู่ภายใต้ SVN และรหัสของฉันเองใน GitHub (เห็นได้ชัดกับ git) ก่อนที่จะใช้การควบคุมเวอร์ชันฉันเคยทำอะไรแบบนี้ ฉันมีโฟลเดอร์ชื่อห้องสมุดในหลาย ๆ โฟลเดอร์ที่มีหมายเลขเวอร์ชัน ทุกครั้งที่ฉันต้องการเริ่มทำงานกับเวอร์ชันที่ใหม่กว่าฉันจะทำสำเนาของเวอร์ชันล่าสุดเปลี่ยนชื่อเป็นเวอร์ชันใหม่และเริ่มนำไปใช้
อย่างไรก็ตามวิธีนี้ดูเหมือนจะซ้ำซ้อนเมื่อโฟลเดอร์อยู่ภายใต้การควบคุมเวอร์ชัน นอกเหนือจากความซ้ำซ้อนหากมีคนต้องการรับรุ่นล่าสุดพวกเขาจะดาวน์โหลดทุกรุ่นถ้าเขาเพียงแค่import
s / clone
s
ตอนนี้ฉันเห็นหลายวิธีในการทำเช่นนี้ด้วยการควบคุมเวอร์ชัน แต่เนื่องจากฉันใหม่สำหรับมันฉันไม่ทราบว่าจะบำรุงรักษาได้ดีกว่า
วิธีที่ 1: ใช้แท็ก
หากฉันเข้าใจแท็กอย่างถูกต้องคุณจะมีสาขาหลักของคุณคุณยอมรับการเปลี่ยนแปลงใด ๆ ที่คุณได้รับและแท็กด้วยเวอร์ชัน จากนั้นเมื่อคุณต้องการได้รับสำเนาที่ใช้งานได้คุณจะได้รับแท็กที่แน่นอน (ช่วยแก้ให้ด้วยนะถ้าฉันผิด)
วิธีที่ 2: เวอร์ชันการแยกสาขา
ในวิธีนี้สาขาหลักจะเป็นสาขาการพัฒนา ทุก ๆ ครั้งที่มีการสร้างเวอร์ชันที่เสถียร (สมมติว่าv1.2.0
) คุณสร้างสาขาสำหรับเวอร์ชันนั้นและไม่ผูกมัด ด้วยวิธีนี้หากคุณต้องการดาวน์โหลดเวอร์ชันใดรุ่นหนึ่งคุณจะได้รับรหัสจากสาขานั้น แม้ว่าฉันจะบอกว่าคุณไม่เคยยอมทำ แต่ก็เป็นไปได้ที่จะแก้ไขข้อผิดพลาดและผูกมัดกับสาขาของรุ่นเก่าเพื่อให้รุ่นเก่าทำงานต่อไป ตัวอย่างเช่นหากรุ่นปัจจุบันคือv2.0
แต่มีคนที่ต้องการใช้v1.2
คุณสามารถรับสาขาอื่นจากv1.2
คือv1.2.1
และกระทำการแก้ไขข้อบกพร่องหรือเพียงแค่ทำให้รุ่นเดียวกันv1.2
และเพียงแค่แก้ไขข้อผิดพลาด
ดังนั้นกิ่งจะเป็นดังนี้:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
วิธีนี้คุณจะมีสาขาสำหรับการอัปเดตทุกเวอร์ชั่นรอง (โปรดทราบว่าในกราฟข้างต้น v1.2.1 และ v1.2.2 หรือสร้างหลังจากปล่อย v2.0.0 ดังนั้นพวกเขาจึงไม่ได้เป็นส่วนหนึ่งของการพัฒนาระหว่าง v1.2.0 และ v2.0.0 คิดว่ามันเป็นเวอร์ชั่นเก่ากว่า)
วิธีที่ 3: การพัฒนาแยกสาขา
วิธีนี้ตรงกันข้ามกับวิธีก่อนหน้า สาขาหลักจะเป็นเวอร์ชั่นที่มั่นคงล่าสุด เมื่อใดก็ตามที่คุณทำงานกับเวอร์ชันใหม่คุณจะสร้างสาขา (เพื่อการพัฒนา) ทำงานกับโค้ดของคุณและเมื่อมันเสถียรให้ผสานกับสาขาหลัก
ในกรณีนี้กิ่งจะมีลักษณะเช่นนี้:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
น่าจะเป็นสิ่งนี้ต้องทำร่วมกับแท็กใช่มั้ย
คำถาม!
อย่างไรก็ตามคำถามของฉันคือจากประสบการณ์ของคุณซึ่งวิธีการเหล่านี้พิสูจน์ได้จริงมากขึ้น? มีวิธีที่ดีที่สุดที่เป็นที่รู้จัก (นั่นอาจเป็นเพราะฉันไม่ได้คิดออกเอง)? สิ่งเหล่านี้เกิดขึ้นได้อย่างไร?