نسخه بندی معنایی با روبی 2.1.0 شروع خواهد شد.
ما تصمیم گرفتیم که به سمت یک سیاست نسخه بندی معنایی، همزمان با توزیع روبی 2.1.0، تغییر جهت دهیم.
برای در اختیار گذاشتن یک طرح نسخه بندی مشخص تر و قابل استفاده تر، ما تصمیم گرفته ایم که رفته رفته به سیاست زیر تغییر جهت دهیم.
تغییرات در سیاست
این سیاست، به درخواست مدیر سیستم Ruby-Lang.org (هیروشی شیباتا یا Hiroshi Shibata) می باشد.
طرح نسخه بندی
· MAJOR: موقعی افزایش می یابد که تغییری غیر سازگار انجام شده باشد که با Minor نمی توان توزیع کرد.
در اتفاقات خاص معکوس می شود.
· MINOR: هر کریسمس افزایش می یابد، ممکن است با API نا سازگار باشد.
· TEENY: تعمیرات امنیتی یا باگ که برای حفظ سازگاری با API توزیع می شود.
ممکن است بیشتر از 10 تا افزایش یابد (مثل 2.1.11)، و هر دو یا سه ماه یک بار توزیع خواهد شود.
· PATCH: تعداد کامیت ها (commits) بعد از هر توزیع MINOR می باشد(با هر توزیع MINOR، صفر می شود).
طرح شاخه بندی
شاخه های زیر را حفظ خواهیم کرد:
· trunk
· ruby_{MAJOR}_{MINOR}
شاخه ruby_{MAJOR}_{MINOR} با توزیع های TEENY حفظ خواهد شد. برای هر توزیع، برچسبی استفاده خواهد شد.
سازگاری با API
خصیصه های زیر را می توان تغییرات ناسازگار، نشان گذاری کرد، که نیازمند افزایش نسخه MINOR می باشند:
· حذف ویژگی های API که با C نوشته شده اند.
· تغییرات ناسازگار معکوس و اضافه کردن ها.
سازگاری با ABI
ABI با طرح مقابل مطابق خواهد بود: {MAJOR}.{MINOR}.0
ما بیشترین تلاشمان را خواهیم کرد تا سازگاری ABI با توزیع های MINOR حفظ کنیم تا TEENY در همان 0 باقی بماند.
مرجع ها
برای اطلاع بیشتر از این توزیع پیشنهادی به لینک های زیر مراجعه کنید:
- Introducing a semantic versioning scheme and branching policy
- Accepted proposal in English
- Accepted proposal in Japanese