এই পৃষ্ঠাটি Android ওপেন সোর্স প্রজেক্টে (AOSP) একটি কোড পরিবর্তন জমা দেওয়ার সম্পূর্ণ প্রক্রিয়া বর্ণনা করে, কীভাবে একটি পর্যালোচনার অনুরোধ করা যায় এবং আপনার পরিবর্তনগুলি ট্র্যাক করা যায়।
AOSP একটি Gerrit-এর উপর নির্ভর করে, একটি ওয়েব-ভিত্তিক কোড পর্যালোচনা সিস্টেম যেগুলি গিট ব্যবহার করে।
অবদানকারী লাইসেন্স চুক্তি স্বাক্ষর করুন
AOSP-এর জন্য কোনো কোড পরিবর্তন করার আগে, আপনাকে অবশ্যই কন্ট্রিবিউটর লাইসেন্স চুক্তি এবং শিরোনামগুলি পড়তে হবে এবং নিম্নলিখিত চুক্তিগুলির মধ্যে একটিতে স্বাক্ষর করতে হবে:
- একজন স্বতন্ত্র অবদানকারী হিসেবে শুধুমাত্র আপনার পক্ষ থেকে অবদান রাখছেন, ব্যক্তিগত অবদানকারী লাইসেন্স চুক্তিতে স্বাক্ষর করুন।
- একটি কর্পোরেশনের জন্য কর্মরত একজন কর্মচারী হিসাবে, নিশ্চিত করুন যে আপনার কোম্পানি কর্পোরেট কন্ট্রিবিউটর লাইসেন্স চুক্তিতে স্বাক্ষর করেছে যা আপনাকে তার পক্ষে অবদান রাখার জন্য অনুমোদন করে।
একটি শাখা চালু করুন
প্রতিটি কোড পরিবর্তনের জন্য যা আপনি করতে চান, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
প্রাসঙ্গিক গিট সংগ্রহস্থলের মধ্যে একটি নতুন শাখা শুরু করুন। একটি শাখা মূল ফাইলের একটি অনুলিপি নয়; এটি একটি নির্দিষ্ট প্রতিশ্রুতির একটি নির্দেশক, যা স্থানীয় শাখা তৈরি করা এবং তাদের মধ্যে পরিবর্তন করা একটি হালকা অপারেশন করে। শাখা ব্যবহার করে, আপনি একে অপরের থেকে পরিবর্তন সনাক্ত করতে পারেন। একটি শাখা শুরু করতে এই কমান্ডটি চালান:
repo start BRANCH_NAME
আপনি একই সংগ্রহস্থলে একই সময়ে একাধিক স্বাধীন শাখা শুরু করতে পারেন। শাখা BRANCH_NAME আপনার কর্মক্ষেত্রের স্থানীয় এবং গেরিট বা চূড়ান্ত উত্স গাছে অন্তর্ভুক্ত নয়৷ আপনি যে প্রকল্পে আছেন তার জন্য শাখাগুলিও নির্দিষ্ট, তাই একই পরিবর্তনের অংশ হিসাবে যদি আপনাকে বিভিন্ন প্রকল্পে ফাইল পরিবর্তন করতে হয়, তাহলে প্রতিটি প্রকল্পে যেখানে আপনি ফাইল পরিবর্তন করেন সেখানে আপনার একটি শাখার প্রয়োজন হবে।
(ঐচ্ছিক) যাচাই করুন যে শাখাটি তৈরি করা হয়েছে:
repo status .
আপনি আপনার নতুন তৈরি শাখা দেখতে হবে. যেমন:
project frameworks/native/ branch mynewbranch
আপনার পরিবর্তন করুন এবং পরীক্ষা করুন
আপনার পরিবর্তন করতে এবং পরীক্ষা করতে এই পদক্ষেপগুলি অনুসরণ করুন:
আপনি সবচেয়ে বর্তমান কোডবেসের সাথে কাজ করছেন তা নিশ্চিত করতে, পুরো কোডবেসের একটি সিঙ্ক করুন:
repo sync
সিঙ্ক করার সময় আপনার যদি কোনো দ্বন্দ্ব থাকে, সিঙ্ক দ্বন্দ্ব সমাধানের ধাপ 2-4 দেখুন।
পরিবর্তন করার জন্য কোড খুঁজুন। কোড খুঁজতে, Android কোড অনুসন্ধান ব্যবহার করার কথা বিবেচনা করুন। AOSP সোর্স কোড দেখতে আপনি Android কোড অনুসন্ধান ব্যবহার করতে পারেন যখন আপনি এটি ব্যবহার করেন তখন এটি বিন্যস্ত থাকে। আরও তথ্যের জন্য, কোড অনুসন্ধানের সাথে শুরু করা দেখুন। Android কোড অনুসন্ধানের মধ্যে
main
শাখার সমস্ত কোড দেখতে,https://cs.android.com/android/platform/superproject/main
এ নেভিগেট করুন।পরিবর্তন বা উৎস ফাইল যোগ করুন. যেকোনো পরিবর্তনের জন্য:
আপনার বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করতে হবে কিনা তা নির্ধারণ করুন এবং যদি তাই হয়, আপনার নতুন কোডের জন্য সেগুলি প্রয়োগ করুন৷
ইনক্লুড লাইসেন্স হেডারে সেরা অনুশীলনগুলি অনুসরণ করুন।
জাভা কোডের জন্য, অবদানকারীদের জন্য AOSP জাভা কোড শৈলী অনুসরণ করুন।
AOSP-এর কিছু অংশ কোটলিন (
.kt
) এ লেখা আছে এবং আপনি প্ল্যাটফর্মের এমন এলাকায় কোটলিন ব্যবহার করতে পারেন যা ইতিমধ্যেই কোটলিনে লেখা আছে। অ্যান্ড্রয়েডে কোটলিন সম্পর্কে আরও তথ্যের জন্য, অ্যান্ড্রয়েড বিকাশকারী কোটলিন স্টাইল গাইড এবং কোটলিন-জাভা ইন্টারপ গাইড দেখুন। আরও বিস্তৃত কোটলিন নির্দেশিকা জন্য, কোটলিন ভাষার সাইট দেখুন।API লেখার সময়, Android API নির্দেশিকা অনুসরণ করুন। Android এর API সিদ্ধান্তের পিছনে প্রসঙ্গ দেখতে এই নির্দেশিকাগুলি ব্যবহার করুন৷ প্ল্যাটফর্ম API-এর সংযোজন এবং পরিবর্তনগুলি Metalava দ্বারা যাচাই করা হয়।
স্টেজ এবং আপনার পরিবর্তন প্রতিশ্রুতি
একটি কমিট হল গিট-এ পুনর্বিবেচনা নিয়ন্ত্রণের মৌলিক একক এবং এতে সমগ্র প্রকল্পের জন্য ডিরেক্টরি কাঠামো এবং ফাইলের বিষয়বস্তুর একটি স্ন্যাপশট থাকে। আপনার পরিবর্তন করতে এই পদক্ষেপগুলি অনুসরণ করুন:
ডিফল্টরূপে, গিট নিবন্ধন করে কিন্তু আপনার করা পরিবর্তনগুলি ট্র্যাক করে না। আপনার পরিবর্তনগুলি ট্র্যাক করার জন্য গিটকে নির্দেশ দিতে, আপনাকে অবশ্যই একটি প্রতিশ্রুতিতে অন্তর্ভুক্ত করার জন্য সেই পরিবর্তনগুলি চিহ্নিত বা স্টেজ করতে হবে। পরিবর্তনের জন্য এই কমান্ডটি চালান:
git add -A
এই কমান্ডটি পরিবর্তনগুলি ট্র্যাক করে যা আপনি যেকোনো ফাইলে করেছেন।
স্টেজিং এলাকায় ফাইল নিন এবং আপনার স্থানীয় ডাটাবেসে প্রতিশ্রুতি বা সংরক্ষণ করুন:
git commit -s
ডিফল্টরূপে, একটি পাঠ্য সম্পাদক খোলে এবং আপনাকে একটি প্রতিশ্রুতি বার্তা প্রদানের জন্য অনুরোধ করা হবে।
নিম্নলিখিত বিন্যাসে একটি প্রতিশ্রুতি বার্তা প্রদান করুন:
লাইন 1: শিরোনাম। পরিবর্তনের একটি এক-লাইন সারাংশ প্রদান করুন (সর্বোচ্চ 50 অক্ষর)। আপনি যে এলাকাটি পরিবর্তিত করেছেন তা বর্ণনা করতে উপসর্গ ব্যবহার করার কথা বিবেচনা করুন, তারপরে আপনি এই প্রতিশ্রুতিতে যে পরিবর্তনটি করেছেন তার বর্ণনা দ্বারা অনুসরণ করুন, যেমন একটি ব্যবহারকারী ইন্টারফেস পরিবর্তন ধারণকারী নিম্নলিখিত উদাহরণ:
ui: Removes deprecated widget
লাইন 2: ফাঁকা লাইন। একটি ফাঁকা লাইন দিয়ে শিরোনাম অনুসরণ করুন.
লাইন 3: শরীর। একটি দীর্ঘ বিবরণ প্রদান করুন যা সর্বোচ্চ 72 অক্ষরে হার্ড-রেপ করে। পরিবর্তনটি কী সমস্যার সমাধান করে এবং কীভাবে তা বর্ণনা করুন। যদিও শরীরটি ঐচ্ছিক, এটি অন্যদের জন্য সহায়ক যাদের পরিবর্তনের দিকে ফিরে যেতে হবে। অন্য কোনো অবদানকারী এই বৈশিষ্ট্যটিতে কাজ করার সময় গুরুত্বপূর্ণ হতে পারে এমন কোনো অনুমান বা পটভূমির তথ্যের একটি সংক্ষিপ্ত নোট অন্তর্ভুক্ত করতে ভুলবেন না।
ভাল কমিট বর্ণনা সম্পর্কে একটি ব্লগ পড়তে (উদাহরণ সহ), দেখুন কিভাবে একটি গিট কমিট বার্তা লিখতে হয় ।
প্রতিশ্রুতি সংরক্ষণ করুন।
একটি অনন্য পরিবর্তন আইডি এবং আপনার নাম এবং ইমেল, যা repo init
সময় প্রদান করা হয়েছিল, স্বয়ংক্রিয়ভাবে আপনার প্রতিশ্রুতি বার্তায় যুক্ত হয়।
পর্যালোচনার জন্য পরিবর্তন আপলোড করুন
আপনি আপনার ব্যক্তিগত গিট ইতিহাসে আপনার পরিবর্তন করার পরে, এটি গেরিটে আপলোড করুন:
আপনার সমস্ত প্রকল্পে আপনার সমস্ত কমিট আপলোড করতে নিম্নলিখিত কমান্ডটি চালান:
repo upload
সমস্ত প্রকল্পের সমস্ত পরিবর্তন আপলোড অন্তর্ভুক্ত করা হয়.
আপনাকে হুক স্ক্রিপ্ট চালানোর জন্য অনুরোধ করা হচ্ছে।
a এবং তারপর এন্টার টিপুন।
আপনাকে আপলোড অনুমোদন করতে বলা হচ্ছে:
Upload project frameworks/native/ to remote branch main: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?
আপলোড অনুমোদন করতে y এবং তারপর এন্টার টিপুন।
আপনার remote: SUCCESS
।
একটি পর্যালোচনা অনুরোধ
একটি সফল আপলোডের পরে, রেপো আপনাকে গেরিটে আপনার পরিবর্তনগুলির একটি লিঙ্ক প্রদান করে। পর্যালোচনা সার্ভারে আপনার পরিবর্তনগুলি দেখতে, মন্তব্য যোগ করতে বা আপনার পরিবর্তনের জন্য নির্দিষ্ট পর্যালোচকদের অনুরোধ করতে লিঙ্কটিতে ক্লিক করুন৷ কোডের সমস্ত পরিবর্তন অবশ্যই উপযুক্ত কোড মালিকদের দ্বারা পর্যালোচনা করা উচিত। একটি পর্যালোচনা অনুরোধ করতে:
Gerrit-এ, SUGGEST OWNERS এ ক্লিক করুন:
চিত্র 1. গেরিটে মালিকদের লিঙ্কের পরামর্শ দিন।
পর্যালোচক ডায়ালগ প্রদর্শিত হয়. এই ডায়ালগে কোড মালিকদের একটি তালিকা রয়েছে যারা আপনার পরিবর্তন পর্যালোচনা করতে পারে৷
একটি কোড মালিককে আপনার পর্যালোচনাতে যোগ করতে ক্লিক করুন৷
SEND বোতামটি সক্রিয় করা হয়েছে।
(ঐচ্ছিক) অন্য কারোর ইমেল ঠিকানা টাইপ করুন যাকে আপনি আপনার পরিবর্তন পর্যালোচনা করতে চান৷
(ঐচ্ছিক) আপনি অনুমোদন পাওয়ার পর স্বয়ংক্রিয়ভাবে পরিবর্তন জমা দিতে স্বয়ংক্রিয়ভাবে জমা দেওয়ার পাশে +1 ক্লিক করুন। আপনি এই বোতামটি ক্লিক না করলে, একজন Google কর্মচারীকে আপনার জন্য আপনার পরিবর্তন জমা দিতে হবে।
পরিবর্তনটি পর্যালোচনার জন্য পাঠাতে পাঠাতে ক্লিক করুন।
কোড মালিকরা আপনার কোড পরিবর্তনগুলি পর্যালোচনা করে এবং হয় পরিবর্তনগুলি সমাধান বা অনুমোদন করার জন্য আপনার প্রতিক্রিয়া প্রদান করে৷
পরিবর্তনের অবস্থা নির্ধারণ করুন
আপনার পরিবর্তনের ফাইলগুলির স্থিতি নির্ধারণ করতে, পরিবর্তনের ফাইলগুলির পাশে নিম্নলিখিত আইকনগুলি পরীক্ষা করুন:
- (চেকমার্ক আইকন): কোড মালিক দ্বারা অনুমোদিত
- (ক্রস আইকন): কোড মালিক দ্বারা অনুমোদিত নয়
- (ঘড়ি আইকন): কোড মালিক কর্তৃক মুলতুবি অনুমোদন
নিম্নলিখিত চিত্রটি এই স্থিতি আইকনগুলিকে দেখায় যা ফাইলগুলিতে একটি পরিবর্তনে প্রয়োগ করা হয়েছে:
চিত্র 2. কোড মালিকের অনুমোদন দেখানো আইকন সহ ফাইলগুলির উদাহরণ৷
প্রতিক্রিয়া সমাধান করুন এবং একটি প্রতিস্থাপন পরিবর্তন আপলোড করুন
যদি একজন পর্যালোচক আপনার আপডেটে একটি পরিবর্তনের অনুরোধ করেন, আপনি Git-এর মধ্যে আপনার প্রতিশ্রুতি সংশোধন করতে পারেন, যার ফলে একই পরিবর্তনে একটি নতুন প্যাচসেট তৈরি হয়।
প্রতিক্রিয়া সমাধান করতে এবং আপনার পরিবর্তন সংশোধন করতে:
আপনার পরিবর্তন সংশোধন করতে নিম্নলিখিত কমান্ডগুলি চালান:
git add -A git commit --amend
আপনি যখন সংশোধিত পরিবর্তন আপলোড করেন, তখন এটি Gerrit এবং আপনার স্থানীয় গিট ইতিহাসে মূলটিকে প্রতিস্থাপন করে।
সিঙ্ক দ্বন্দ্ব সমাধান করুন
যদি অন্য পরিবর্তনগুলি আপনার সাথে বিরোধপূর্ণ উৎস ট্রিতে জমা দেওয়া হয়, তাহলে আপনি একটি বার্তা পাবেন যে আপনার বিরোধ আছে। দ্বন্দ্ব সমাধান করতে:
আপনি সবচেয়ে বর্তমান কোডের সাথে কাজ করছেন তা নিশ্চিত করুন:
repo sync .
repo sync
কমান্ড সোর্স সার্ভার থেকে আপডেট আনে, তারপর স্বয়ংক্রিয়ভাবে নতুন রিমোটHEAD
এ আপনারHEAD
রিবেস করার চেষ্টা করে।যদি স্বয়ংক্রিয় রিবেস ব্যর্থ হয়, একটি ম্যানুয়াল রিবেস সঞ্চালন করুন:
repo rebase .
একত্রীকরণ বিরোধের সমাধান করুন। আপনার যদি মার্জ দ্বন্দ্ব সমাধানের জন্য একটি পছন্দের পদ্ধতি না থাকে তবে আপনি ফাইলগুলির মধ্যে দ্বন্দ্ব ম্যানুয়ালি ঠিক করতে
git mergetool
ব্যবহার করতে পারেন।আপনি যখন সফলভাবে বিরোধপূর্ণ ফাইলগুলি ঠিক করেছেন, তখন নতুন কমিটগুলি প্রয়োগ করতে এই কমান্ডটি চালান:
git rebase --continue
পরিবর্তন জমা দিন
পর্যালোচনা এবং যাচাইকরণ প্রক্রিয়ার মাধ্যমে জমা দেওয়ার পরে, একজন Google পর্যালোচককে অবশ্যই আপনার জন্য কোডটি জমা দিতে হবে। অন্যান্য ব্যবহারকারীরা তাদের নিজ নিজ স্থানীয় ক্লায়েন্টদের মধ্যে আপডেট টানতে repo sync
চালাতে পারেন।
আপনার জমা দেওয়া একত্রিত হওয়ার পরে, আপনার জমাগুলি কখন গাছের সাথে একত্রিত হবে তা নিরীক্ষণ করতে আপনি Android কন্টিনিউয়াস ইন্টিগ্রেশন ড্যাশবোর্ডে যেতে পারেন৷