نسخهگذاری معنادار (Semantic Versioning) چیست و چرا باید از آن استفاده کنیم؟
۲۱ تیر ۱۳۹۹
نسخهگذاری (versioning) برای ابزارها، یکی از موضوعهایی است که ذهن برنامهنویس را بهخود مشغول میکند. برنامهنویس میتواند، از یک الگوی شخصی برای ایجاد نسخهها استفاده کند. امروزه سرعت رشد دنیای دیجیتال بسیار زیاد است و اگر ما توسعهدهنده یک ابزار معروف و مشهور باشیم، کاربران از ما میخواهند از مدل نسخهگذاری معنادار پیروی کنیم.
مطمعنا تابهحال، با اعداد اینچنینی در ابزارهایتان روبرو شدهاید، با یکی از معروف ترین سیستمعاملها شروع میکنیم:
- ubuntu 20.04
شاید در نگاه اول این اعداد برایتان هیچ مفهومی نداشته باشد، اما ما در این مقاله سعی داریم، راز و پشتپرده این اعداد را آشکار کنیم.
این اعداد نمایانگر نسخهمحصولی با نام ubuntu است، که کمپانی نرمافراری canonical آن را به جهان عرضه کرده. بیشتر کمپانیهای بزرگ و همچنین توسعهدهندگان از روش نسخهگذاری بامعنا، برای محصولها و ابزارهایشان استفاده میکنند.
هنگامی که یک توسعهدهنده از نسخهگذاری بامعنا استفاده میکند، درصورت نیاز به عیبیابی، میتواند محصول فعلی خود را با نسخههای گذشته مقایسه و سریعتر مشکلها را رفع کند. اما این اعداد و ارقام، سرنخهایی از تغییرها را به توسعهدهندگان دیگر میدهد.
البته این مدل از نسخهگذاری به کمپانی canonical محدود نمیشود، برای مثال React، Vue و خیلی از محصولهای مشهور دیگر هم از این مدل بهره میبرند.
ساختار کلی نسخهگذاری با معنا
بهطور عمده، در این مدل از نسخهگذاری از سه عدد که توسط «.» از هم جدامیشوند، استفاده میشود.
نسخههای پچ (Patch versions)
عدد سمت راست (12)، را نسخهپچ مینامند. از نسخه پچ برای رفع اشکالها (bugfixes) استفاده میشود، و هیچکدام از تغییرهای عملکردی ابزار، در این گروه قرار نمیگیرد. وقتی یک پچ به ابزار اضاف میشود، به عدد پچ، یک شماره میافزاییم و هیچ محدودیتی در این افزایش شماره وجود ندارد.
نسخههای جزئی (Minor versions)
به عدد میانی، minor version یا نسخهجزئئ گفته میشود. این عدد، نشان دهنده قابلیتهای جدیدی است که به ابزار اضافه و منتشر شدهاند. هنگامی که شما یک قابلیت جدید اضاف میکنید نیز این عدد را یک واحد افزایش میدهید، در این صورت با اضافه شدن قابلیتهای جدید، نسخهپچ را به عدد 0 بازمیگردانید.
نسخههای عمده (Major versions)
همانطور که در عکس مشاهده میکنیم، عدد سمت چپ بعد از انجام تغییرهای عمده در ابزار یک واحد افزایش پیدا میکند و دیگر اعداد اعم از نسخهپچ و نسخهجزئی، صفر میشوند. با این کار ما به کاربران خود میفهمانیم تغییرهای ایجاد شده نسخه فعلی را با نسخه پیشین متمایز میسازد.
پیشنسخهها (Pre-releases)
اگر میخواهید پیشنسخه (مانند نسخه آلفا یا بتا) ایجاد کنید، میتوایند با یک «-» آن را در قبل از نسخهبندی اضافه کنید. هیچ قانون محدود کنندهای برای تعیین نام برای پیش نسخه ندارید، شما هرنام معقول و غیرمعقولی را استفاده کنید.
شروع پروژه
بیشتر افراد نسخهگذاری پروژههایشان را با 0.1.0 شروع میکنند، و هنگامی که پروژه برای انتشارعمومی حاضر بود نسخه آن را به 1.0.0 تغییر میدهند.
منبع: https://www.freecodecamp.org/news/semantic-versioning-1fd6f57749f7