Thursday, July 26, 2012

সফটওয়্যার সোর্সকোড ম্যানেজমেন্টঃ আপনার সোর্সকোডকে আরো কার্যকরভাবে সংরক্ষন এবং ব্যবহার করুন

সফটওয়্যার সোর্সকোড ম্যানেজমেন্টঃ  আজকে যে বিষয়টা নিয়ে লিখব তা হল সফটওয়্যার সোর্সকোড ম্যানেজমেন্ট। এর উপর অনলাইনে বাংলা কোন আর্টিকেল নেই বললেই চলে।

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


অনলাইনে সোর্সকোড সংরক্ষন, গিটহাব/গুগলকোডঃ  সোর্সকোড ম্যানেজমেন্টের ক্ষেত্রে বিভিন্ন ধরনের ভার্সন কন্ট্রোল সিস্টেম রয়েছে। এর মধ্যে গিটই সবচেয়ে বেশি জনপ্রিয়। এই সিস্টেমে আপনার সোর্সকোড সংরক্ষনের জন্য আপনি ইউজ করতে পারেন গিটহাব। এছাড়া আপনি গুগলকোডে ও আপনার সোর্সকোড সংরক্ষন করতে পারেন। যাই হোক আমি আজকে গিটহাব নিয়ে লিখব। আসলে এ নিয়ে অনেক অনেক কিছু জানার আছে এবং জানা দরকার। একটি মাত্র টিউটরিয়ালে কোনভাবেই বোঝানো সম্ভব না। আপনাকে মোটামুটি বুঝতে হলে Pro-Git বইয়ের ১ম থেকে ৫ নাম্বার চাপ্টার পর্যন্ত পুরোপুরি বুঝে বুঝে পড়তে হবে। তাহলে হয়ত ভাল একটা ধারনা পেতে পারেন। তবে সাধারনভাবে কাজ করার জন্য যেটুকু দরকার সেটুকুই টিউটোরিয়ালে তুলে ধরছি।


গিটহাবে সোর্সকোড আপলোডের পদ্ধতিঃ  আমি জাস্ট দেখাব কিভাবে আপনি একটি রিপোজটরিতে আপনার কোড আপলোড করবেন।

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

যাই হোক প্রথমে গিটহাবে এখান থেকে রেজিস্ট্রেশন করে নিন। রেজি করার সময় ইউজার নেমটা একটু খেয়াল করে দিবেন। যেমন আমি Mashpy নাম দেয়াতে এরকম ইউজার ফ্রেন্ডলি লিঙ্ক  পেয়েছি-  https://github.com/Mashpy

(বড় করে দেখতে ছবিটিতে ক্লিক করুন)

১। প্রথমে Create a repository তে গিয়ে একটি নাম দিন। আমি নাম দিলাম - TechnologyBasic-Software । খেয়াল করে দেখুন আপনাকে সাথে সাথেই https://github.com/Mashpy/TechnologyBasic-Software এরকম একটা লিঙ্ক দিয়ে দেয়া হচ্ছে। এটা মনে রাখুন কাজ লাগবে একটু পরে ৭নং অংশে।

এবার আপনি যদি উইন্ডোজ ইউজ করে থাকেন তাহলে লিঙ্ক থেকে সফটওয়্যারটি ডাউনলোড করে ইন্সটল করুন।

২। আপনার পিসিতে TechnologyBasic-Software নামে একটি ফোল্ডার তৈরি করুন এবং এতে আপনার ইচ্ছামত সোর্সকোড রাখুন।
৩। ইন্সটল হওয়া সফট Git-Gui ওপেন করুন এবং Create New Repository তে TechnologyBasic-Software এর ফোল্ডারের লোকেশনটি দেখিয়ে দিন। Rescan এ ক্লিক করে Stage Changed এ ক্লিক দিলে নিচের মত দেখতে পাবেন।

(বড় করে দেখতে ছবিটিতে ক্লিক করুন)

৪। Commit কথাটি অনেক গুরুত্বপূর্ণ। আপনি সোর্সে কোড পরিবর্তন করার পর কমিট করতে হবে। আপনার সোর্সকোডে কেমন পরিবর্তন করেছেন তার একটি সংক্ষিপ্ত বর্ননা লিখে দিতে পারেন। যাতে আপনি বা অন্য যে কেউ কমিট মেসেজটি পড়লেই এই সফটওয়্যারের ডেভেলাপমেন্ট হিস্টোরি সম্পর্কে ধারনা হয়ে যায়।

