প্রজেক্ট ভার্সন এবং রিলিজ

যে কোন প্রজেক্টের পরিবর্তন গুলো ট্র্যাক রাখা, কম্প্যাটিবিলিটি মেন্টেইন করা, ডিপেন্ডেন্সি ম্যানেজ করার জন্য ভার্সনিং অনেক গুরুত্বপূর্ণ। আমরা অনেকেই ভার্সন কন্ট্রোলের সাথে পরিচিত। বলতে পারি ভার্সন কন্ট্রোলের একটা পার্ট হচ্ছে ভার্সনিং। বেশির ভাগ প্রজেক্টের ভার্সন দেখি এমন স্ট্র্যাকচারেঃ 1.5.3। এই নাম্বার গুলো কিন্তু র‍্যান্ডম না। এই ভার্সনের সাথে একটা সফটওয়ার বা প্রজেক্টের অনেক কিছুই জড়িত। সবচেয়ে জনপ্রিয় ভার্সনিং সিস্টেম হচ্ছে সিমেন্টিক ভার্সনিং। যার ফরমেট হচ্ছে MAJOR.MINOR.PATCH

  • MAJOR: মেজর ভার্সনে সাধারণ ম্যাসিভ পরিবর্তন থাকে। আগের ভার্সনের অনেক কিছুই নতুন ভার্সনের সাথে কম্প্যাটিবল হয় না। যদি এমন হয়, তখন এই মেজর নাম্বার আমরা ইঙ্ক্রিমেন্ট করি।
  • MINOR: মাইনর ভার্সনে সাধারণ ছোট খাটো কোন ফিচার ইমপ্লেমেন্ট করা হয়। এমন কোন ফিচার ইমপ্লিমেন্ট করার পর প্রজেক্ট রিলিজ করার ক্ষেত্রে এই মাইনর নাম্বার ইঙ্ক্রিমেন্ট করি।
  • PATCH: কোন বাগ থাকলে সেগুলো ফিক্স করে এই প্যাঁচ নাম্বার ইঙ্ক্রিমেন্ট করা হয়।

উপরের 1.5.3 থেকে আমরা বুঝতে পারি মেজর ভার্সন হচ্ছে 1। মাইনর ভার্সন হচ্ছে 5 এবং তৃতীয় প্যাঁচ আপডেট। বিভিন্ন সফটওয়ারের ভার্সন রিলিজ সাধারণত এই ভার্সনিং ফলো করেই রিলিজ করা হয়।

যেহেতু বেশির ভাগ প্রজেক্ট গিট দিয়ে ভার্সন কন্ট্রোল করি আমরা, তাই গিট দিয়ে উদাহরণ দিচ্ছি। গিট সম্পর্কে জানা থাকলে গিট সম্পর্কে ধারণা, গিট ইন্সটল, ব্যবহার লেখাটি পড়তে পারেন। এরপর এই লেখাটা পরে পড়ে নিবেন।

ভার্সনিং ট্যাগঃ

গিটে ভার্সনিং এর জন্য tag ব্যবহার করা হয়। এর পূর্বে প্রজেক্টে যদি কোন পরিবর্তন থাকে, সেগুলো কমিট করা হয়। কমিট করার পর ট্যাগ যোগ করা হয়। যেমনঃ

git tag v1.0.0

ভার্সনের পূর্বে v যোগ করা কমন প্র্যাকটিস। না করলেও সমস্যা নেই।

প্রজেক্টে যদি একাদিক ট্যাগ থাকে, তাহলে tag কমান্ড দিয়ে সেগুলো দেখা যাবেঃ

git tag

একাদিক ট্যাগ থাকলে সেগুলোর এমন লিস্ট দেখবঃ

v1.0.0
v1.0.1
v1.0.2

রিমোট ব্রাঞ্চে ট্যাগ পুশঃ

গিটহাব, গিটল্যাব ইত্যাদি রিমোট ব্রাঞ্চে যদি প্রজেক্ট আপলোড করে থাকি, তাহলে এই ট্যাগ আমরা চাইলে পুশ করতে পারিঃ

git push origin v1.0.0 

প্রশ্ন আসতে পারে আগে কমিট পুশ করব নাকি ট্যাগ? এর উত্তর হচ্ছে আগে কমিট করা, সেগুলো পুশ করা। এরপর ট্যাগ যোগ করে সেগুলো পুশ করা। যেমন এভাবেঃ

git commit -m "Add new feature"
git push origin main
git tag v1.0.0
git push origin v1.0.0

যদি প্রজেক্টের কোন পরিবর্তন কমিট না করে ট্যাগ আগেই পুশ করে দেই, তাহলে আবারও ট্যাগ পুশ করতে হবে। এভাবেঃ

git commit -m "Add new feature"
git tag v1.0.0
git push origin main     
git push origin v1.0.0       

আবার চাইলে ট্যাগ এবং কমিট এক সাথেই রিমোট ব্রাঞ্চে পুশ করতে পারি। তার জন্য প্রথমে পরিবর্তন গুলো কমিট করে নিব। এরপর ট্যাগ যোগ করব। এরপর নিচের কমান্ড রান করবঃ

git push origin main --tags

ভার্সনিং আমরা যে কোন সংখ্যা দিয়েই শুরু করতে পারি। যেমন 0.0.1। আবার যদি পাবলিক রিলিজের পূর্বে প্রি রিলিজ দিতে চাই, তখন আবার alpha, beta ইত্যাদি ভার্সন যোগ করতে পারি। যেমন v0.1.0-alpha অথবা v1.2-beta.3 ইত্যাদি।

প্রজেক্ট রিলিজঃ

গিটহাব দিয়ে উদাহরণ দিচ্ছি। ট্যাগ গুলো আপলোড করলে গিটহাবে আমরা Releases এর নিচে দেখব।

Create a new release এ ক্লিক করে প্রজেক্ট রিলিজ দিতে পারব।

Changelog:

প্রজেক্টের বিভিন্ন ভার্সনের পরিবর্তন গুলোর লগ ট্র্যাক রাখা হচ্ছে আরেকটা গুড প্র্যাকটিস। আর তা করা হয় সাধারণত Changelog.md নামে একটা মার্ক ডাউন ফাইলের মাধ্যমে। যেমনঃ

## [1.1.0] - 2024-10-03
### Added
- New image caching functionality.

### Fixed
- Resolved issue with async image loading.

একাধিক ভার্সন রিলিজ করলে লগ সাধারণত এমন হতে পারেঃ

# Changelog

## [2.0.0] - 2024-10-05
### Changed
- Breaking API changes for feature X.

## [1.1.0] - 2024-10-01
### Added
- New feature Y.

## [1.0.1] - 2024-09-25
### Fixed
- Fixed a bug in feature Z.

## [1.0.0] - 2024-09-20
### Added
- Initial release.

এই সম্পর্কিত অন্যান্য লেখাঃ

Leave a Reply