เมื่อใดที่คอมมิชชันไม่ควรติดแท็กเวอร์ชัน


30

บริบท: เมื่อเร็ว ๆ นี้ฉันค้นพบเกี่ยวกับการกำหนดเวอร์ชันแบบ Semanticและฉันกำลังพยายามหาวิธีใช้งานจริงสำหรับโครงการของฉันเอง

เนื่องจาก semver นั้นมีการเปลี่ยนแปลงที่สำคัญการเปลี่ยนแปลงเล็กน้อยและแพทช์เข้ากับการกำหนดเวอร์ชันเมื่อใดที่การคอมมิทไม่ควรติดแท็กด้วยเวอร์ชันที่อัปเดต ฉันคิดว่าการเปลี่ยนแปลงทุกอย่างจะเหมาะกับหนึ่งในหมวดหมู่เหล่านี้และดังนั้นการเปลี่ยนแปลงทุกอย่างควรเป็นเวอร์ชั่น แต่เมื่อฉันดูโปรเจ็กต์ยอดนิยมต่าง ๆ ใน GitHub นี่ดูเหมือนจะไม่ใช่สิ่งที่ทำ (ดูที่ ความจริงที่ว่าโครงการขนาดใหญ่มีภาระผูกพันนับหมื่นด้วยแท็กเพียงร้อยรายการเท่านั้น)


23
คือทุกคนมุ่งมั่นที่จะต้นแบบที่มีเสถียรภาพ, การทดสอบคุณภาพการปล่อยมั่นใจในโครงการของคุณ?
Alex กำลังคิดทบทวน

1
@AlexReinking ทุกการกระทำได้รับการทดสอบ แต่ฉันแค่พยายามทำความคุ้นเคยกับการปฏิบัติทั่วไปกับโปรเจ็กต์ส่วนตัวของฉันดังนั้นฉันแค่ทำงานและมันไม่มีระบบอื่น ๆ นอกเหนือจาก "ทำการเปลี่ยนแปลงทดสอบ ตัวมันเองยอมรับมัน ".
VortixDev

โปรดทราบว่าสามารถเปลี่ยนแท็กได้ในภายหลัง ตัวระบุการส่งข้อมูลที่เป็นของแข็งเพียงอย่างเดียวคือคีย์แฮช
Thorbjørn Ravn Andersen

9
ทุกความมุ่งมั่นที่จะโท ??? คุณไม่ควรมุ่งมั่นที่จะโท ทุกการผสานกับเสียงหลักนั้นดีกว่ามาก
xyious

2
ฉันคิดว่า @xyious กระทบเล็บที่หัว ทุกการกระทำที่ปลายขึ้นไปบนหลักควรจะมีแท็กรุ่นเพราะทุกการกระทำบนหลักควรจะมีการผสานการปล่อยตัวจากการพัฒนา
BJ Myers

คำตอบ:


71

ความกังวล SemVer เวอร์ชันเผยแพร่ไม่ได้กระทำ หากรูปแบบการควบคุมเวอร์ชันของคุณเกิดขึ้นเพื่อกำหนดให้ทุกการส่งมอบให้กับมาสเตอร์เป็นรุ่นที่เผยแพร่ใช่แล้วทุกการกระทำจะต้องติดแท็กตามระดับการเปลี่ยนแปลง

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


5
SemVer ส่วนใหญ่เหมาะสมสำหรับไลบรารีที่ผู้ใช้เป็นบิตของรหัสอื่นไม่ใช่มนุษย์ ไม่มีการเปลี่ยนแปลง "ทำลาย" ในแอพที่ผู้ใช้ส่วนใหญ่หันมาใช้เพราะผู้ใช้สามารถปรับให้เข้ากับเวอร์ชั่นใหม่ได้โดยอัตโนมัติ
Qwertie

5
ฉันจะยืนยันว่าเวอร์ชันบรรทัดคำสั่งของผู้ใช้ที่หันหน้าไปทางแอพควรเป็นเวอร์ชั่นเชิงความหมายเนื่องจากแฟล็กและรูปแบบเอาต์พุตของพวกเขาสามารถทำงานแตกต่างกันได้ บิตของพื้นที่สีเทา
Alex กำลังคิดทบทวน

5
@Qwertie ความคาดหวังของผู้ใช้มีความเข้มงวดน้อยกว่าความคาดหวังของซอฟต์แวร์ แต่ยังคงมีอยู่ ฉันมีความแน่นอนใช้ซอฟต์แวร์หลายชิ้นที่ออกสิ่งที่ฉันจะพิจารณาการ 'ทำลาย' การเปลี่ยนแปลงอินเทอร์เฟซหรือฟังก์ชันการทำงาน การตัดสินใจว่าการวางตลาดครั้งใหญ่กับรุ่นรองเป็นเรื่องส่วนตัวมากกว่าห้องสมุด แต่ก็ไม่จำเป็นต้องมีเหตุผลที่จะหลีกเลี่ยง
Iron Gremlin

11
@Qwertie - ระงับการอัปเกรด มีคนจำนวนเท่าใดที่ยังคงใช้ Windows และ Office เวอร์ชันหลักรุ่นเก่าอยู่
อเล็กซ์ Reinking

