কিভাবে গিটহাবে প্রোজেক্ট রিলিয করতে হয়

Github.com আমাদেরকে সামাজিকভাবে কোডিং করার একটা ধারণা দেয়। এই সাইট ব্যবহার করে আমরা বন্ধু, সহকর্মী, গুরু এমনকি অজানা কারো সাথেও সামাজিকভাবে কোড করতে পারি। অধিকাংশ গিটহাব প্রোজেক্টই উন্মুক্ত সোর্সের, কারণ প্রোজেক্টগুলো প্রাথমিকভাবেই জনসমক্ষে উন্মুক্ত। তবে আপনি প্রাইভেট রেপোযিটোরিও তৈরি করতে পারেন, কিন্তু সেগুলো বিনামূল্য নয়। উন্মুক্ত কিংবা প্রাইভেট – যাই হোক, গিটহাবে তোলা অধিকাংশ গুছিয়ে নেয়া পণ্যও এর ডেভলপার কিংবা মালিক রিলিয করেন না। তাই আজকে আমরা দেখার চেষ্টা করবো, কিভাবে গিটহাব প্রোজেক্টকে রিলিয করতে হয়।

ধরা যাক, আপনার গিটহাব রেপোযিটোরিটাই আপনার প্রোজেক্ট। এবং আপনি এখন এর 1.0.0 সংস্করণের কাজ করছেন। আরো কয়েকজনও কমিট করছেন এই রেপোযিটোরিতে। এবারে আপনারা সবাই ঠিক করলেন এই প্রোজেক্টটির 1.0.0 সংস্করণটি রিলিয করবেন। তো এপর্যায়ে আপনারা আপনাদের কমিট করা শেষ করলেন এবং রিলিযের জন্য প্রস্তুতি নিলেন।

রিলিয দেয়ার গিট পদ্ধতি

git ব্যবহার করে প্রোডাক্ট রিলিয দেয়ার পদ্ধতি হচ্ছে git tag। কমান্ডলাইনে (git bash ব্যবহার করে) কাজটা করার উপায় হচ্ছে:

git tag -a v1.0.0 -m "First Release"

এতে যেটা হবে সর্বশেষ কমিটে v1.0.0 ট্যাগটি জুড়ে যাবে। এবারে কমান্ডলাইনে ট্যাগ পুশ করে দিলেই গিটহাবে একটা ট্যাগ তৈরি হয়ে যাবে।

git push -u origin --tags

কিন্তু এতে রিলিয নোট লেখা হবে না। তাই ট্যাগ তৈরি এবং রিলিয দেয়ার জন্য গিটহাব-এ রয়েছে রিলিয ফিচার:

কিভাবে রিলিয করতে হয়

https://github.com/username/repo সাধারণত এইরকমই হয় গিটহাবে রেপোযিটোরির লিংক। তো আপনার রেপোযিটোরিতে releases লিংকে ক্লিক করুন।

গিটহাবে 'releases' লিংকে ক্লিক করুন

গিটহাবে ‘releases’ লিংকে ক্লিক করুন

রিলিযেয পাতায় Create a new Release বোতামে ক্লিক করুন।

রিলিয পর্দায় 'Create a new release' বোতামে ক্লিক করুন

রিলিয পর্দায় ‘Create a new release’ বোতামে ক্লিক করুন

রিলিয নোট পাতায় রিলিয নোট লিখে শেষ করুন।

রিলিয নোট লিখুন

রিলিয নোট লিখুন

“Tag version” হলো সংস্করণের নাম্বার, অর্থাৎ যে সংস্করণটি রিলিয করতে যাচ্ছেন আপনি, আমাদের ক্ষেত্রে যেমন ব্যাপারটা হলো 1.0.0। “Release title” যেকোনো কিছু হতে পারে, আপনি যা দিয়ে এই রিলিযটাকে সূচিত করতে চান আরকি। উদাহরণ হিসেবে বলা যায়, ওয়ার্ডপ্রেস তাদের রিলিযগুলো একেকজন জ্যায শিল্পীর নামানুসারে করে থাকে, তো আপনার ক্ষেত্রে এটা যেকোনো কিছু হতে পারে। আমরা নাম দিতে পারি “প্রথম রিলিয”, কিংবা “প্রাথমিক রিলিয”, কিংবা “আন্তর্জাতিক রিলিয” ইত্যাদি যেকোনো কিছুই।

বিবরণ অংশে মার্কডাউন দিয়ে রিলিয সম্পর্কে বিস্তারিত লিখতে পারবেন। কিন্তু রিলিযের ফিচার সংশ্লিষ্ট তথ্যাদি দিয়ে যথোপযুক্ত রিলিয নোটই লিখতে উৎসাহিত করা হচ্ছে। আপনি প্রাকদর্শনও দেখতে পারবেন।

এটা যদি আপনার প্রাক-রিলিয হয়ে থাকে, যা আসলে আনুষ্ঠানিক কোনো রিলিয না, কিংবা [মোটামুটি প্রস্তুতই], পরীক্ষা করার জন্য, কিংবা ডেভলপমেন্ট পরখ করার জন্য ইত্যাদি ক্ষেত্রে, আপনি চাইলে:

This is a pre-release checkbox.

লেখা চেকবাক্সটি চেক করে দিতে পারেন।

আপনি এই মুহূর্তে প্রকাশ করতে চাচ্ছেন না? চাইলে, রিলিযের তথ্যগুলো খসড়া আকারে সংরক্ষণ করেও রেখে দিতে পারেন। কিংবা চাইলেই এক ক্লিকে প্রকাশও করে ফেলতে পারেন। আপনার রিলিয যেকোনো সময় সম্পাদনা কিংবা হালনাগাদও করতে পারেন।তো, আপনার রেপোযিটোরি/প্রোজেক্ট এখন প্রকাশিত।

