"আজ আমি আপনাকে দুটি জনপ্রিয় সংস্করণ নিয়ন্ত্রণ প্রোগ্রাম সম্পর্কে বলতে যাচ্ছি: SVN এবং Git।"

"এসভিএন মোটামুটিভাবে কাজ করে যেভাবে আমি শেষ পাঠে বর্ণনা করেছি। গিট একটু বেশি জটিল, এবং আমি এটিকে আরও বিশদে আলোচনা করার পরিকল্পনা করছি।"

"আপনি কি আমাকে SVN এবং Git এর জন্য ডকুমেন্টেশনের লিঙ্ক দিতে পারেন?"

"অবশ্যই, মাত্র এক সেকেন্ড।"

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (এটি কেবল একটি মাস্টারপিস)

"তাই, গিট ।"

"এটি SVN এর চেয়ে একটু বেশি জটিল।  গিট-এর সাথে, প্রতিটি ব্যবহারকারীর সার্ভার সংগ্রহস্থল ছাড়াও তার নিজস্ব স্থানীয় সংগ্রহস্থল রয়েছে। "

"তাহলে আপনি কোথায় প্রতিশ্রুতিবদ্ধ?"

"ব্যবহারকারীরা সর্বদা তাদের স্থানীয় সংগ্রহস্থলে প্রতিশ্রুতিবদ্ধ।"

"কিন্তু সার্ভার সংগ্রহস্থল সম্পর্কে কি?"

"স্থানীয় এবং সার্ভার সংগ্রহস্থলগুলিকে সিঙ্ক্রোনাইজ করতে, বিশেষ টান এবং পুশ কমান্ড রয়েছে

"এর একটা কারণ আছে। কখনো কখনো একজন প্রোগ্রামারকে তার নিজের দিক থেকে অনেক কাজ করতে হয়, যেটা শেয়ার করা রিপোজিটরিতে যোগ করার আগে কয়েকশো কমিট জড়িত থাকতে পারে।"

"এসভিএন-এ এটি করার জন্য, আপনাকে একটি পৃথক শাখা শুরু করতে হবে এবং তারপরে এটিকে ট্রাঙ্কের সাথে একত্রিত করতে হবে।"

"গিটের সাথে, আপনি সর্বদা স্থানীয় সংগ্রহস্থলে প্রতিশ্রুতিবদ্ধ হন এবং তারপর আপনার কাজ শেষ হয়ে গেলে সার্ভারের কেন্দ্রীয় সংগ্রহস্থলে ব্যাচ হিসাবে সমস্ত পরিবর্তন পাঠান।"

"যখন আপনি শুধুমাত্র একটি ছোট কোড লিখছেন তখন এই পদ্ধতিটি একটু অতিরিক্ত বলে মনে হতে পারে। কিন্তু যখন আপনার কাজগুলি এত বড় হয় যে সেগুলি সপ্তাহব্যাপী প্রসারিত হয়, তখন আপনি বুঝতে পারেন যে আপনি প্রতিশ্রুতি ছাড়াই পুরো সময় লিখতে পারবেন না।"

"কেন আপনি শুধু দুই সপ্তাহের জন্য কাজ করতে পারবেন না, এবং তারপরে একবার সার্ভারে আপনার পরিবর্তনগুলি কমিট করবেন?"

"ওয়েল, একটি সংস্করণ নিয়ন্ত্রণ প্রোগ্রাম অনেক সুবিধা প্রদান করে।"

"ভাবুন যে আপনি প্রতিদিন প্রতিশ্রুতিবদ্ধ হন, এবং 10 তম দিনে আপনি আবিষ্কার করেন যে আপনি গত দুই দিনে যে পরিবর্তনগুলি করেছেন তা পরিকল্পনা অনুযায়ী কাজ করবে না। এবং আপনি 8 তম দিনে আপনার কাছে থাকা কোডে ফিরে যেতে চান এবং টাস্কের কাছে যেতে চান ভিন্নভাবে।"

"আপনি কেবল গত দুই দিনে স্থানীয় সংগ্রহস্থলে করা পরিবর্তনগুলি ফিরিয়ে আনুন এবং পছন্দসই অবস্থায় ফিরে যান। এটি একটি রোলব্যাক অপারেশন হিসাবে পরিচিত। "

"আপনি আমাকে বলছেন আপনি এটা করতে পারেন?"

"হ্যাঁ। উপরন্তু, যেহেতু প্রতিশ্রুতি ইতিহাস সংরক্ষিত আছে, আপনি খুঁজে পেতে পারেন কখন এবং কেন কিছু প্রতিশ্রুতিবদ্ধ হয়েছিল এবং কার দ্বারা, প্রাসঙ্গিক বৈশিষ্ট্য/বাগগুলি এবং কোন দশটি ফাইল একই সাথে এই কাজের অংশ হিসাবে সংশোধন করা হয়েছিল।"

"ধরুন কারোর বাগ ফিক্স অন্য কারো কোড ব্রেক করে। আপনি শুধু কোডটি রোল ব্যাক ( রোলব্যাক ) করতে পারেন এবং এমনভাবে এগিয়ে যেতে পারেন যেন পরিবর্তনটি কখনই হয়নি।"

