৬.৩ গিটহাব – প্রজেক্ট মেইন্টেইন করা

প্রজেক্ট মেইন্টেইন করা

আমরা এখন যেহেতু প্রজেক্টে কনট্রিবিউট করতে পারি, তাহলে এবার শিখবো – নিজেরা কিভাবে প্রজেক্ট তৈরি করা, মেইন্টেইন করা এবং পরিচালনা করা যায়।

কিভাবে নতুন রিপোজিটরি তৈরি করতে হয়

আমাদের প্রজেক্ট কোড শেয়ার করার জন্য একটি নতুন রিপোজিটরি তৈরি করা যাক। এজন্য ড্যাশবোর্ডের ডানদিকে “New repository” বাটনে ক্লিক করে, অথবা উপরে আপনার ইউজারনেম এর পাশে দেয়া টুলবারের +  বাটন চেপে, ড্রপডাউন থেকে “New repository” সিলেক্ট করে শুরু করতে হবে।
newrepo
চিত্র 109. "Your repositories" ড্যাশবোর্ড
new-repo
চিত্র 110. "New repository" ড্রপডাউন

এটি আমাদেরকে “New repository” ফর্মে নিয়ে যাবে:

চিত্র 111. "New repository" ফর্ম
এখানে প্রজেক্টের একটা নাম দিলেই হবে; বাকি ফিল্ডগুলি সম্পূর্ণ ঐচ্ছিক। আপাতত, শুধু “Create repository” বাটনে ক্লিক করি, তাতে গিটহাবে <user>/<project_name> নামে একটি নতুন রিপোজিটরি তৈরি হবে। যেহেতু রিপোজিটরিতে এখনও কোনও কোড নেই, তাই গিটহাব কিছু নির্দেশাবলী দেখাবে যে কীভাবে লোকালি একটি নতুন গিট রিপোজিটরি তৈরি করতে হবে বা আগের তৈরী কোনো গিট রিপজিটরি কিভাবে গিটহাবের এই প্রজেক্টের সাথে সংযোগ করানো যাবে। এখন যেহেতু আমাদের প্রজেক্টটি গিটহাবে হোস্ট করা হয়েছে, এর URL দিয়ে যে কারো সাথে রিপজিটরিটা শেয়ার করতে পারবো। গিটহাবের যেকোন রিপজিটরি, HTTPS এর জন্য https://github.com/<user>/<project_name> এবং SSH এর জন্য git@github.com:<user>/<project_name> – এই রকম URL দিয়ে এক্সেস করা যাবে।  গিট এই উভয় ইউআরএল থেকেই pull এবং push করতে পারে।

বিঃদ্রঃ

একটি পাবলিক রিপজিটরির জন্য HTTPS ভিত্তিক URL শেয়ার করা ভালো। তাতে একজন ব্যবহারকারী গিটহাব একাউন্ট ছাড়াই এটি এক্সেস করতে পারবে এবং নামিয়ে নিতে (clone) পারবে। SSH ভিত্তিক URL শেয়ার করলে, অ্যাক্সেস করার জন্য ব্যাবহারকারীর একটা গিটহাব একাউন্ট এবং তাতে একটি SSH key আপলোড করা থাকা লাগবে। HTTPS ভিত্তিক URL দিয়ে ব্রাউজারেও প্রজেক্টটি দেখা যাবে।

কোলাবরেটর যুক্ত করা

যদি অন্য সহকর্মীদের গিটহাবের এ রিপজিটরিতে কমিট এক্সেস দিতে হয়, তাহলে তাদেরকে এখানে “কোলাবরেটর” হিসাবে যুক্ত করতে হবে। গিটহাবে একাউন্ট আছে এমন যেকোন সহকর্মীকে রিপোজিটরিতে যুক্ত করা যাবে এবং যুক্ত হওয়ার পর তারা পুশ (push) এক্সেস পেয়ে যাবে, যার মানে হচ্ছে তাদের প্রজেক্ট এবং গিট রিপোজিটরিতে দেখার এবং লেখার অনুমতি থাকবে।