সোর্সকোড পরিবর্তন করে কমিট মেসেজ লিখে Commit এ ক্লিক করুন। তাহলে সোর্সকোডটি পরিবর্তিত হবে।

৫। এবার এই সোর্সকোডকে আমাদের অনলাইনে আপলোড করতে হবে। এর জন্য আমরা Push বাটন চাপ দিব। তার আগে আপনাকে SSH Key ঠিক করতে হবে।
৬। Git-Gui সফটওয়্যারে Help-Show SSH key তে চাপ দিন। এই কী কপি করুন।
 

(বড় করে দেখতে ছবিটিতে ক্লিক করুন)

এই লিঙ্কে যেয়ে Add SSH এ ক্লিক করুন। কপি করা Key এখানে পেস্ট করুন।

৭। অনলাইনে আপলোডের জন্য Push বাটনে চাপ দিন এবং Arbitrary Location এ ১ নং অংশে থাকা লিঙ্কটি বসিয়ে দিয়ে Ok করুন। আপনার গিটহাব ইউজার নেম ও পাসওয়ার্ড চাইলে দিয়ে দিবেন।
৮। দেখুন লিঙ্কে আপলোড হয়ে গেল আপনার কাক্ষিত সোর্সকোড ।

(বড় করে দেখতে ছবিটিতে ক্লিক করুন)

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

গিটহাবে কাজ করার ক্ষেত্রে কিছু প্রয়োজনীয় বিষয়: গিটহাবে আপনার Commit, Pull, Push, Stage, Branch এই কয়েকটি জিনিস সম্পর্কে ধারনা থাকা অবশ্যক। সে সম্পর্কে সংক্ষেপে কিছু বলছি।
Commit: সোর্সকোড চেঞ্জ করলে কি কি চেঞ্জ করেছেন তার একটি সংক্ষিপ্ত বিরবণ রাখতে পারেন। ফলে পরবর্তীতে কেউ প্রজেক্ট ডেভেলাপ করতে গেলে সহজেই বিস্তারিত জানতে পারবে।
Pull: অন্যকোন একটি গিটহাব একাউন্টের প্রজেক্ট নিয়ে কাজ করতে চাইলে প্রজেক্টের লিঙ্কটি দিয়ে পুরো প্রজেক্টটি ক্লোন করে নিয়ে নিজের একাউন্টে কাজ করতে পারেন।
Push: আপনার কম্পিউটারে ডেভেলাপ করা কোন সোর্সকোড গিটহাব সাইটে আপলোড করতে হলে পুশ করতে হবে।
Stage:   প্রাথমিক অবস্থায় সোর্সকোড unstage অবস্থায় থাকে। কোন কিছু কমিট করতে হলে আপনাকে স্টেজ চেঞ্জ করতে হবে।
Branch: কোন রিপোজেটরিতে আমরা যখন সোর্সকোড রাখি সাধারনভাবে Master Branch এ রাখি। আপনি যদি এই সোর্সকোড নিয়ে কাজ করতে চান তাহলে নতুন কোন ব্রাঞ্চে নিয়ে কাজ করে আবার Master Branch এ মার্জ করতে পারেন।


টিমওয়ার্কের ক্ষেত্রে এই পদ্ধতির ভূমিকা: এই স্টাইলে সোর্সকোড সংরক্ষনের পদ্ধতিতে সবচেয়ে বড় সুবিধা হল কোন একটি প্রজেক্টে হাজার হাজার ডেভেলাপার কাজ করতে পারে। এই কারনে ওপেনসোর্স এপ্লিকেশনগুলোর ডেভেলাপমেন্ট খুব তাড়াতাড়ি হয়ে থাকে।


এই সম্পর্কে আরো জানার জন্য প্রয়োজনীয় রিসোর্স: এছাড়া আরো অনেক বিষয় আছে। পুরোটা বুঝতে হলে অবশ্যই Pro-Git বইয়ের ১ম থেকে ৫ নাম্বার চাপ্টার পর্যন্ত পড়তে হবে। কোন টপিক বা বইয়ের কোন পেজে কোন টপিক বুঝতে সমস্যা হলে আমাকে জানাতে পারেন।