5
@Qwertie พวกเขาอาจได้รับแรงบันดาลใจให้อ่านบันทึกการเปลี่ยนแปลงหรือเอกสารประกอบอย่างละเอียดเพื่อให้พวกเขาสามารถปรับเปลี่ยนวิธีการใช้ระบบเพื่อใช้ประโยชน์จากคุณสมบัติใหม่หรือที่ปรับเปลี่ยนแล้วหรือค้นหาวิธีแก้ไขสำหรับคุณลักษณะที่ถูกลบออกไป ในกรณีเดียวกันการใช้งานซอฟต์แวร์จำเป็นต้องเปลี่ยนแปลงเนื่องจากซอฟต์แวร์มีการเปลี่ยนแปลงดังนั้นคุณควรบอกพวกเขาเกี่ยวกับการเปลี่ยนแปลงนั้นอย่างไม่น่าสงสัย
Iron Gremlin

11

หมายเลขเวอร์ชันถูกจัดสรรให้กับการเผยแพร่ โดยทั่วไปไม่ใช่ทุกการกระทำที่ควรจะได้รับการปล่อยตัว มีหลายเหตุผลนี้.

ประการแรกในขณะที่คุณพูดว่า "ทดสอบ" ทุกการกระทำมีระดับการทดสอบ การใช้งาน Testuite อัตโนมัติบนเครื่องเดียวนั้นดีและดี แต่ในซอฟต์แวร์ที่ซับซ้อนมันอาจจะไม่สามารถตรวจจับได้ทุกปัญหา ปัญหาบางอย่างอาจเป็นฮาร์ดแวร์หรือการกำหนดค่าโดยเฉพาะปัญหาบางอย่างอาจเกี่ยวกับข้อควรพิจารณาเชิงอัตวิสัยมากกว่าเรื่องความต้องการที่ทดสอบได้ยาก

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

ผลที่ตามมาคือคุณควรเพิ่มฟีเจอร์ให้กับ "public API" ของคุณในแบบเต็ม (ไม่ใช่อัลฟ่า / เบต้า) หากคุณพร้อมที่จะสนับสนุนฟีเจอร์เหล่านั้นในรูปแบบปัจจุบันในระยะยาว

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


2

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

หากมีโอกาสใด ๆ ที่ทุกคนสามารถเข้าถึงการวนซ้ำของรหัสโดยเฉพาะและไม่สามารถกำหนดตัวระบุที่ไม่ซ้ำได้อย่างง่ายดายการทำซ้ำนั้นควรจะมีหมายเลขรุ่นที่ไม่ซ้ำกัน ฉันเห็นว่านี่เป็น 'กฎข้อแรก' ผลที่ตามมาคือการเปิดตัวที่แตกต่างกันจะต้องการหมายเลขรุ่นที่ชัดเจน

อย่างไรก็ตามมีอีกมากที่เข้ามาเล่น:

วิธีหนึ่งที่จะแน่ใจได้ว่านี่คือการชนหมายเลขเวอร์ชันด้วยการคอมมิทแต่ละครั้ง แต่นี่ไม่ใช่ความคิดที่ดี อาจใช้เวลาหลายครั้ง / การทำซ้ำเพื่อให้การเปลี่ยนแปลงมีขนาดค่อนข้างเล็กและทำให้เกิดความสับสนกับโลกภายนอกเพื่อดูรุ่น 0.0.1 -> 0.0.2 เนื่องจากการเปลี่ยนแปลงสะสมจำนวนมากแล้ว 0.0.2 -> 0.0 .56 เนื่องจากมีคนทำพื้นที่สีขาวแก้ไขไฟล์ครั้งละหนึ่งไฟล์และไม่ได้เปลี่ยนแปลงการทำงานใด ๆ

ระยะทางที่ไกลจาก "รุ่นหนึ่งต่อการปล่อยเต็ม" ถึง "หนึ่งรุ่นสำหรับแต่ละการกระทำ" นั้นขึ้นอยู่กับ: คุณผู้ใช้รายอื่นและระบบที่คุณยินดีใช้เติมช่องว่าง

ฉันคุ้นเคยกับการทำงานในโครงการขนาดเล็กและฉันยินดีที่จะใช้แฮช git จนกว่าจะมีรุ่นอื่นที่ใช้และรุ่น bump สำหรับแต่ละโครงการ (ไม่ว่าฉันจะคาดหวังแค่ไหน อย่างไรก็ตามใน บริษัท ขนาดใหญ่และโครงการขนาดใหญ่บางอย่างที่อยู่นอกหมายเลขรุ่นความหมาย แต่มีความเที่ยงตรงต่ำกว่าการส่งข้อมูลแต่ละครั้งเช่นใช้การกำหนดหมายเลขผู้สมัคร สิ่งเหล่านี้มีข้อดี แต่เพิ่มความซับซ้อน


0

ทุกคำขอดึงที่ได้รับการผสานกับหลักควรเป็นรุ่น

ถ้ามันไม่ควรเป็นเวอร์ชั่นใหม่ (อย่างน้อยก็เป็น patch) เป็นไปได้ว่ามันไม่ควรถูกผสานเข้ากับมาสเตอร์เพราะคุณสมบัติ / fix / etc ไม่สมบูรณ์

อย่างไรก็ตามขึ้นอยู่กับขั้นตอนการทำงานของทีมคุณอาจยังต้องจบลงด้วยความมุ่งมั่นที่จะทำหลายอย่างโดยไม่มีรุ่น หากมีหลายคอมมิชชันในคำขอดึงที่ไม่ได้รับการแบน (พวกเขาไม่ควรในความคิดของฉัน) คุณอาจยังคงจบลงด้วย 10 คอมมิชชันและเพียง 1 เวอร์ชันใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.