কোলাবরেটর যুক্ত করার জন্য, রিপোজিটরির “Settings” অপশনে যাই। সেখান বাম পাশের মেনু থেকে Collaborators” এ গিয়ে “Add people” বাটনে ক্লিক করি। তারপর সামনে আসা টেক্সটবক্সে সহকর্মীর গিঠাব ইউজারনেম লিখে তাকে রিপজিটরিতে যুক্ত করি। এখান থেকে যেকোন সময় কাউকে এক্সেস দেয়া ও এক্সেস সরিয়ে ফেলা যাবে।

reposettingslink
চিত্র 113. রিপোজিটরি সহযোগী

পুল রিকুয়েস্ট

এখন ধরা যাক রিপোজিটরিতে কিছু কোড ও ক’জন কোলাবরেটরের এক্সেস আছে। এখন একটি পুল রিকোয়েস্ট পেলে কী করবো তা দেখা যাক৷

পুল রিকুয়েস্ট আসতে পারে রিপোজিটরি থেকে ফর্ক (fork) করা একটি ব্রাঞ্চ (branch) থেকে অথবা একই রিপোজিটরির অন্য ব্রাঞ্চ থেকে আসতে পারে। এখানে পার্থক্য হল, একটি ফর্ক সাধারণত অন্য ইউজারের প্রোফাইলে থাকে এবং সেখানে আমরা সরাসরি পুশ দিতে পারি না, তারাও সরাসরি আমাদের রিপজিটরিতে পুশ দিতে পারে না। আর সেখানে অভ্যন্তরীণ পুল রিকুয়েস্টে সাধারণত উভয়পক্ষই ব্রাঞ্চে অ্যাক্সেস করতে পারে।

উদহারনস্বরুপ, ধরি “tonychacon”  নামের ইউজার “fade” নামে একটি Arduino কোড প্রজেক্ট তৈরি করেছে। কেউ যদি সেই প্রজেক্টের কোডে একটি পরিবর্তন করে একটি পুল রিকুয়েস্ট পাঠায়, তাহলে tonychacon একটি ইমেল নোটিফিকেশন পাবে যা অনেকটা এরকম:

maint-01-email
চিত্র 114. নতুন পুল রিকুয়েস্টের ইমেল নোটিফিকেশন

এই ইমেইলে লক্ষ্য করার মত কিছু বিষয় রয়েছে। এটি একটি ছোট diffstat দিচ্ছে যাতে পরিবর্তিত ফাইলগুলির একটি তালিকা এবং সেগুলোতে কি কি পরিবর্তন হয়েছে৷ সেখানে গিটহাব পুল রিকুয়েস্টের একটি লিঙ্ক দেয়া থাকবে। কিছু URL দেয়া থাকবে যেগুলা কমান্ড লাইন থেকে ব্যবহার করা যাবে।

পুল রিকুয়েস্টে মন্তব্য প্রদান করা

গিটহাব flavoured markdown ব্যবহার করে কোডের নির্দিষ্ট লাইনগুলিতে মন্তব্য করা যায়, সম্পূর্ণ কমিটগুলিতে মন্তব্য করা যায় বা সম্পূর্ণ pull request এ মন্তব্য করতে পারেন। যখনই অন্য কেউ pull request এ মন্তব্য করবে তখনই আপনি ইমেল নোটিফিকেশন পেতে থাকবেন যাতে আপনি জানতে পারেন যে সেখানে কি হচ্ছে।

maint-03-email-resp
চিত্র 115. ইমেলের প্রতিক্রিয়া থ্রেডে অন্তর্ভুক্ত করা হয়েছে

এখন যদি কোড গ্রহণযোগ্য হয়, তাহলে আপনি pull request টি merge করে ফেলতে পারেন। আপনি চাইলে github এর সাইটে merge করতে পারেন অথবা লোকালি merge করতে পারেন। প্রত্যেকটি merge এক একটি কমিট হিসাবে গণ্য হবে।

