خب خب خب ورژنبندی اپلیکیشنها چیه؟ 
احتمالاً توی پروژهها دیدی که نسخه نرمافزارها یه چیزی مثل 1.2.3 هست. ولی این اعداد چه معنیای دارن؟ آیا یه ورژن 1.2.3 بهتر از 1.2.2ـه؟ بیاید یه بار برای همیشه اینو ببینیم
استاندارد ورژنبندی (Semantic Versioning - SemVer)
ساختار استاندارد ورژنبندی معنایی (Semantic Versioning) معمولاً این شکلیه:
X.Y.Z
X (Major - تغییرات بزرگ)
وقتی این عدد تغییر کنه، یعنی کلی چیز عوض شده مثلاً سازگاری عقبگرد (backward compatibility) شکسته شده و ممکنه کدهای قدیمی دیگه کار نکنن یا به عبارتی BREAKING CHANGE به وجود اومده.
Y (Minor - قابلیتهای جدید)
اگه این عدد تغییر کنه، یعنی قابلیتای جدید اضافه شده ولی همچنان سازگاری با نسخه قبلی حفظ شده.
Z (Patch - رفع باگها و بهبودها)
فقط باگ فیکس یا بهینهسازیای جزئی انجام شده و هیچ قابلیت جدیدی اضافه نشده.
مثال عملی از ورژنبندی
فرض کن داریم روی یه اپلیکیشن کار میکنیم:
1.0.0 → نسخه اولیه منتشر شد.
1.1.0 → یه قابلیت جدید مثل ورود با گوگل اضافه شد.
1.1.1 → یه باگ توی صفحه لاگین فیکس شد.
2.0.0 → ساختار دیتابیس عوض شد و نسخههای قبلی دیگه کار نمیکنن.
پس کی باید Major، Minor یا Patch رو تغییر بدیم؟
وقتی API رو تغییر دادی و ممکنه کدای قدیمی دیگه کارنکنن؟
Major رو ببر بالا
یه فیچر جدید اضافه کردی ولی چیزی از قبل به مشکل نمیخوره؟
Minor رو ببر بالا
فقط یه باگ کوچیک فیکس کردی؟
Patch رو ببر بالا
انواع مختلف ورژن بندی؟
گاهی وقتا میبینی که ورژنا این شکلیه:
1.2.3-alpha → نسخه آزمایشی (قبل از انتشار اصلی)
1.2.3-beta → نسخه بتا، برای تست کاربرا
1.2.3-rc1 → نسخه Release Candidate که تقریباً آماده است
جمعبندی ✍
ورژنبندی معنایی باعث میشه بفهمیم یه نسخه چقدر تغییر کرده و آیا آپدیتش برای ما مشکلی ایجاد میکنه یا نه.

احتمالاً توی پروژهها دیدی که نسخه نرمافزارها یه چیزی مثل 1.2.3 هست. ولی این اعداد چه معنیای دارن؟ آیا یه ورژن 1.2.3 بهتر از 1.2.2ـه؟ بیاید یه بار برای همیشه اینو ببینیم

ساختار استاندارد ورژنبندی معنایی (Semantic Versioning) معمولاً این شکلیه:
X.Y.Z
X (Major - تغییرات بزرگ)
وقتی این عدد تغییر کنه، یعنی کلی چیز عوض شده مثلاً سازگاری عقبگرد (backward compatibility) شکسته شده و ممکنه کدهای قدیمی دیگه کار نکنن یا به عبارتی BREAKING CHANGE به وجود اومده.
Y (Minor - قابلیتهای جدید)
اگه این عدد تغییر کنه، یعنی قابلیتای جدید اضافه شده ولی همچنان سازگاری با نسخه قبلی حفظ شده.
Z (Patch - رفع باگها و بهبودها)
فقط باگ فیکس یا بهینهسازیای جزئی انجام شده و هیچ قابلیت جدیدی اضافه نشده.

فرض کن داریم روی یه اپلیکیشن کار میکنیم:





وقتی API رو تغییر دادی و ممکنه کدای قدیمی دیگه کارنکنن؟
Major رو ببر بالا

یه فیچر جدید اضافه کردی ولی چیزی از قبل به مشکل نمیخوره؟
Minor رو ببر بالا

فقط یه باگ کوچیک فیکس کردی؟
Patch رو ببر بالا


گاهی وقتا میبینی که ورژنا این شکلیه:



جمعبندی ✍
ورژنبندی معنایی باعث میشه بفهمیم یه نسخه چقدر تغییر کرده و آیا آپدیتش برای ما مشکلی ایجاد میکنه یا نه.