"ঠিক আছে, এটা দুর্দান্ত। আমি নিশ্চিত। আপনি কি আমাকে কয়েকটি উদাহরণ দেখাতে পারেন যেগুলি কীভাবে কাজ করে?"

"অবশ্যই।"

"আপনি কীভাবে আপনার স্থানীয় কম্পিউটারে কেন্দ্রীয় সংগ্রহস্থল ক্লোন করবেন তা এখানে :"

কমিট ও শাখা- ১টি

"সুতরাং, চেকআউট অপারেশনের আর প্রয়োজন নেই।"

"হ্যাঁ। এবং এখানে পুশ অপারেশনের উদাহরণ রয়েছে:"

কমিট এবং শাখা - 2

"এবং টান অপারেশন:

কমিট ও শাখা- 3

"আহ। এটা কমবেশি বোধগম্য হয়।"

"প্রসঙ্গক্রমে, গিটহাব নামে একটি দুর্দান্ত পরিষেবা রয়েছে।"

"যেকোনো প্রোগ্রামার সেখানে নিবন্ধন করতে পারে এবং তাদের নিজস্ব গিট রিপোজিটরি তৈরি করতে পারে। আমি আপনাকে এটির সাথে আরও পরিচিত হওয়ার পরামর্শ দিচ্ছি।"

"এখানে কয়েকটি দরকারী লিঙ্ক রয়েছে:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"উল্লেখ্য যে বেশ কিছু গিট ক্লায়েন্ট আছে।"

"প্রথম, এখানে গিটব্যাশ রয়েছে   , যা আপনাকে পাঠ্য কমান্ড লিখতে দেয়।"

"তারপর আছে TortoiseGit , যা Windows Explorer-এ তৈরি একটি ভাল প্রোগ্রাম। এটি আপনাকে সরাসরি এক্সপ্লোরারে গিট রিপোজিটরির ফাইলগুলির সাথে কাজ করতে দেয়।"

"IntelliJ IDEA গিটকে সমর্থন করে এবং আপনাকে পরিবেশের মধ্যে থেকে সরাসরি কয়েকটি ক্লিকের মাধ্যমে সমস্ত ধরণের জটিল কমান্ড কার্যকর করতে দেয়।"

"তাহলে, আমার কোনটা শিখতে হবে?"

"আমি সুপারিশ করছি যে আপনি তাদের সকলকে জানুন।"

"আপনি আপনার সাক্ষাত্কারে পাস করবেন এবং কর্মস্থলে পৌঁছাবেন। আপনি গিটের একটি লিঙ্ক, একটি লগইন এবং পাসওয়ার্ড পাবেন - এবং এটিই। তারপর আপনি নিজেই থাকবেন।"

"আপনি কি বলতে চাচ্ছেন, «নিজের থেকে»?"

"আমি বলতে চাচ্ছি আপনি নিজের দ্বারা গিট সেট আপ করবেন, নিজের দ্বারা সংগ্রহস্থলের একটি অনুলিপি টানবেন, ..."

"এবং তারপরে আপনাকে প্রকল্পটি তৈরি করতে এবং চালানোর চেষ্টা করতে হবে।"

"বিল্ড নির্দেশাবলী সম্ভবত প্রকল্প ডকুমেন্টেশন সহ গিট সংগ্রহস্থলে থাকবে।"

"আপনার দলের নেতৃত্ব সন্ধ্যায় আপনার কাছে আসবে এবং বলবে,  "আচ্ছা, আপনি এখন পর্যন্ত কী খুঁজে পেয়েছেন?" "

"এবং আপনি বলবেন, 'আমি এখানে গিট সেট আপ করার চেষ্টা করছি, কিন্তু এখনও কোনো সফলতা পাইনি৷ "আপনি আমাকে বরখাস্ত করবেন না, তাই না?" "

"অথবা, যখন এখনও মধ্যাহ্ন, আপনি দলের নেতৃত্বে যেতে পারেন এবং বলতে পারেন,  «আমি গিট ইনস্টল করেছি, প্রকল্পটি টেনেছি এবং ডকুমেন্টেশনের মাধ্যমে ব্রাউজ করেছি, কিন্তু সেখানে শত শত ফাইল রয়েছে এবং আমি এখনও সবকিছু সাজাতে পারিনি। বর্তমান নির্মাণ নির্দেশাবলী কি?'» "

"আপনি পার্থক্য অনুভব করতে পারেন?"

"হ্যাঁ। দ্বিতীয় ক্ষেত্রে, আমি একজন সুপার রক-স্টার প্রোগ্রামার, কিন্তু প্রথমটিতে, আমি এমন কিছু রোবো-ডুফাস যারা গিট থেকে একটি প্রজেক্ট কীভাবে টানতে হয় তাও জানে না। অন্য কথায়, আমি স্ক্রু করেছি এমনকি আমি প্রোগ্রামিং শুরু করার আগেই। আমি মনে করি এর পরে তারা আমাকে কোড লিখতেও দেবে না।"

"দেখুন, আপনি আপনার নিজের প্রশ্নের উত্তর দিয়েছেন। তাই অধ্যয়ন করুন এবং এটি বের করুন। কেউ এটি আপনার জন্য করবে না।"

"আপনি আমাকে সাহায্য করতে যাচ্ছেন না?"

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

"ঠিক আছে, বুঝলাম। ধন্যবাদ, বিলাবো!"