maint-02-merge
চিত্র 116. Merge button এবং একটি pull request ম্যানুয়ালি মার্জ করার জন্য নির্দেশাবলী

আপনি যদি সিদ্ধান্ত নেন যে আপনি এটিকে merge করতে চান না, তাহলে আপনি শুধু pull request টি close করতে পারেন এবং যে ব্যক্তি এটি খুলেছে তাকে অবহিত করা হবে।

//নট ডান শুরু

// নিচের অংশটুকু শুধু গুগল ট্রান্সলেটর দিয়ে ট্রান্সলেট করা আছে 

 

অনুরোধ Refs টানুন

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

GitHub আসলে সার্ভারে ছদ্ম-branchহিসাবে একটি সংগ্রহস্থলের জন্য পুল অনুরোধ শাখার বিজ্ঞাপন দেয়। আপনি যখন ক্লোন করেন তখন ডিফল্টরূপে আপনি সেগুলি পাবেন না, তবে সেগুলি একটি অস্পষ্ট উপায়ে রয়েছে এবং আপনি সেগুলি সহজেই অ্যাক্সেস করতে পারেন৷

এটি প্রদর্শন করার জন্য, আমরা একটি নিম্ন-স্তরের কমান্ড ব্যবহার করতে যাচ্ছি (প্রায়শই এটিকে “প্লাম্বিং” কমান্ড হিসাবে উল্লেখ করা হয়, যা আমরা প্লাম্বিং এবং চীনামাটির বাসন -এ আরও পড়ব ) নামে ls-remote। এই কমান্ডটি সাধারণত প্রতিদিনের গিট অপারেশনগুলিতে ব্যবহৃত হয় না তবে সার্ভারে কী রেফারেন্স রয়েছে তা আমাদের দেখানোর জন্য এটি কার্যকর।

যদি আমরা এই কমান্ডটি “ব্লিঙ্ক” সংগ্রহস্থলের বিরুদ্ধে চালাই যা আমরা আগে ব্যবহার করছিলাম, আমরা সংগ্রহস্থলের সমস্ত branchএবং ট্যাগ এবং অন্যান্য রেফারেন্সের একটি তালিকা পাব।

				
					$ git ls-remote https://github.com/schacon/blink
10d539600d86723087810ec636870a504f4fee4d	HEAD
10d539600d86723087810ec636870a504f4fee4d	refs/heads/master
6a83107c62950be9453aac297bb0193fd743cd6e	refs/pull/1/head
afe83c2d1a70674c9505cc1d8b7d380d5e076ed3	refs/pull/1/merge
3c8d735ee16296c242be7a9742ebfbc2665adec1	refs/pull/2/head
15c9f4f80973a2758462ab2066b6ad9fe8dcf03d	refs/pull/2/merge
a5a7751a33b7e86c5e9bb07b26001bb17d775d1a	refs/pull/4/head
31a45fc257e8433c8d8804e3e848cf61c9d3166c	refs/pull/4/merge
				
			

অবশ্যই, আপনি যদি আপনার সংগ্রহস্থলে থাকেন এবং আপনি চালান git ls-remote originবা আপনি যে রিমোট চেক করতে চান তবে এটি আপনাকে এর মতো কিছু দেখাবে।

যদি রিপোজিটরিটি GitHub-এ থাকে এবং আপনার কাছে কোনো পুল রিকোয়েস্ট খোলা হয়েছে, তাহলে আপনি এই রেফারেন্সগুলি পাবেন যা এর সাথে প্রিফিক্স করা আছে refs/pull/। এগুলি মূলত শাখা, কিন্তু যেহেতু এগুলি আপনার অধীনে নয়, refs/heads/আপনি যখন ক্লোন করেন বা সার্ভার থেকে আনেন তখন সেগুলি সাধারণত পাওয়া যায় না — আনার প্রক্রিয়া সাধারণত এগুলিকে উপেক্ষা করে৷

