এই পৃষ্ঠায় অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP)-এ কোড পরিবর্তন জমা দেওয়ার সম্পূর্ণ প্রক্রিয়া বর্ণনা করা হয়েছে, যার মধ্যে পর্যালোচনার জন্য অনুরোধ করা এবং আপনার পরিবর্তনগুলি ট্র্যাক করার পদ্ধতিও অন্তর্ভুক্ত রয়েছে।
AOSP, Git ব্যবহারকারী প্রোজেক্টগুলোর জন্য Gerrit নামক একটি ওয়েব-ভিত্তিক কোড রিভিউ সিস্টেমের উপর নির্ভর করে।
অবদানকারী লাইসেন্স চুক্তিপত্রে স্বাক্ষর করুন
AOSP-তে কোনো কোড পরিবর্তন যোগ করার আগে, আপনাকে অবশ্যই কন্ট্রিবিউটর লাইসেন্স চুক্তি ও হেডারগুলো পড়তে হবে এবং নিম্নলিখিত চুক্তিগুলোর মধ্যে যেকোনো একটিতে স্বাক্ষর করতে হবে:
- একজন স্বতন্ত্র অবদানকারী হিসেবে, যিনি শুধুমাত্র আপনার পক্ষ থেকে অবদান রাখছেন, স্বতন্ত্র অবদানকারী লাইসেন্স চুক্তিতে স্বাক্ষর করুন।
- একটি কর্পোরেশনের কর্মচারী হিসেবে, নিশ্চিত করুন যে আপনার কোম্পানি ‘কর্পোরেট কন্ট্রিবিউটর লাইসেন্স এগ্রিমেন্ট’-এ স্বাক্ষর করেছে, যা আপনাকে এর পক্ষ থেকে অনুদান দেওয়ার অনুমোদন দেয়।
একটি শাখা শুরু করুন
আপনার করা প্রতিটি কোড পরিবর্তনের জন্য, নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
প্রাসঙ্গিক গিট রিপোজিটরির মধ্যে একটি নতুন ব্রাঞ্চ শুরু করুন। একটি ব্রাঞ্চ মূল ফাইলগুলোর কোনো অনুলিপি নয়; এটি একটি নির্দিষ্ট কমিটের নির্দেশক, যা লোকাল ব্রাঞ্চ তৈরি করা এবং সেগুলোর মধ্যে পরিবর্তন করাকে একটি সহজ কাজ করে তোলে। ব্রাঞ্চ ব্যবহার করে, আপনি পরিবর্তনগুলো একে অপরের থেকে আলাদাভাবে শনাক্ত করতে পারেন। একটি ব্রাঞ্চ শুরু করতে এই কমান্ডটি চালান:
repo start BRANCH_NAMEআপনি একই রিপোজিটরিতে একই সময়ে একাধিক স্বাধীন ব্রাঞ্চ শুরু করতে পারেন। BRANCH_NAME ব্রাঞ্চটি আপনার ওয়ার্কস্পেসের জন্য স্থানীয় এবং এটি Gerrit বা চূড়ান্ত সোর্স ট্রি-তে অন্তর্ভুক্ত থাকে না। ব্রাঞ্চগুলো আপনি যে প্রজেক্টে আছেন তার জন্যও নির্দিষ্ট, তাই যদি একই পরিবর্তনের অংশ হিসেবে আপনাকে বিভিন্ন প্রজেক্টের ফাইল পরিবর্তন করতে হয়, তাহলে প্রতিটি প্রজেক্টে যেখানে আপনি ফাইল পরিবর্তন করছেন, সেখানে একটি করে ব্রাঞ্চের প্রয়োজন হবে।
(ঐচ্ছিক) শাখাটি তৈরি হয়েছে কিনা তা যাচাই করুন:
repo status .আপনি আপনার নতুন তৈরি করা ব্রাঞ্চটি দেখতে পাবেন। উদাহরণস্বরূপ:
project frameworks/native/ branch mynewbranch
আপনার পরিবর্তন তৈরি করুন এবং পরীক্ষা করুন
আপনার পরিবর্তনটি তৈরি ও পরীক্ষা করতে এই ধাপগুলো অনুসরণ করুন:
আপনি যেন সর্বাধুনিক কোডবেস নিয়ে কাজ করেন, তা নিশ্চিত করতে সম্পূর্ণ কোডবেসটি সিঙ্ক করুন:
repo syncসিঙ্ক করার সময় কোনো সমস্যা দেখা দিলে, 'সিঙ্ক সমস্যা সমাধান করুন' -এর ২-৪ নম্বর ধাপগুলো দেখুন।
পরিবর্তন করার জন্য কোডটি খুঁজুন। কোড খুঁজে পেতে, অ্যান্ড্রয়েড কোড সার্চ ব্যবহার করার কথা বিবেচনা করুন। আপনি যখন বাস্তবে AOSP সোর্স কোড ব্যবহার করেন, তখন এটি যেভাবে সাজানো থাকে, তা দেখার জন্য অ্যান্ড্রয়েড কোড সার্চ ব্যবহার করতে পারেন। আরও তথ্যের জন্য, ‘কোড সার্চ দিয়ে শুরু করা’ দেখুন। অ্যান্ড্রয়েড কোড সার্চ-এর মধ্যে সর্বশেষ AOSP রিলিজ ব্রাঞ্চের সমস্ত কোড দেখতে,
https://cs.android.com/android/platform/superproject/-এ যান।উৎস ফাইলগুলি পরিবর্তন বা যোগ করুন। যেকোনো পরিবর্তনের জন্য:
আপনার ফিচার লঞ্চ ফ্ল্যাগ ব্যবহার করার প্রয়োজন আছে কিনা তা নির্ধারণ করুন এবং যদি থাকে, তবে আপনার নতুন কোডের জন্য সেগুলো প্রয়োগ করুন।
লাইসেন্স হেডার অন্তর্ভুক্ত করার ক্ষেত্রে সর্বোত্তম পদ্ধতি অনুসরণ করুন।
জাভা কোডের জন্য, অবদানকারীদের জন্য AOSP জাভা কোড স্টাইল অনুসরণ করুন।
AOSP-এর কিছু অংশ কোটলিনে (
.kt) লেখা হয়েছে এবং প্ল্যাটফর্মের যে অংশগুলো ইতিমধ্যেই কোটলিনে লেখা, সেখানেও আপনি কোটলিন ব্যবহার করতে পারেন। অ্যান্ড্রয়েডে কোটলিন সম্পর্কে আরও তথ্যের জন্য, অ্যান্ড্রয়েড ডেভেলপার কোটলিন স্টাইল গাইড এবং কোটলিন-জাভা ইন্টারঅপ গাইড দেখুন। কোটলিন সম্পর্কিত আরও বিস্তারিত নির্দেশনার জন্য, কোটলিন ল্যাঙ্গুয়েজ সাইট দেখুন।এপিআই লেখার সময় অ্যান্ড্রয়েড এপিআই নির্দেশিকা অনুসরণ করুন। অ্যান্ড্রয়েডের এপিআই সংক্রান্ত সিদ্ধান্তগুলোর পেছনের প্রেক্ষাপট জানতে এই নির্দেশিকাগুলো ব্যবহার করুন। প্ল্যাটফর্ম এপিআই-এর সংযোজন ও পরিবর্তনগুলো মেটালাভা দ্বারা যাচাই করা হয়।
আপনার পরিবর্তনকে মঞ্চস্থ করুন এবং প্রতিশ্রুতিবদ্ধ করুন
গিট-এ রিভিশন কন্ট্রোলের মূল একক হলো কমিট , যা সম্পূর্ণ প্রোজেক্টের ডিরেক্টরি কাঠামো এবং ফাইলের বিষয়বস্তুর একটি স্ন্যাপশট নিয়ে গঠিত। আপনার পরিবর্তন কমিট করতে এই ধাপগুলো অনুসরণ করুন:
ডিফল্টরূপে, গিট আপনার করা পরিবর্তনগুলি নথিভুক্ত করে কিন্তু সেগুলির ট্র্যাক রাখে না। গিটকে আপনার পরিবর্তনগুলি ট্র্যাক করার নির্দেশ দিতে, আপনাকে অবশ্যই সেই পরিবর্তনগুলিকে একটি কমিটে অন্তর্ভুক্ত করার জন্য মার্ক বা স্টেজ করতে হবে। পরিবর্তনটি স্টেজ করতে এই কমান্ডটি চালান:
git add -Aএই কমান্ডটি যেকোনো ফাইলে আপনার করা পরিবর্তনগুলো ট্র্যাক করে।
স্টেজিং এরিয়ার ফাইলগুলো নিয়ে আপনার স্থানীয় ডেটাবেসে কমিট বা সংরক্ষণ করুন:
git commit -sডিফল্টরূপে, একটি টেক্সট এডিটর খোলে এবং আপনাকে একটি কমিট মেসেজ দেওয়ার জন্য অনুরোধ করা হয়।
নিম্নলিখিত বিন্যাসে একটি কমিট বার্তা প্রদান করুন:
লাইন ১: শিরোনাম। পরিবর্তনটির একটি এক-লাইনের সারাংশ দিন (সর্বোচ্চ ৫০ অক্ষর)। আপনি যে অংশটি পরিবর্তন করেছেন তা বর্ণনা করার জন্য প্রিফিক্স ব্যবহার করতে পারেন, এবং এর পরে এই কমিটে করা পরিবর্তনটির বিবরণ দিন, যেমন ব্যবহারকারী ইন্টারফেসের পরিবর্তন সম্বলিত নিম্নলিখিত উদাহরণটি:
ui: Removes deprecated widgetলাইন ২: ফাঁকা লাইন। শিরোনামের পরে একটি ফাঁকা লাইন রাখুন।
লাইন ৩: মূল অংশ। একটি দীর্ঘ বিবরণ দিন যা সর্বোচ্চ ৭২ অক্ষরের মধ্যে সীমাবদ্ধ থাকবে। পরিবর্তনটি কী সমস্যার সমাধান করে এবং কীভাবে করে, তা বর্ণনা করুন। যদিও মূল অংশটি ঐচ্ছিক, তবে যারা পরে পরিবর্তনটি দেখতে চান তাদের জন্য এটি সহায়ক। অন্য কোনো অবদানকারী যখন এই ফিচারটিতে কাজ করবেন, তখন গুরুত্বপূর্ণ হতে পারে এমন কোনো অনুমান বা প্রাসঙ্গিক তথ্যের একটি সংক্ষিপ্ত নোট অবশ্যই অন্তর্ভুক্ত করবেন।
ভালো কমিট ডেসক্রিপশন (উদাহরণসহ) সম্পর্কে ব্লগ পড়তে, 'How to Write a Git Commit Message' দেখুন।
কমিটটি সংরক্ষণ করুন।
repo init সময় দেওয়া একটি অনন্য চেঞ্জ আইডি এবং আপনার নাম ও ইমেল স্বয়ংক্রিয়ভাবে আপনার কমিট মেসেজে যুক্ত হয়ে যায়।
পর্যালোচনার জন্য পরিবর্তনটি আপলোড করুন
আপনার ব্যক্তিগত গিট হিস্ট্রিতে পরিবর্তনটি কমিট করার পর, সেটি গেরিটে আপলোড করুন:
আপনার সমস্ত প্রোজেক্টের সমস্ত কমিট আপলোড করতে নিম্নলিখিত কমান্ডটি চালান:
repo uploadসমস্ত প্রকল্পের সমস্ত পরিবর্তন আপলোডের অন্তর্ভুক্ত করা হয়েছে।
আপনাকে হুক স্ক্রিপ্টগুলো চালানোর জন্য অনুরোধ করা হচ্ছে।
'a' চাপুন এবং তারপর এন্টার চাপুন ।
আপনাকে আপলোডটি অনুমোদন করতে বলা হচ্ছে:
Upload project frameworks/native/ to remote branch android17-release: 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- এ ক্লিক করুন:

