প্যাচ জমা দিন

এই পৃষ্ঠাটি Android ওপেন সোর্স প্রজেক্টে (AOSP) একটি প্যাচ জমা দেওয়ার সম্পূর্ণ প্রক্রিয়া বর্ণনা করে, কীভাবে একটি পর্যালোচনার অনুরোধ করা যায় এবং Gerrit- এর সাথে আপনার পরিবর্তনগুলি ট্র্যাক করা সহ। Gerrit হল একটি ওয়েব-ভিত্তিক কোড রিভিউ সিস্টেম যা গিট ব্যবহার করে। গেরিট সমস্ত অনুমোদিত ব্যবহারকারীদের পরিবর্তনগুলি জমা দেওয়ার অনুমতি দিয়ে গিট-এর আরও কেন্দ্রীভূত ব্যবহারকে উত্সাহিত করে, যা তারা কোড পর্যালোচনা পাস করলে স্বয়ংক্রিয়ভাবে একত্রিত হয়। উপরন্তু, Gerrit পর্যালোচনা সহজ করে তোলে, ব্রাউজারে পাশাপাশি পরিবর্তনগুলি প্রদর্শন করে এবং ইনলাইন মন্তব্যগুলি সক্ষম করে৷

পূর্বশর্ত

শুরু করতে, নিশ্চিত করুন যে আপনি নিম্নলিখিতগুলি করেছেন:

সম্পদ

  • রেপো এবং গিট সম্পর্কে বিশদ বিবরণের জন্য, উত্স নিয়ন্ত্রণ সরঞ্জাম পৃষ্ঠাটি দেখুন।
  • অ্যান্ড্রয়েড ওপেন সোর্স সম্প্রদায়ের মধ্যে বিভিন্ন ভূমিকা সম্পর্কে তথ্যের জন্য, প্রকল্পের ভূমিকা পৃষ্ঠাটি দেখুন৷
  • অ্যান্ড্রয়েড প্ল্যাটফর্মে কোড অবদান রাখার বিষয়ে লাইসেন্স সংক্রান্ত তথ্যের জন্য, লাইসেন্স পৃষ্ঠাটি দেখুন।

গিট কনফিগার করুন

Gerrit ব্যবহার করতে, আপনার ইমেল একটি নিবন্ধিত Google অ্যাকাউন্টের সাথে যুক্ত হতে হবে। একটি নিবন্ধিত Google অ্যাকাউন্টের সাথে যুক্ত একটি নাম এবং ইমেল ঠিকানা সহ গিট কনফিগার করতে নিম্নলিখিত কমান্ডগুলি চালান:

git config --global user.name Your Name
git config --global user.email your_email@gmail.com
    

সার্ভারের সাথে প্রমাণীকরণ করুন

আপনি যদি অন্য ব্যবহারকারীদের সাথে একটি আইপি ঠিকানা ভাগ করেন, তবে নিয়মিত ব্যবহারের ধরণগুলির জন্যও কোটা ট্রিগার হতে পারে৷ এটি ঘটতে পারে যখন, উদাহরণস্বরূপ, অনেক ব্যবহারকারী অল্প সময়ের মধ্যে একই IP ঠিকানা থেকে নতুন ক্লায়েন্ট সিঙ্ক করে। আইপি ঠিকানা নির্বিশেষে প্রমাণীকৃত অ্যাক্সেস প্রতিটি ব্যবহারকারীর জন্য একটি পৃথক কোটা ব্যবহার করে। প্রমাণীকৃত অ্যাক্সেস সক্রিয় করার বিষয়ে পড়তে, প্রমাণীকরণ ব্যবহার করা দেখুন।

একটি রেপো শাখা শুরু করুন

প্রতিটি পরিবর্তনের জন্য যা আপনি করতে চান, প্রাসঙ্গিক গিট সংগ্রহস্থলের মধ্যে একটি নতুন শাখা শুরু করুন:

repo start NAME .

You can start several independent branches at the same time in the same repository. The branch NAME is local to your workspace and isn't included either on Gerrit or in the final source tree.

Make your change

Modify the source files, and test your changes.

For any changes made, follow License header best practices.

Commit your change

Commit the changes to your local repository with these commands:

git add -A
git commit -s