সংস্করণটি গিটহাবে রিলিয দেয়া হয়েছে

সংস্করণটি গিটহাবে রিলিয দেয়া হয়েছে

বাইনারি ফাইল যোগ

রিলিয নোটে বাইনারি ফাইল আবার কী জিনিস? ধরা যাক, আপনার রিলিযে একটা এক্সেকিউটেবল ফাইল রয়েছে, সেক্ষেত্রে আপনি চাইলে সেটাকে এই স্থানে যোগ করে দিতে পারেন, শ্রেফ টেনে ছেড়ে দিয়ে…। ধরা যাক, আপনি খুবই সাধারণ একটা পিএইচপি কিংবা এইচটিএমএল/সিএসএস প্রোজেক্ট রিলিয দিতে চান, সেক্ষেত্রে শ্রেফ ফাইলগুলো কমপ্রেস করে এখানে যোগ করে দিতে পারেন।

সত্যি বলতে কি, এটা আপনার প্রোজেক্টের ঐ ভার্ষনের ফাইলগুলো, যেখানে অবাঞ্ছিত ফাইল কিংবা কোনো অবাঞ্ছিত কোড নেই।

তো, কিভাবে একটা বাইনারি ফাইল বানানো যায়? আসলে, সেটা আপনার প্রোজেক্টের ধরণই নির্ধারণ করে দিবে। স্ক্রিপ্টিং ল্যাঙ্গুয়েজের (যেমন: পিএইচপি) কোনো প্রোজেক্টের ক্ষেত্রে আমার পছন্দ হলো রেপোযিটোরির বিদ্যমান অবস্থার (যা আসলে আপনার রিলিয পাবার উপযুক্ত কোডের সংকলন) একটা যিপ সংস্করণ নামিয়ে নেয়া। এই কাজটা গিটহাবে খুব সহজে করা যায়, রেপোযিটোরির ডান দিকের “Download Zip” বোতামে ক্লিক করে খুব সহজে পুরো রেপোযিটোরি কমপ্রেস্‌ড অবস্থায় নামিয়ে নেয়া যায়।

রেপোযিটোরিটা যিপ আকারে নামিয়ে নিন

রেপোযিটোরিটা যিপ আকারে নামিয়ে নিন

এভাবে ডাউনলোড করলে আপনার রেপোযিটোরির সব গিট রিভিশন ইতিহাস বাদ দিয়ে আপনার প্রোজেক্টটা তার সর্বনিম্ন ফাইল আকারে নেমে আসে। আপনি চাইলে এথেকেও ডেভলপমেন্ট সংক্রান্ত অতিরিক্ত ফাইলসমূহ কিংবা ফোল্ডার ডিলিট করে নিতে পারেন।

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

রিলিযের সাথে বাইনারি ফাইলসমূহ যোগ করুন

রিলিযের সাথে বাইনারি ফাইলসমূহ যোগ করুন

পরখ করে দেখার জন্য আমরা এবারে এটাকে Pre-release চেকবাক্সে ক্লিক করে প্রাকরিলিয বানিয়ে নিলাম।

রিলিযটাকে প্রাকরিলিয করে দেখা যাক

রিলিযটাকে প্রাকরিলিয করে দেখা যাক

আমরা আমাদের xyz.zip বাইনারি ফাইলটা যোগ করেছি, এবং খুব সহজেই আমাদের ব্যবহারকারীদের কাছে এই zip ফাইলের পাথটা ছড়িয়ে দিতে পারি, যাতে তাঁরা ডাউনলোড করে নিতে পারেন আমাদের রিলিয করা পণ্যটি। এই পাথটা মোটামুটি এরকম হয়:

https://github.com/username/repo/releases/download/1.0.0/xyz.zip

বাইনারিগুলো কেন

বাইনারি ফাইল ছাড়াও যেকেউই আপনার রিলিয করা সংস্করণটা খুব সহজেই ডাউনলোড করতে পারেন “Source Code (zip)”-এ ক্লিক করেই। কিন্তু এই যিপ ফাইলটা ডাউনলোড করলে:

  • আপনার ব্যবহারকারীদের কাছে অপ্রয়োজনীয়ভাবেই গিট রিভিশনের ইতিহাসগুলোও চলে যায়
  • আর, আপনি চাইলেও, কোনো রিলিয ঠিক কতবার ডাউনলোড হলো, তার কোনো সংখ্যাও আপনি পাবেন না

হ্যা, শুধুমাত্র একটা বাইনারি ফাইলই আপনার রিলিযের ডাউনলোডের পরিমাণ জানান দিতে সক্ষম।

ডাউনলোডের হিসাব পান

আপনি যদি আপনার গিটহাবের রেপোযিটোরির এপিআই ইউআরএল ব্রাউয করেন, তাহলে আপনি আপনার রিলিযের আদ্যোপান্ত JSON আকারে দেখতে পাবেন (শুধুমাত্র ব্যবহারকারী নাম আর রেপোযিটরির নামটা বদলে নিতে হবে):

https://api.github.com/repos/[username]/[repo-name]/releases

এবং আমরা জানি, জেকুয়েরির getJSON মেথড কাজে লাগিয়ে, আমরা আমাদের রিলিযের ডাউনলোডের সংখ্যা খুব সহজেই পেতে পারি।

$.getJSON("https://api.github.com/repos/someone/kauwa-kala/releases").done(function (json) {
    var release = json[0];
    console.log(release);
    console.log(release.assets[0].download_count);
});

ইতি কথা

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

আপনার মন্তব্য জানান...