কিভাবে অবদান

অবদানকারী লাইসেন্স চুক্তি (CLAs)

আমরা আপনার কোড প্যাচগুলি গ্রহণ করার আগে, আপনাকে একজন ব্যক্তি বা একটি কর্পোরেট অবদানকারী লাইসেন্স চুক্তি (CLA) জমা দিতে হবে:

  • আপনি যদি একজন স্বতন্ত্র লিখিত মূল সোর্স কোড হন এবং আপনি নিশ্চিত হন যে আপনি মেধা সম্পত্তির মালিক, তাহলে একটি পৃথক CLA জমা দিন।
  • আপনি যদি একটি কোম্পানির জন্য কাজ করেন, তাহলে আপনার কোম্পানিকে অবশ্যই একটি কর্পোরেট CLA জমা দিতে হবে যাতে আপনি এই ক্লায়েন্ট লাইব্রেরিতে আপনার কাজের অবদান রাখতে পারবেন।

উপযুক্ত CLA অ্যাক্সেস করতে উপরের দুটি লিঙ্কের যেকোন একটি অনুসরণ করুন এবং কীভাবে এটিতে স্বাক্ষর করতে হবে এবং ফেরত দিতে হবে তার নির্দেশাবলী। একবার আমরা এটি গ্রহণ করলে, আমরা আপনাকে অবদানকারীদের অফিসিয়াল তালিকায় যোগ করতে পারি।

প্যাচ জমা দেওয়ার ওভারভিউ

এই প্রকল্পে কোড অবদান রাখতে, এই সাধারণ পদক্ষেপগুলি অনুসরণ করুন:

  1. উপরে বর্ণিত হিসাবে একটি অবদানকারী লাইসেন্স চুক্তি স্বাক্ষর করুন।
  2. আমাদের আলোচনা গোষ্ঠীতে যোগ দিন।
  3. আপনার উন্নয়ন পরিবেশ সেট আপ করুন.
  4. আমাদের গিটহাব ইস্যু ট্র্যাকারে একটি ইস্যু (একটি বাগ রিপোর্ট বা বৈশিষ্ট্য অনুরোধ) এর সাথে আপনার প্রতিটি পরিবর্তনকে সংযুক্ত করুন। ইতিমধ্যে একটি না থাকলে একটি নতুন ইস্যু তৈরি করুন এবং এটি নিজেকে বরাদ্দ করুন৷
  5. কোড দেখুন, codereview.appspot.com- এ একটি নতুন সমস্যা তৈরি করুন এবং কোড পর্যালোচনা প্রক্রিয়া সম্পূর্ণ করুন। এই সমস্ত প্রক্রিয়ার জন্য বিস্তারিত নির্দেশাবলী নীচে দেওয়া হয়েছে।
  6. আপনার কোড পর্যালোচনা করা হয় এবং আপনি অনুমোদন পাওয়ার পরে, কোড কমিট. আপনি যদি একজন অফিসিয়াল কন্ট্রিবিউটর না হন, তাহলে একজন কন্ট্রিবিউটর আপনার চেঞ্জসেটকে অফিসিয়াল রিপোজিটরিতে টেনে আনে।

আমরা নিম্নলিখিত সরঞ্জাম এবং প্রক্রিয়া ব্যবহার করি:

  • আমরা আমাদের সংস্করণ নিয়ন্ত্রণ সিস্টেম হিসাবে গিট ব্যবহার করি।
  • আমরা বিল্ড সিস্টেমের পাশাপাশি একটি বাইনারি বিতরণ সিস্টেমের জন্য মাভেন ব্যবহার করি।
  • আমরা কোড পর্যালোচনার জন্য codereview.appspot.com ব্যবহার করি। (কিন্তু মনে রাখবেন যে codereview.appspot.com টুলে, "ইস্যু" শব্দের অর্থ একটি কোড-রিভিউ অনুরোধ, যখন GitHub ইস্যু ট্র্যাকারে, একটি "ইস্যু" হল একটি বৈশিষ্ট্য অনুরোধ বা বাগ রিপোর্ট।)

আপনি যদি Eclipse ডেভেলপার হন, তাহলে .settings ডিরেক্টরিতে নির্দিষ্ট করা প্রজেক্ট-নির্দিষ্ট কোড ফর্ম্যাটিং ব্যবহার করুন যা Eclipse দ্বারা স্বয়ংক্রিয়ভাবে প্রক্রিয়া করা হয়।