বর্ণনা পরিবর্তন করুন

  • লাইন 1: শিরোনাম

    একটি এক-লাইন সারাংশ প্রদান করুন ( সর্বোচ্চ 50 অক্ষর)

    এই বিন্যাসটি গিট এবং গেরিট বিভিন্ন প্রদর্শনের জন্য ব্যবহার করে। এটি আপনার প্রতিশ্রুতি বার্তার সবচেয়ে গুরুত্বপূর্ণ, সবচেয়ে ঘন অংশ। আপনি যে এলাকাটি পরিবর্তন করেছেন তা বর্ণনা করতে উপসর্গ ব্যবহার করার কথা বিবেচনা করুন, তারপরে আপনি এই প্রতিশ্রুতিতে যে পরিবর্তনটি করেছেন তার একটি বিবরণ অনুসরণ করুন, যেমন এটির উপসর্গ হিসাবে ui রয়েছে:

    ui: Removes deprecated widget

  • লাইন 2: ফাঁকা

    এই লাইনটি সবসময় ফাঁকা রাখুন।

  • লাইন 3: শরীর

    এই লাইন থেকে শুরু করে একটি দীর্ঘ বিবরণ লিখুন।

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

    অন্য কোনো অবদানকারী যখন এই বৈশিষ্ট্যটিতে কাজ করে তখন গুরুত্বপূর্ণ হতে পারে এমন কোনো অনুমান বা পটভূমির তথ্যের একটি সংক্ষিপ্ত নোট অন্তর্ভুক্ত করুন।

একটি অনন্য পরিবর্তন আইডি এবং আপনার নাম এবং ইমেল, যা repo init এর সময় প্রদান করা হয়, স্বয়ংক্রিয়ভাবে আপনার প্রতিশ্রুতি বার্তায় যোগ করা হয়।

এখানে একটি উদাহরণ কমিট বার্তা আছে:

Line 1, Headline - a short description

Line 3, Body - Add the detailed description of your patch here. Use as many lines
as needed. You can write an overall description, then list specifics.

I6e3c64e7a:Added a new widget.
I60c539a8f:Fixed the spinning image.
To read a blog about good commit descriptions (with examples), see How to Write a Git Commit Message by Chris Beams.

Upload to Gerrit

After you commit your change to your personal history, upload it to Gerrit with this command:

repo upload

If you started multiple branches in the same repository, you're prompted to select which ones to upload.

After a successful upload, Repo provides you with the URL of a new page on Gerrit. Click the link that Repo gives you to view your patch on the review server, add comments, or request specific reviewers for your patch.

Request a review

After you've uploaded your changes to Gerrit, the patch must be reviewed and approved by the appropriate code owners. Locate code owners in OWNERS files.

To find the appropriate code owners and add them as reviewers for your change, follow these steps.

  1. Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.

    suggest owners link in Gerrit
    Figure 1. Suggest owners link in Gerrit
  2. Add code owners from the list as reviewers for your patch.

To determine the status of the files in your patch, check for the following icons next to the files in the patch.

  • (checkmark icon): Approved by code owner
  • (cross icon): Not approved by code owner
  • (clock icon): Pending approval by code owner
Figure 2. Example of files with icons showing code owner approval status

Upload a replacement patch

Suppose a reviewer looked at your patch and requested a small modification. You can amend your commit within Git, which results in a new patch on Gerrit that has the same change ID as the original.

git add -A
git commit --amend

আপনি যখন সংশোধিত প্যাচ আপলোড করেন, তখন এটি Gerrit এবং আপনার স্থানীয় গিট ইতিহাসে মূলটিকে প্রতিস্থাপন করে।

সিঙ্ক দ্বন্দ্ব সমাধান করুন

যদি অন্য প্যাচগুলি উৎস ট্রিতে জমা দেওয়া হয় যা আপনার সাথে বিরোধিতা করে, তাহলে উৎস সংগ্রহস্থলের নতুন HEAD এর উপরে আপনার প্যাচ রিবেস করুন। এটি করতে, এই কমান্ডটি চালান:

repo sync

repo sync কমান্ড সোর্স সার্ভার থেকে আপডেট আনে, তারপর স্বয়ংক্রিয়ভাবে নতুন রিমোট HEAD এ আপনার HEAD রিবেস করার চেষ্টা করে।

যদি স্বয়ংক্রিয় রিবেস ব্যর্থ হয়, একটি ম্যানুয়াল রিবেস সঞ্চালন করুন।

repo rebase

রিবেস দ্বন্দ্ব মোকাবেলা করার জন্য আরেকটি টুল হল git mergetool । যখন আপনি সফলভাবে বিরোধপূর্ণ ফাইলগুলি মার্জ করেছেন, তখন এই কমান্ডটি চালান:

git rebase --continue

স্বয়ংক্রিয় বা ম্যানুয়াল রিবেস সম্পূর্ণ হওয়ার পরে, আপনার রিবেসড প্যাচ জমা দিতে repo upload চালান।