প্রতি পুল রিকোয়েস্টে দুটি রেফারেন্স আছে – যেটি /headপুল রিকোয়েস্ট branch এশেষ কমিটের মতোই পয়েন্টে শেষ হয়। সুতরাং যদি কেউ আমাদের সংগ্রহস্থলে একটি পুল অনুরোধ খোলে এবং তাদের শাখার নাম দেওয়া হয় bug-fixএবং এটি কমিট করার নির্দেশ দেয় a5a775, তাহলে আমাদের সংগ্রহস্থলে আমাদের একটি branchথাকবে না bug-fix(যেহেতু এটি তাদের কাঁটাচামচের মধ্যে রয়েছে), তবে আমাদের কাছে সেই পয়েন্টগুলি থাকবে । এর মানে হল যে আমরা একগুচ্ছ রিমোট যোগ না করেই প্রতিটি পুল রিকোয়েস্ট শাখাকে সহজেই টেনে আনতে পারি।pull/<pr#>/heada5a775

এখন, আপনি সরাসরি রেফারেন্স আনার মত কিছু করতে পারেন।

				
					$ git fetch origin refs/pull/958/head
From https://github.com/libgit2/libgit2
 * branch            refs/pull/958/head -> FETCH_HEAD

				
			

originএটি গিটকে বলে, ” রিমোটের সাথে সংযোগ করুন এবং নামটি ডাউনলোড করুন refs/pull/958/head।” গিট আনন্দের সাথে মেনে চলে এবং সেই রেফটি তৈরি করার জন্য আপনার প্রয়োজনীয় সমস্ত কিছু ডাউনলোড করে এবং আপনি যে কমিটের অধীনে চান তার জন্য একটি পয়েন্টার রাখে .git/FETCH_HEAD। git merge FETCH_HEADআপনি এটিকে একটি branch এঅনুসরণ করতে পারেন যেখানে আপনি এটি পরীক্ষা করতে চান তবে সেই মার্জ কমিট বার্তাটি কিছুটা অদ্ভুত দেখাচ্ছে। এছাড়াও, আপনি যদি অনেকগুলি পুল অনুরোধ পর্যালোচনা করেন তবে এটি ক্লান্তিকর হয়ে ওঠে।