উন্নয়ন পরিবেশ স্থাপন করা

পূর্বশর্ত

  1. জাভা 6 ইনস্টল করুন। আপনাকে আপনার JAVA_HOME ভেরিয়েবল সেট করতে হতে পারে।
  2. Maven ইনস্টল করুন। (এই নথিটি ধরে নেয় যে আপনার ম্যাভেন কমান্ডগুলির সাথে প্রাথমিক পরিচিতি রয়েছে।)
  3. ঐচ্ছিক: Android SDK ইনস্টল করুন এবং আপনার ANDROID_HOME ভেরিয়েবলটিকে Android এর জন্য ইনস্টল করার অবস্থানে সেট করুন৷
  4. Git ইনস্টল করুন।

গিট সেট আপ করা হচ্ছে

আপনার ডিফল্ট প্রদর্শন নাম এবং ইমেল ঠিকানা সেট করতে git config কমান্ডটি ব্যবহার করুন:

git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"

গিট থেকে গিটহাবের সাথে প্রমাণীকরণ করা হচ্ছে

GitHub থেকে কোডটি পরীক্ষা করতে সক্ষম হওয়ার জন্য, আপনাকে অবশ্যই এইচটিটিপি বা এসএসএইচ ব্যবহার করে গিটহাবের সাথে প্রমাণীকরণ করতে হবে। আপনি নীচের নির্দেশাবলী চালিয়ে যাওয়ার আগে, কিভাবে HTTPS বা SSH ক্লোনিং দিয়ে শুরু করবেন সে সম্পর্কে GitHub নির্দেশাবলী পড়ুন। আপনি যদি সাধারণভাবে গিট সম্পর্কে আরও জানতে চান, প্রো গিট একটি ভাল সংস্থান।

কোড চেক আউট

HTTPS ব্যবহার করে

ডেভেলপমেন্ট "মাস্টার" শাখায় লাইব্রেরি সংগ্রহস্থল পরীক্ষা করতে, নিম্নলিখিত কমান্ডটি চালান:

git clone https://github.com/google/google-api-java-client.git

SSH ব্যবহার করে

ডেভেলপমেন্ট "মাস্টার" শাখায় লাইব্রেরি রিপোজিটরি চেক করতে, নিশ্চিত করুন যে আপনার কাছে গিটহাব রিপোজিটরিতে লেখার অ্যাক্সেস আছে, তারপরে নিম্নলিখিত কমান্ডটি চালান:

git clone git@github.com:google/google-api-java-client.git

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

git checkout --track origin/1.12

মাস্টার শাখায় ফিরে যেতে:

git checkout master

GitHub সংগ্রহস্থল থেকে সর্বশেষ পরিবর্তনগুলি টানতে এবং আপনার স্থানীয় কাজের গাছটিকে সর্বশেষ প্রতিশ্রুতিতে আপডেট করতে:

git pull

মাভেন

Google Play পরিষেবা ইনস্টল করুন

প্রথমবার যখন আপনি প্রজেক্ট সেট আপ করবেন, আপনাকে google-play-services.jar ফাইলটি ইনস্টল করতে হবে। এটা করতে:

  1. Eclipse চালু করুন এবং Window > Android SDK Manager নির্বাচন করুন বা কমান্ড লাইনে android চালান।
  2. প্যাকেজ তালিকার নীচে স্ক্রোল করুন এবং অতিরিক্ত > Google Play পরিষেবা নির্বাচন করুন।
mvn install:install-file \
           -Dfile=$ANDROID_HOME/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar \
           -DgroupId=com.google.android.google-play-services \
           -DartifactId=google-play-services \
           -Dversion=1 \
           -Dpackaging=jar

প্রকল্পটি কম্পাইল করুন

mvn clean install

Maven একটি স্থানীয় সংগ্রহস্থলে সংকলিত বাইনারিগুলি ইনস্টল করে (উদাহরণস্বরূপ ~/.m2/repository)। এটি Maven কেন্দ্রীয় সংগ্রহস্থল থেকে আনার আগে সেই সংগ্রহস্থলে বাইনারিগুলির জন্য অনুসন্ধান করে।

