ขึ้นอยู่กับประสบการณ์ของฉันกับองค์กรที่ซับซ้อนระดับแพลตฟอร์มการจัดการพึ่งพาและการเปิดตัวเวอร์ชันของฉันได้มาแนะนำวิธีการผมชอบที่จะเรียกกึ่ง Semantic รุ่น
โดยทั่วไปจะสร้างออกจากความหมายของรุ่น 2.0แต่ไม่ได้ค่อนข้างเป็นที่เข้มงวด
กลุ่มเวอร์ชันกึ่งความหมาย:
<primary.release.segment>[-<pre.release.segment>][+<post.release.segment>]
รูปแบบส่วนที่วางจำหน่ายหลัก:
MARKETTING.MAJOR.MINOR.PATCH
แต่ละเซกเมนต์ควรอนุญาตให้ใช้ตัวอักษรและตัวเลข แต่แนะนำให้ใช้ตัวเลขล้วนสำหรับการเปลี่ยนแปลงเชิงตรรกะแบบส่วนเพิ่ม
เช่นเดียวกับ SemVer ฉันแนะนำคอมโพเนนต์ Major, Minor และ Patchเพื่อแสดงระดับความเข้ากันได้ย้อนกลับ แต่ฉันยังแนะนำให้เตรียมส่วนประกอบการตลาดไว้ด้วย สิ่งนี้ช่วยให้เจ้าของผลิตภัณฑ์มหากาพย์คุณลักษณะ / กลุ่มและข้อกังวลทางธุรกิจกระแทกส่วนประกอบหลักโดยไม่เกี่ยวข้องกับความเข้ากันได้ทางเทคนิค
ต่างจากคำตอบอื่น ๆ ฉันไม่แนะนำให้เพิ่มหมายเลข Build ต่อท้ายกลุ่มหลัก เพิ่มกลุ่มโพสต์เผยแพร่ '+' (เช่น: 1.1.0.0 + build.42) SemVer เรียกการสร้างเมตาดาต้านี้ แต่ผมคิดว่าโพสต์ที่วางจำหน่ายส่วนงานที่ชัดเจน ส่วนนี้เหมาะอย่างยิ่งสำหรับการประกาศข้อมูลส่วนต่อท้ายซึ่งไม่เกี่ยวข้องกับข้อมูลความเข้ากันได้ในส่วนการเผยแพร่หลักแทน บิวด์การรวมอย่างต่อเนื่องของคุณสามารถกำหนดหมายเลขรีลีสก่อนหน้าต่อท้ายด้วยหมายเลขบิลด์ที่เพิ่มขึ้นซึ่งจะรีเซ็ตหลังจากรีลีสหลักแต่ละครั้ง (เช่น 1.1.0.0 -> 1.1.0.0 + build.1 -> 1.1.0.0 + build.2 -> 1.1.0.1) บางคนสลับกันชอบใส่หมายเลขการแก้ไข svn ที่นี่หรือคอมไพล์กำหนด sha เพื่อให้ง่ายต่อการผูกกับที่เก็บรหัส อีกตัวเลือกหนึ่งคือการใช้กลุ่มโพสต์เผยแพร่สำหรับโปรแกรมแก้ไขด่วนและโปรแกรมแก้ไขซึ่งอาจคุ้มค่าที่จะพิจารณาการเพิ่มส่วนประกอบรุ่นหลักใหม่ มันสามารถลดลงได้ตลอดเวลาเมื่อมีการเพิ่มส่วนประกอบของแพตช์
นอกเหนือไปจากการเปิดตัวและหลังการเปิดตัวกลุ่มคนมักจะต้องการใช้ส่วนงาน Pre-Releaseเพื่อบ่งชี้ถึงเกือบมั่นคงก่อนเผยแพร่เหมือน alphas, เบต้าและผู้สมัครที่ปล่อย วิธี SemVer นี้ทำงานได้ดี แต่ผมขอแนะนำให้แยกส่วนประกอบตัวเลขจากลักษณนามตัวเลข (เช่น: 1.2.0.0 + alpha.2 หรือ 1.2.0.0 + RC.2) โดยปกติคุณจะชนกลุ่มปล่อยในเวลาเดียวกันกับการเพิ่มกลุ่มโพสต์ปล่อยแล้ววางกลุ่มก่อนปล่อยเมื่อคุณชนพวกเขาต่อไปกลุ่มปล่อยหลัก (เช่น: 1.0.1.2 -> 1.2.0.0-RC.1 - > 1.2.0.0) เพิ่มกลุ่มที่มีการวางจำหน่ายล่วงหน้าเพื่อระบุว่ารุ่นวางจำหน่ายกำลังจะเกิดขึ้นซึ่งโดยปกติจะเป็นเพียงชุดของคุณลักษณะที่กำหนดไว้สำหรับการทดสอบและการแบ่งปันในเชิงลึกที่ไม่เปลี่ยนแปลงจากนาทีต่อนาทีตามความมุ่งมั่นที่มากขึ้น
ความสวยงามของการกำหนดความหมายทั้งหมดในลักษณะที่ครอบคลุมเกือบทุกกรณีการใช้งานคือคุณสามารถแยกวิเคราะห์เรียงลำดับเปรียบเทียบและเพิ่มพวกมันในแบบมาตรฐาน สิ่งนี้มีความสำคัญอย่างยิ่งเมื่อใช้ระบบ CI สำหรับแอปพลิเคชันที่ซับซ้อนที่มีส่วนประกอบที่เป็นอิสระขนาดเล็กจำนวนมาก (เช่นบริการไมโคร) แต่ละตัวที่มีการพึ่งพาที่มีการจัดการของตนเอง
หากคุณสนใจผมเขียนตัวแยกวิเคราะห์กึ่งความหมายในทับทิม ฉันต้องการที่จะไม่ใช้เพียง แต่รูปแบบนี้จะสามารถจัดการแอพพลิเคอื่น ๆ ที่ใช้มัน