একটি জমা অনুমোদন করা হয় পরে

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

আপস্ট্রিম প্রকল্পের জন্য

Android সফটওয়্যার ম্যানেজমেন্টে বর্ণিত লিনাক্স কার্নেল এবং ওয়েবকিটের মতো অন্যান্য ওপেন সোর্স প্রজেক্টের একটি সংখ্যা ব্যবহার করে। external/ এর অধীনে থাকা বেশিরভাগ প্রকল্পের জন্য, পরিবর্তনগুলি আপস্ট্রিম করুন, তারপরে আপনার পরিবর্তনগুলিকে ধারণ করে এমন নতুন আপস্ট্রিম রিলিজের Android রক্ষণাবেক্ষণকারীদের জানান৷

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

একটি আকর্ষণীয় বিশেষ ক্ষেত্রে বায়োনিক। বেশিরভাগ কোডই BSD-এর থেকে আছে, তাই যতক্ষণ না পরিবর্তনটি বায়োনিক-এ নতুন কোড না হয়, অনুগ্রহ করে একটি আপস্ট্রিম ফিক্স করুন, তারপর উপযুক্ত BSD থেকে সম্পূর্ণ নতুন ফাইলের টান নিন।

অ্যান্ড্রয়েড কার্নেল

আপস্ট্রিম সব পরিবর্তন করুন. সাধারণ নির্দেশনার জন্য, GKI পৃষ্ঠার জন্য অ্যান্ড্রয়েড কার্নেল অবদান নির্দেশিকা এবং বিকাশ কার্নেল কোড অনুসরণ করুন।

আইসিইউ

ICU-TC হোম পেজে external/icu ( icu4c/ এবং icu4j/ ফোল্ডারে) ICU প্রকল্পের সমস্ত পরিবর্তন করুন। আরো জন্য ICU বাগ এবং বৈশিষ্ট্য অনুরোধ জমা দেখুন. সমস্ত আপস্ট্রিম জিরা অনুরোধে "অ্যান্ড্রয়েড" লেবেল যোগ করুন।

সিএলডিআর

আইসিইউতে বেশিরভাগ ভাষাগত ডেটা ইউনিকোড সিএলডিআর প্রকল্প থেকে আসে। CLDR-এ অবদান অনুযায়ী সমস্ত অনুরোধ আপস্ট্রিম জমা দিন এবং লেবেল যোগ করুন “android”।

এলএলভিএম/ক্ল্যাং/কম্পাইলার-আরটি

এলএলভিএম কম্পাইলার ইনফ্রাস্ট্রাকচার পৃষ্ঠায় LLVM-সম্পর্কিত প্রকল্পগুলিতে ( external/clang , external/compiler-rt , external/llvm ) সমস্ত পরিবর্তন করুন।

mksh

mirbsd.org ডোমেনে (সেখানে জমা দেওয়ার জন্য কোনো সাবস্ক্রিপশনের প্রয়োজন নেই) অথবা লঞ্চপ্যাডে miros-mksh এ একটি ইমেল পাঠিয়ে external/mksh এ MirBSD Korn Shell প্রজেক্টে সমস্ত পরিবর্তন করুন।

OpenSSL

OpenSSL পৃষ্ঠায় external/openssl এ OpenSSL প্রকল্পে সমস্ত পরিবর্তন করুন।

V8

V8 ইস্যু পৃষ্ঠায় external/v8 এ V8 প্রকল্পের সমস্ত পরিবর্তন জমা দিন। বিস্তারিত জানার জন্য V8-এ অবদান দেখুন।

ওয়েবকিট

ওয়েবকিট পৃষ্ঠায় external/webkit ওয়েবকিট প্রকল্পে সমস্ত পরিবর্তন করুন। একটি WebKit বাগ ফাইল করে প্রক্রিয়া শুরু করুন। বাগটিতে, প্ল্যাটফর্ম এবং OS ক্ষেত্রের জন্য Android ব্যবহার করুন শুধুমাত্র যদি বাগটি Android-এর জন্য নির্দিষ্ট হয়। একটি প্রস্তাবিত সমাধান যোগ করার পরে এবং পরীক্ষাগুলি অন্তর্ভুক্ত করার পরে বাগগুলি পর্যালোচকদের মনোযোগ পাওয়ার সম্ভাবনা অনেক বেশি। বিস্তারিত জানার জন্য ওয়েবকিটে অবদান রাখার কোড দেখুন।

zlib

zlib হোম পেজে external/zlib এ zlib প্রোজেক্টে সমস্ত পরিবর্তন করুন।