দ্রষ্টব্য: এই লাইব্রেরিটি google-http-java-client এবং google-oauth-java-client এর উপর নির্ভর করে। তিনটি লাইব্রেরির একটি নতুন সংস্করণে কাজ করার সময় যা এখনও মাভেন সেন্ট্রালে প্রকাশিত হয়নি, আপনাকে অবশ্যই সেগুলিকে নিম্নলিখিত ক্রমে কম্পাইল করতে হবে:

  1. google-http-জাভা-ক্লায়েন্ট
  2. google-oauth-java-ক্লায়েন্ট
  3. google-api-java-client এই ক্রমে কম্পাইল করা নিশ্চিত করে যে Maven নির্ভরশীল লাইব্রেরি সংকলনের জন্য কম্পাইল করা বাইনারিগুলি তুলে নেয়।

কোড পর্যালোচনা প্রক্রিয়া

upload.py স্ক্রিপ্ট ডাউনলোড করা হচ্ছে

upload.py স্ক্রিপ্ট ডাউনলোড করুন এবং ঐচ্ছিকভাবে এটি আপনার PATH-এ যোগ করুন।

আপনি যখন প্রথমবার upload.py চালান, এটি আপনাকে একটি অ্যাপ্লিকেশন-নির্দিষ্ট পাসওয়ার্ড চায়:

Email (login for uploading to codereview.appspot.com): your_email_address@yourdomain.com
Password for your_email_address@yourdomain.com: 

পর্যালোচনার জন্য আপনার কোড প্রস্তুত করা হচ্ছে

আপনি পর্যালোচনার জন্য কোড পাঠানোর আগে, আপনার কোডে পিছনের সামঞ্জস্যের সমস্যাগুলি ধরতে আপনাকে অবশ্যই Clirr চালাতে হবে। যদি কোনো ত্রুটি রিপোর্ট করা হয়, তাহলে আপনাকে হয় সেগুলি ঠিক করতে হবে বা clirr-ignored-differences.xml ফাইলটি আপডেট করতে হবে৷

mvn -q clirr:check

কোডে বাগ ধরার জন্য আপনাকে অবশ্যই FindBugs টুল চালাতে হবে। যদি কোনো ত্রুটি রিপোর্ট করা হয়, তাহলে আপনাকে হয় সেগুলি ঠিক করতে হবে অথবা findbugs-exclude.xml ফাইলটি আপডেট করতে হবে৷ (উল্লেখ্য যে FindBugs খুব ধীর।)

mvn findbugs:check

একবার আপনার পরিবর্তন সমস্ত পরীক্ষায় উত্তীর্ণ হয়ে গেলে, পরিবর্তনটি সূচকে যোগ করুন (গিট স্টেজিং এলাকা):

git add .

আপনার যোগ করা, পরিবর্তিত বা মুছে ফেলা সমস্ত ফাইল সূচীতে প্রতিফলিত হয়েছে কিনা তা দুবার পরীক্ষা করুন:

git status

git status আউটপুটে, "প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি" নামক বিভাগটি পরীক্ষা করুন।

কোড পর্যালোচনা শুরু হচ্ছে

পর্যালোচনার জন্য প্রস্তুত হলে, codereview.appspot.com-এ একটি নতুন সমস্যা তৈরি করুন:

upload.py --rev=HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...

আপনি আরও পরিবর্তন করার পরে, আপনার নতুন পরিবর্তনগুলি স্টেজ করুন। একটি নতুন প্যাচ আপলোড করতে, উদাহরণস্বরূপ 123456 নম্বর ইস্যু করার জন্য, নিম্নলিখিত কমান্ডটি চালান:

upload.py --rev=HEAD -i 123456

আরও বিকল্পের জন্য, upload.py --help চালান।

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

আপনি স্থানীয়ভাবে প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলির জন্যও upload.py ব্যবহার করতে পারেন।

upload.py --rev=upstream/master:HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...

কোড পর্যালোচক

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

একটি পরিবর্তন আমদানি করা হচ্ছে

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

দূরবর্তী সংগ্রহস্থল থেকে সর্বশেষ প্রতিশ্রুতিগুলি টানতে এবং একত্রিত করতে:

git pull

আপনার কাজের গাছ এবং সূচকে কী আছে তা পরীক্ষা করতে:

git status

আপনার স্থানীয় গিট ক্লোনের মধ্যে একটি প্যাচ আমদানি করতে:

  1. codereview.appspot.com এর মধ্যে সমস্যাটি খুলুন।
  2. প্রশ্নে থাকা প্যাচের জন্য, প্যাচ স্পেসিফিকেশনের উপরের ডানদিকে "কাঁচা ডাউনলোড করুন" দেখুন।
  3. ফাইলটি আমদানি করার জন্য একটি URL পেতে "raw" এ ক্লিক করুন৷
  4. raw diff ফাইলটিকে আপনার স্থানীয় মেশিনে একটি নাম দিয়ে সংরক্ষণ করুন যেমন issue123456.diff।
  5. আপনার স্থানীয় গিট ওয়ার্কিং ট্রিতে যান এবং patch কমান্ড ব্যবহার করে ডিফ প্রয়োগ করুন:
patch -p1 < issue123456.diff

আপনি সঠিক পার্থক্যটি আমদানি করেছেন তা দুবার চেক করতে, আপনার কার্যকারী গাছে একটি git diff করুন।

চেঞ্জসেট পরীক্ষা করা হচ্ছে

পরীক্ষা চালাতে এবং ইনস্টল করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

mvn clean install checkstyle:check

codereview.appspot.com-এ একটি পরিবর্তন অনুমোদন করা

সাধারণভাবে, কোডটি GitHub সংগ্রহস্থলে পুশ করা যাবে না যতক্ষণ না কোড রিভিউয়ার কোডটি প্রস্তুত বলে সন্তুষ্ট হয়। সেই সময়ে, কনভেনশন হল "এলজিটিএম" (আমাকে ভালো লাগছে) বার্তা দিয়ে উত্তর দেওয়া।

কোড কমিটিং

গুরুত্বপূর্ণ: আপনি আপনার কোড কমিট করার আগে, আপনার ওয়ার্কিং ট্রিতে সর্বশেষ পরিবর্তনগুলি টানুন এবং আপনার ওয়ার্কিং ট্রিকে GitHub রিপোজিটরি থেকে সর্বশেষ প্রতিশ্রুতিতে আপডেট করুন:

git pull

যদি কোন দ্বন্দ্ব থাকে, সেগুলি সমাধান করুন, তারপরে আবার পাস করার জন্য সমস্ত পরীক্ষা পেতে ভুলবেন না।

স্থানীয়ভাবে কোড কমিট করতে:

git commit

নিচের মত একটি বার্তা লিখুন (ধরে নিচ্ছি যে আপনি গিটহাব ইস্যু ট্র্যাকারে তালিকাভুক্ত ইস্যু # 123 ঠিক করছেন বা বাস্তবায়ন করছেন):

#123: NullPointerException when passing null to processFoo()
http://codereview.appspot.com/123456/

প্রথম কোলন এবং বর্ণনার আগে:

  • যদি এটি ইস্যু ট্র্যাকারে একটি সমস্যার সমাধান হয়, তাহলে দেখানো হিসাবে ইস্যু নম্বরটি অন্তর্ভুক্ত করুন।
  • যদি এটি একটি নির্দিষ্ট শাখার জন্য পরিবর্তন হয়, তাহলে শাখা নম্বর অন্তর্ভুক্ত করুন।
  • আপনি এই committer হবেন, তবে দয়া করে পরিবর্তনের author হিসাবে চিহ্নিত করে ক্রেডিট দিন ( --author=<author> )।

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

GitHub সংগ্রহস্থলে পরিবর্তনটি পুশ করতে:

git push

যদি git push সময় আপনি আপডেটগুলি প্রত্যাখ্যান করার বিষয়ে একটি ত্রুটি বার্তা পান (সম্ভবত আপনি git pull চালাতে ভুলে গেছেন), সর্বশেষ পরিবর্তনগুলির সাথে কীভাবে একত্রিত হবেন এবং আপনার পরিবর্তনগুলিকে দূরবর্তী সংগ্রহস্থলে পুশ করবেন তা এখানে:

git pull
git commit
git push

ইস্যু বন্ধ করা

কোড-রিভিউ টুলে সমস্যাটি বন্ধ করা নিশ্চিত করুন। এটা করতে:

  1. codereview.appspot.com এ সমস্যাটি নির্বাচন করুন।
  2. "Id" এর পূর্বে, উপরের-বাম দিকে থাকা "X"-এ ক্লিক করুন।

একটি পরিবর্তন সেট আনপ্যাচ করা হচ্ছে

যদি কোনো কারণে আপনি আপনার আমদানি করা পরিবর্তনগুলি না করার সিদ্ধান্ত নেন, তাহলে এটি পরিত্রাণ পেতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন। সতর্কতা অবলম্বন করুন: এটি আক্ষরিক অর্থে আপনার সমস্ত স্থানীয় পরিবর্তনগুলিকে মুছে দেয়৷

git checkout -- .