সমস্ত পুল অনুরোধগুলি আনার একটি উপায়ও রয়েছে এবং আপনি যখনই রিমোটের সাথে সংযোগ করেন তখন সেগুলি আপ টু ডেট রাখুন৷ .git/configআপনার প্রিয় সম্পাদক খুলুন , এবং originরিমোট সন্ধান করুন. এটি কিছুটা এইরকম হওয়া উচিত:

				
					[remote "origin"]
    url = https://github.com/libgit2/libgit2
    fetch = +refs/heads/*:refs/remotes/origin/*

				
			

যে লাইনটি শুরু হয় fetch =সেটি হল একটি “রিফস্পেক”। .gitএটি আপনার স্থানীয় ডিরেক্টরির নামগুলির সাথে রিমোটে নাম ম্যাপ করার একটি উপায় । এই বিশেষটি গিটকে বলে, “রিমোটে থাকা জিনিসগুলি refs/headsআমার স্থানীয় সংগ্রহস্থলের অধীনে থাকা উচিত refs/remotes/origin।” আপনি অন্য refspec যোগ করতে এই বিভাগটি সংশোধন করতে পারেন:

				
					[remote "origin"]
    url = https://github.com/libgit2/libgit2.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

				
			
সেই শেষ লাইনটি গিটকে বলে, “যে সমস্ত রেফের মতো দেখায় refs/pull/123/headসেগুলিকে স্থানীয়ভাবে সংরক্ষণ করা উচিত refs/remotes/origin/pr/123।” এখন, আপনি যদি সেই ফাইলটি সংরক্ষণ করেন এবং একটি করেন git fetch:
				
					$ git fetch
# …
 * [new ref]         refs/pull/1/head -> origin/pr/1
 * [new ref]         refs/pull/2/head -> origin/pr/2
 * [new ref]         refs/pull/4/head -> origin/pr/4
# …

				
			

এখন সমস্ত দূরবর্তী পুল অনুরোধগুলি স্থানীয়ভাবে রেফের সাথে উপস্থাপন করা হয় যা অনেকটা ট্র্যাকিং শাখার মতো কাজ করে; সেগুলি শুধুমাত্র পঠনযোগ্য, এবং আপনি যখন আনেন তখন সেগুলি আপডেট হয়৷ এটি স্থানীয়ভাবে একটি পুল অনুরোধ থেকে কোডটি চেষ্টা করা খুব সহজ করে তোলে:

				
					$ git checkout pr/2
Checking out files: 100% (3769/3769), done.
Branch pr/2 set up to track remote branch pr/2 from origin.
Switched to a new branch 'pr/2'

				
			

আপনার মধ্যে ঈগল- headচোখগুলি refspec এর প্রত্যন্ত অংশের শেষের দিকে লক্ষ্য করবে। গিটহাবের পাশে একটি refs/pull/#/mergeরেফও রয়েছে, যা সেই প্রতিশ্রুতির প্রতিনিধিত্ব করে যা আপনি সাইটে “মার্জ” বাটনটি চাপলে ফলাফল হবে৷ এটি আপনাকে এমনকি বাটনে আঘাত করার আগে মার্জ পরীক্ষা করার অনুমতি দিতে পারে।

// উপরের অংশটুকু শুধু গুগল ট্রান্সলেটর দিয়ে ট্রান্সলেট করা আছে 

//নট ডান শেষ

 

Pull request

আপনি শুধুমাত্র প্রধান বা mster branch কে টার্গেট করে এমন pull request খুলতে পারবেন না, আপনি আসলে নেটওয়ার্কের যেকোনো branch কে লক্ষ্য করে একটি pull request খুলতে পারেন। এমনকি অন্য একটি pull request কেও লক্ষ্য করতে পারেন।

আপনি যদি একটি পুল রিকোয়েস্ট দেখতে পান যা সঠিক দিকে এগোচ্ছে এবং আপনার কাছে এমন একটি পরিবর্তনের ধারণা থাকে যা এটির উপর নির্ভর করে বা আপনি নিশ্চিত নন যে এটি একটি ভাল ধারণা, অথবা আপনার কাছে টার্গেট branch এ পুশ অ্যাক্সেস নেই, আপনি সরাসরি এটিতে একটি pull request খুলতে পারেন।

আপনি যখন একটি pull request খুলতে যান, তখন বাম দিকে আপনি নির্দিষ্ট করে দিতে পারেন আপনি কোন branch এ pull করতে চান এবং কোনটি থেকে আপনি pull request করছেন। আপনি যদি সেই বাক্সের ডানদিকে “Edit” বাটনটি চাপেন তবে আপনি কেবল branch গুলিই নয়, fork টিও পরিবর্তন করতে পারবেন।

maint-04-target
চিত্র 117. ম্যানুয়ালি pull request টার্গেট fork এবং branch পরিবর্তন করুন

এখানে আপনি মোটামুটি সহজে নির্দিষ্ট করতে পারেন আপনার নতুন branchটিকে অন্য একটি pull request বা প্রজেক্টের অন্য fork এ merge করতে চান।

উল্লেখ এবং বিজ্ঞপ্তি

GitHub-এ একটি সুন্দর নোটিফিকেশন সিস্টেমও তৈরি করা হয়েছে যা আপনার কাছে প্রশ্ন থাকলে বা নির্দিষ্ট ব্যক্তি বা দলের কাছ থেকে প্রতিক্রিয়ার প্রয়োজন হলে কাজে আসতে পারে।

যেকোনো মন্তব্যে আপনি একটি @অক্ষর টাইপ করা শুরু করতে পারেন এবং এটি প্রকল্পে সহযোগী বা অবদানকারী ব্যক্তিদের নাম এবং ব্যবহারকারীর নাম দিয়ে সাজেষ্ট করবে।

maint-05-mentions
চিত্র 118. কাউকে উল্লেখ করতে @ টাইপ করা শুরু করুন

আপনি এমন একজন ব্যবহারকারীকেও উল্লেখ করতে পারেন যিনি সেই ড্রপডাউনে নেই।

একবার আপনি ব্যবহারকারীকে উল্লেখ করে একটি মন্তব্য পোস্ট করলে, সেই ব্যবহারকারীকে অবহিত করা হবে। এর মানে হল যে এটি লোকেদের ভোট দেওয়ার পরিবর্তে কথোপকথনে অংশগ্রহণ করানোর একটি সত্যিই কার্যকর উপায় হতে পারে। প্রায়শই GitHub-এ pull request এ লোকেরা তাদের দলে বা তাদের কোম্পানির অন্য লোকেদের একটি ইস্যু বা pull request এ পর্যালোচনা করার জন্য অংশগ্রহণ করবে। 

যদি কাউকে একটি পুল রিকোয়েস্ট বা ইস্যুতে উল্লেখ করা হয়, তবে তারা এতে “সাবস্ক্রাইব” হবে এবং এটিতে কিছু কার্যকলাপ ঘটলেই তারা বিজ্ঞপ্তি পেতে থাকবে। আপনি যদি এটি খোলেন, যদি আপনি রিপোজিটরিটি দেখছেন বা আপনি যদি কিছুতে মন্তব্য করেন তবে আপনাকে সাবস্ক্রাইব করা হবে। আপনি যদি আর বিজ্ঞপ্তিগুলি পেতে না চান, তাহলে পৃষ্ঠায় একটি “Unsubscribe” বাটন রয়েছে যা আপনি এটিতে আপডেটগুলি পাওয়া বন্ধ করতে ক্লিক করতে পারেন৷

maint-06-unsubscribe
চিত্র 119. একটি ইস্যু থেকে সদস্যতা ত্যাগ করুন

বিজ্ঞপ্তি পাতা

আপনি চাইলে নোটিফিকেশন কনফিগার করতে পারেন । আপনি যদি সেটিংস পৃষ্ঠা থেকে “Notification center” ট্যাবে যান, আপনি আপনার কাছে থাকা কিছু বিকল্প দেখতে পাবেন।

চিত্র 120। বিজ্ঞপ্তি কেন্দ্র বিকল্প
  1. “ইমেল” এবং “ওয়েব”-এর মাধ্যমে বিজ্ঞপ্তি পেতে পারেন এবং আপনি যখন কোনো জিনিসে সক্রিয়ভাবে অংশগ্রহণ করবেন এবং আপনি যে রিপোজিটরিগুলি দেখছেন সেখানে কার্যকলাপের জন্য আপনি কোন মাধ্যমে নোটিফিকেশন পাবেন সেটা আপনার পছন্দের উপর নির্ভর করে। 

    ওয়েব বিজ্ঞপ্তি

    ওয়েব বিজ্ঞপ্তিগুলি শুধুমাত্র GitHub-এ বিদ্যমান এবং আপনি শুধুমাত্র GitHub এ চেক করতে পারেন। যদি আপনার পছন্দগুলিতে এই বিকল্পটি নির্বাচন করা থাকে এবং আপনার জন্য একটি বিজ্ঞপ্তি ট্রিগার করা হয়, তাহলে আপনি Notification center যেমন দেখা যায় আপনার স্ক্রিনের শীর্ষে আপনার বিজ্ঞপ্তি আইকনের উপরে একটি ছোট নীল বিন্দু দেখতে পাবেন ৷

maint-08-notifications-page
চিত্র 121. বিজ্ঞপ্তি কেন্দ্র

আপনি যদি এটিতে ক্লিক করেন, আপনি প্রজেক্ট অনুসারে গোষ্ঠীবদ্ধ সমস্ত আইটেমের একটি তালিকা দেখতে পাবেন। আপনি বাম দিকের সাইডবারে একটি নির্দিষ্ট প্রজেক্টের নামের উপর ক্লিক করে তার বিজ্ঞপ্তিগুলি ফিল্টার করতে পারেন৷ আপনি যেকোন বিজ্ঞপ্তির পাশে চেকমার্ক আইকনে ক্লিক করে বিজ্ঞপ্তিটি স্বীকার করতে পারেন, অথবা গ্রুপের শীর্ষে চেকমার্কে ক্লিক করে একটি প্রজেক্টের সমস্ত বিজ্ঞপ্তি স্বীকার করতে পারেন৷ প্রতিটি চেকমার্কের পাশে একটি নিঃশব্দ বাটন রয়েছে যা আপনি সেই আইটেমটিতে আর কোনো বিজ্ঞপ্তি না পেতে ক্লিক করতে পারেন৷

এই সমস্ত সরঞ্জামগুলি বিপুল সংখ্যক বিজ্ঞপ্তি পরিচালনা করার জন্য খুব দরকারী। অনেক GitHub পাওয়ার ব্যবহারকারীরা কেবল ইমেল বিজ্ঞপ্তিগুলি সম্পূর্ণরূপে বন্ধ করে দেবে এবং এই স্ক্রীনের মাধ্যমে তাদের সমস্ত বিজ্ঞপ্তি পরিচালনা করবে।

ইমেল বিজ্ঞপ্তি

ইমেল বিজ্ঞপ্তিগুলি হল অন্য উপায় যা আপনি গিটহাবের মাধ্যমে বিজ্ঞপ্তিগুলি পরিচালনা করতে পারেন। আপনি যদি এটি চালু করে থাকেন তবে আপনি প্রতিটি বিজ্ঞপ্তির জন্য ইমেল পাবেন। আমরা ইমেল বিজ্ঞপ্তি এবং একটি নতুন pull request এর ইমেইল বিজ্ঞপ্তি এর উদাহরণ দেখেছি । ইমেলগুলিও সঠিকভাবে থ্রেড করা হবে, যদি আপনি একটি থ্রেডিং ইমেল ক্লায়েন্ট ব্যবহার করেন তবে এটি চমৎকার।

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

উদাহরণস্বরূপ, নিচে একটি পুল রিকোয়েস্টের ইমেইল নোটিফিকেশন দেখানো হল:

				
					To: tonychacon/fade <fade@noreply.github.com>
Message-ID: <tonychacon/fade/pull/1@github.com>
Subject: [fade] Wait longer to see the dimming effect better (#1)
X-GitHub-Recipient: tonychacon
List-ID: tonychacon/fade <fade.tonychacon.github.com>
List-Archive: https://github.com/tonychacon/fade
List-Post: <mailto:reply+i-4XXX@reply.github.com>
List-Unsubscribe: <mailto:unsub+i-XXX@reply.github.com>,...
X-GitHub-Recipient-Address: tchacon@example.com

				
			

এটিও লক্ষণীয় যে যদি আপনার ইমেল এবং ওয়েব বিজ্ঞপ্তি উভয়ই সক্ষম থাকে এবং আপনি বিজ্ঞপ্তিটির ইমেল সংস্করণটি পড়েন, তাহলে ওয়েব সংস্করণটি পঠিত হিসাবে চিহ্নিত করা হবে যদি আপনার মেইল ​​ক্লায়েন্টে ছবি অনুমোদিত থাকে।

বিশেষ ফাইল কিছু বিশেষ ফাইল আছে যেগুলি GitHub লক্ষ্য করবে যদি সেগুলি আপনার repository তে থাকে। README প্রথমটি হল READMEফাইল, যা প্রায় যেকোনো বিন্যাসের হতে পারে যা GitHub গাইড হিসাবে স্বীকৃতি দেয়। উদাহরণস্বরূপ, এটি হতে পারে READMEREADME.mdREADME.asciidoc, ইত্যাদি। যদি GitHub আপনার উৎসে একটি README ফাইল দেখে, তাহলে এটি প্রজেক্টের ল্যান্ডিং পৃষ্ঠায় রেন্ডার করবে। অনেক টিম এই ফাইলটি ব্যবহার করে এমন কারোর জন্য যারা রিপোজিটরি বা প্রকল্পে নতুন।এটি সাধারণত নিন্মুক্ত জিনিসগুলি অন্তর্ভুক্ত করে:
  • প্রজেক্ট কি জন্য
  • কিভাবে কনফিগার এবং ইন্সটল করবেন
  • এটি কীভাবে ব্যবহার করবেন বা এটি চালু করবেন তার একটি উদাহরণ
  • লাইসেন্স যে প্রজেক্টের অধীনে দেওয়া হয়
  • কিভাবে এতে অবদান রাখতে হয়
যেহেতু GitHub এই ফাইলটি রেন্ডার করবে, আপনি বোঝার সহজতার জন্য এতে ছবি বা লিঙ্ক এম্বেড করতে পারেন। অবদান GitHub যে অন্য বিশেষ ফাইলটিকে স্বীকৃতি দেয় সেটি হল CONTRIBUTINGফাইল। যদি আপনার কাছে CONTRIBUTINGযেকোন ফাইল এক্সটেনশনের নামে একটি ফাইল থাকে, এটি GitHub দেখাবে একটি পুল রিকোয়েস্ট খোলার সময় যখন কেউ একটি পুল রিকোয়েস্ট খোলা শুরু করে তখন।  
maint-09-contrib
চিত্র 122. একটি পুল রিকোয়েস্ট খোলা যখন একটি অবদান ফাইল বিদ্যমান

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

প্রজেক্ট প্রশাসন

সাধারণত একটি একক প্রজেক্টের সাথে আপনি করতে পারেন এমন অনেক প্রশাসনিক জিনিস নেই, তবে কয়েকটি আইটেম রয়েছে যা আগ্রহের হতে পারে।

ডিফল্ট branch পরিবর্তন

আপনি যদি আপনার ডিফল্ট branchহিসাবে “master” ছাড়া অন্য একটি branch ব্যবহার করেন যা আপনি চান যে লোকেরা পুল রিকোয়েস্ট চালু করুক বা ডিফল্টরূপে দেখুক, আপনি “বিকল্প” ট্যাবের অধীনে আপনার রিপজিটরির  সেটিংস পৃষ্ঠায় এটি পরিবর্তন করতে পারেন।

maint-10-default-branch
চিত্র 123. একটি প্রজেক্টের জন্য ডিফল্ট branchপরিবর্তন করুন

ড্রপডাউনে কেবল ডিফল্ট branch টি পরিবর্তন করুন এবং এটি তখন থেকে সমস্ত বড় ক্রিয়াকলাপের জন্য ডিফল্ট হবে, যখন কেউ রিপোজিটরিটি ক্লোন করে তখন ডিফল্টরূপে কোন branch টি চেক আউট করা হয়।

একটি প্রজেক্ট স্থানান্তর

আপনি যদি গিটহাবের অন্য ব্যবহারকারী বা সংস্থার কাছে একটি প্রজেক্ট স্থানান্তর করতে চান তবে আপনার রিপোজিটরি সেটিংস পৃষ্ঠার একই “বিকল্প” ট্যাবের নীচে একটি “Transfer owner” বিকল্প রয়েছে যা আপনাকে এটি করতে দেয়৷

maint-11-transfer
চিত্র 124. একটি প্রজেক্ট অন্য গিটহাব ব্যবহারকারী বা সংস্থার কাছে স্থানান্তর করুন

এটি সহায়ক যদি আপনি একটি প্রজেক্ট পরিত্যাগ করেন এবং কেউ এটি গ্রহণ করতে চায়, বা যদি আপনার প্রজেক্টটি বড় হয়ে উঠছে এবং এটিকে একটি সংস্থায় স্থানান্তর করতে চান।

এটি শুধুমাত্র তার সমস্ত পর্যবেক্ষক এবং তারা সহ রিপোজিটরিকে অন্য জায়গায় নিয়ে যায় না, এটি আপনার URL থেকে নতুন জায়গায় একটি পুনঃনির্দেশও সেট আপ করে৷এটি কেবল ওয়েব অনুরোধ নয়, গিট থেকে ক্লোন এবং আনয়নগুলিকেও পুনঃনির্দেশ করবে।