চিত্র ১। গেরিটে মালিকদের লিঙ্ক সাজেস্ট করুন।
পর্যালোচক ডায়ালগ বক্সটি প্রদর্শিত হবে। এই ডায়ালগ বক্সে সেইসব কোড মালিকদের একটি তালিকা রয়েছে, যারা আপনার পরিবর্তনটি পর্যালোচনা করতে পারবেন।
আপনার পর্যালোচনায় যুক্ত করতে কোডের মালিকের উপর ক্লিক করুন।
প্রেরণ বোতামটি সক্রিয় করা হয়েছে।
(ঐচ্ছিক) আপনার পরিবর্তনটি পর্যালোচনা করার জন্য অন্য যে কোনো ব্যক্তির ইমেল ঠিকানা টাইপ করুন।
পর্যালোচনার জন্য পরিবর্তনটি পাঠাতে SEND-এ ক্লিক করুন।
কোড ওনাররা আপনার কোডের পরিবর্তনগুলো পর্যালোচনা করেন এবং গৃহীত হলে, পরিবর্তনটি চেরিপিক করে অভ্যন্তরীণ ডেভেলপমেন্ট ব্রাঞ্চে মার্জ করে দেন।
পরিবর্তনের অবস্থা নির্ধারণ করুন
আপনার পরিবর্তনে থাকা ফাইলগুলোর অবস্থা জানতে, ফাইলগুলোর পাশে নিম্নলিখিত আইকনগুলো দেখুন:
- (চেকমার্ক আইকন): কোডের মালিক কর্তৃক অনুমোদিত।
- (ক্রস আইকন): কোডের মালিক দ্বারা অনুমোদিত নয়
- (ঘড়ির আইকন): কোড মালিকের অনুমোদনের অপেক্ষায়
নিম্নলিখিত চিত্রে একটি পরিবর্তনের ফাইলগুলিতে প্রয়োগ করা এই স্ট্যাটাস আইকনগুলি দেখানো হয়েছে:
![]()
চিত্র ২. কোড মালিকের অনুমোদন নির্দেশক আইকনসহ ফাইলের উদাহরণ।
মতামত সমাধান করুন এবং একটি প্রতিস্থাপন পরিবর্তন আপলোড করুন।
যদি কোনো পর্যালোচক আপনার আপডেটে কোনো পরিবর্তনের অনুরোধ করেন, তাহলে আপনি গিট-এর মধ্যে আপনার কমিটটি সংশোধন করতে পারেন, যার ফলে একই পরিবর্তনের উপর একটি নতুন প্যাচসেট তৈরি হবে।
মতামত সমাধান করতে এবং আপনার পরিবর্তন সংশোধন করতে:
আপনার পরিবর্তন তৈরি ও পরীক্ষা করতে ২-৪ নম্বর ধাপ অনুসরণ করুন।
আপনার পরিবর্তন সংশোধন করতে নিম্নলিখিত কমান্ডগুলো চালান:
git add -A git commit --amend
আপনি যখন সংশোধিত পরিবর্তনটি আপলোড করেন, তখন এটি Gerrit এবং আপনার স্থানীয় Git ইতিহাস উভয় স্থানেই মূল পরিবর্তনটিকে প্রতিস্থাপন করে।
সিঙ্ক দ্বন্দ্ব সমাধান করুন
সোর্স ট্রি-তে যদি আপনার পরিবর্তনের সাথে সাংঘর্ষিক অন্য কোনো পরিবর্তন জমা দেওয়া হয়, তাহলে আপনি একটি বার্তা পাবেন যে আপনার মধ্যে দ্বন্দ্ব (conclusion) রয়েছে। দ্বন্দ্বগুলো সমাধান করতে:
নিশ্চিত করুন যে আপনি সবচেয়ে সাম্প্রতিক কোডটি ব্যবহার করছেন:
repo sync .repo syncকমান্ডটি সোর্স সার্ভার থেকে আপডেটগুলি সংগ্রহ করে, তারপর স্বয়ংক্রিয়ভাবে আপনারHEADনতুন রিমোটHEADএর উপর রিবেস করার চেষ্টা করে।স্বয়ংক্রিয় রিবেস অসফল হলে, ম্যানুয়াল রিবেস করুন:
repo rebase .মার্জ কনফ্লিক্ট সমাধান করুন। মার্জ কনফ্লিক্ট সমাধানের জন্য আপনার যদি কোনো পছন্দের পদ্ধতি না থাকে, তাহলে আপনি
git mergetoolব্যবহার করে ম্যানুয়ালি ফাইলগুলোর মধ্যকার কনফ্লিক্ট ঠিক করতে পারেন।বিরোধপূর্ণ ফাইলগুলো সফলভাবে ঠিক করার পর, নতুন কমিটগুলো প্রয়োগ করতে এই কমান্ডটি চালান:
git rebase --continue
পরিবর্তন জমা দিন
কোনো সাবমিশন পর্যালোচনা এবং যাচাইকরণ প্রক্রিয়া সফলভাবে সম্পন্ন করার পর, কোডের মালিক আপনার হয়ে কোডটি সাবমিট করেন; হয় সেই ব্রাঞ্চে যেখানে পরিবর্তনটি পর্যালোচনা করা হয়েছিল, অথবা কোনো অভ্যন্তরীণ ব্রাঞ্চে।
আপনার জমা দেওয়া তথ্য মার্জ হয়ে যাওয়ার পর, আপনার জমা দেওয়া তথ্যগুলো কখন ট্রি-তে ইন্টিগ্রেট হচ্ছে তা নিরীক্ষণ করতে আপনি অ্যান্ড্রয়েড কন্টিনিউয়াস ইন্টিগ্রেশন ড্যাশবোর্ডে যেতে পারেন।