11 comments:

  1. ভাল হইসে....তবে একদম সহজবোধ্য হইসে বলা যাবে না।

    **নির্দিষ্ট প্রজেক্ট যেমন watch করা যায়, তেমনি নির্দিষ্ট কোন প্রোগ্রামারকে Follow করা যায় যার প্রতিটা কাজ, কমেন্ট নোটিফিকেশন হিসেবে আসে।

    এই লিংকে প্রো-গিট লেখক Scott Chacon এর গিটে সূচনা নিয়ে একটি ভিডিও আছে http://www.youtube.com/watch?v=ZDR433b0HJY

    ReplyDelete
    Replies
    1. নাবিল @ বিষয়টা একটু জটিল। প্রথমদিকে কঠিন লাগতে পারে, পরে আস্তে আস্তে ঠিক হয়ে যাবে।

      আর ওনার ১ ঘন্টা ২৫ মিনিটের ভিডিও আমি বার বার দেখেছি। কিভাবে হাতে কলমে কাজ করতে হবে তা তিনি বর্ননা করেন নি। উনার বর্ননার বিষয় ছিল গিট-হাব কিভাবে কাজ করে, কিভাবে সোর্সকোডগুলো সংরক্ষন করে......পুরো Deep level এর বিষয় নিয়ে আলোচনা করেছেন। নতুনদের তার কথার অর্থগুলো ধরতে অনেক কষ্ট হবে। তার কথার অর্থগুলো তখনই বোঝা যাবে যদি ওনার বই আর ওনার ভিডিও কেউ একসাথে ফলো করে।

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

      Delete
  2. সুন্দর এবং সাবলিল লিখা। ভালো লাগলো অনেক। তবে আরও অনেক কিছু জানার আছে। মাঝে একবার ফেইসবুক এপ্লিকেশন বানানোর আগ্রহ হয়েছিল। তখন এই গিটের প্যাচানিতে পরে পরে আগ্রহই শেষ হয়ে যায় আমার। তোমার কাছ থেকে QT এর কিছু এবং গিটহাব শিখতে চাই। আপত্তি নাই তো? কেননা বই পড়ার আগে কিছুটা বেসিক থাকলে ভালো হতো। আর বই পড়ায় আগের মত আগ্রহ নাই। নষ্ট হয়ে গেছে।

    ReplyDelete
    Replies
    1. প্রথমে আমারো মনে হয়েছিল যে গিটহাব প্যাচানো মার্কা আপলোড সিস্টেম ইউজ করে। আসলে এরো হয়ত সুনির্দিষ্ট একটা কারন আছে। আর কিউটে মোটামুটি ইন্টারমেডিয়েট লেভেল পর্যন্ত শিখাতে পারব। মোটামুটি মানের এক্সপার্ট হতে আমার হয়ত আরো ২ বছর লাগবে।

      Delete
  3. সুন্দর ও সহজ লেখা। অত্যন্ত কাজে লাগবে। প্লাস দিলাম।

    ReplyDelete
  4. আপানাকে অনেক অনেক ধন্যবাদ ।। এই কাজটার জন্য আজ দুইদিন ধরে চেষ্টা করছি অবশেষে আপানার টুটরিয়াল দেখে সফল হলাম...

    ReplyDelete
    Replies
    1. আপনি তো ২ দিনে করে ফেলেছেন। আর আমার এটা বের করতে ১৪ দিন লেগেছিল। হায়রে কষ্ট।

      Delete
  5. great. i want to learn ruby, so git will need. thanks for share

    ReplyDelete
  6. Thanks Mashpy.It'll be very much useful..............

    ReplyDelete
  7. অনেক সহজভাবে বুঝিয়েছেন ভাইয়া। Commit, Pull, Push, Stage, Branch এইগুলো সম্পর্কে ধারণা ক্লিয়ার ছিলো না, এখন ক্লিয়ার হয়ে গেছে। অনেক ধন্যবাদ আপনাকে ;)

    ReplyDelete
  8. ভাইয়া , Github এর উপর আপনার এই post এর চেয়ে ভাল অন্য কোথাও নেই । অনেক ভাল লিখেছেন ।

    ReplyDelete

এখানে আপনি আপনার মূল্যবান মতামতটি প্রকাশ করতে পারেন।