উৎস নিয়ন্ত্রণ কর্মপ্রবাহ

অ্যান্ড্রয়েড কোডের সাথে কাজ করার জন্য গিট (একটি ওপেন-সোর্স সংস্করণ নিয়ন্ত্রণ ব্যবস্থা) এবং রেপো (একটি Google-নির্মিত সংগ্রহস্থল পরিচালনার সরঞ্জাম যা গিট-এর উপরে চলে) ব্যবহার করা প্রয়োজন। রেপো এবং গিট এবং প্রতিটি টুলের জন্য সহায়ক ডকুমেন্টেশনের লিঙ্কগুলির মধ্যে সম্পর্কের ব্যাখ্যার জন্য উত্স নিয়ন্ত্রণ সরঞ্জামগুলি দেখুন।

প্রবাহ

অ্যান্ড্রয়েড উন্নয়ন নিম্নলিখিত মৌলিক কর্মপ্রবাহ জড়িত:

  1. repo start ব্যবহার করে একটি নতুন বিষয় শাখা শুরু করুন।
  2. ফাইলগুলি সম্পাদনা করুন।
  3. git add ব্যবহার করে পর্যায় পরিবর্তন।
  4. git commit ব্যবহার করে পরিবর্তন করুন।
  5. repo upload ব্যবহার করে রিভিউ সার্ভারে পরিবর্তন আপলোড করুন।

কাজ

অ্যান্ড্রয়েড কোড রিপোজিটরিতে গিট এবং রেপোর সাথে কাজ করার জন্য নিম্নলিখিত সাধারণ কাজগুলি সম্পাদন করা জড়িত।

আদেশ বর্ণনা
repo init একটি নতুন ক্লায়েন্ট শুরু করে।
repo sync ক্লায়েন্টকে রিপোজিটরিতে সিঙ্ক করে।
repo start নতুন শাখা শুরু করে।
repo status বর্তমান শাখার অবস্থা দেখায়।
repo upload পর্যালোচনা সার্ভারে পরিবর্তন আপলোড.
git add ফাইল স্টেজ.
git commit স্টেজড ফাইল কমিট.
git branch বর্তমান শাখা দেখায়.
git branch [branch] একটি নতুন বিষয় শাখা তৈরি করে।
git checkout [branch] HEAD নির্দিষ্ট শাখায় স্যুইচ করে।
git merge [branch] বর্তমান শাখায় [branch] একত্রিত করে।
git diff পর্যায়বিহীন পরিবর্তনের পার্থক্য দেখায়।
git diff --cached পর্যায়ভুক্ত পরিবর্তনের পার্থক্য দেখায়।
git log বর্তমান শাখার ইতিহাস দেখায়।
git log m/[codeline].. কমিট দেখায় যেগুলিকে ধাক্কা দেওয়া হয় না।

উৎস ডাউনলোড করতে রেপো ব্যবহার সম্পর্কে তথ্যের জন্য, উৎস ডাউনলোড করা এবং রেপো কমান্ড রেফারেন্স দেখুন।

ক্লায়েন্ট সিঙ্ক্রোনাইজ করা

সমস্ত উপলব্ধ প্রকল্পের জন্য ফাইল সিঙ্ক্রোনাইজ করতে:

repo sync

নির্বাচিত প্রকল্পগুলির জন্য ফাইলগুলি সিঙ্ক্রোনাইজ করতে:

repo sync PROJECT0 PROJECT1 ... PROJECTN

বিষয় শাখা তৈরি করা

আপনার স্থানীয় কাজের পরিবেশে একটি বিষয় শাখা শুরু করুন যখনই আপনি কোনো পরিবর্তন শুরু করেন, যেমন আপনি যখন কোনো বাগ বা নতুন বৈশিষ্ট্য নিয়ে কাজ শুরু করেন। একটি বিষয় শাখা মূল ফাইলের একটি অনুলিপি নয় ; এটি একটি নির্দিষ্ট প্রতিশ্রুতির একটি নির্দেশক, যা স্থানীয় শাখা তৈরি করা এবং তাদের মধ্যে পরিবর্তন করা একটি হালকা অপারেশন করে। শাখা ব্যবহার করে, আপনি অন্যদের থেকে আপনার কাজের একটি দিক আলাদা করতে পারেন। বিষয় শাখা ব্যবহার সম্পর্কে একটি আকর্ষণীয় নিবন্ধের জন্য, বিষয় শাখা পৃথক করা পড়ুন।

রেপো ব্যবহার করে একটি বিষয় শাখা শুরু করতে, প্রকল্পে নেভিগেট করুন এবং চালান:

repo start BRANCH_NAME .

ট্রেলিং পিরিয়ড ( . ) বর্তমান ওয়ার্কিং ডাইরেক্টরিতে প্রোজেক্টের প্রতিনিধিত্ব করে।

নতুন শাখা তৈরি করা হয়েছে তা যাচাই করতে:

repo status .

বিষয় শাখা ব্যবহার করে

একটি নির্দিষ্ট প্রকল্পে শাখা বরাদ্দ করতে:

repo start BRANCH_NAME PROJECT_NAME

সমস্ত প্রকল্পের তালিকার জন্য, android.googlesource.com দেখুন। আপনি যদি ইতিমধ্যে প্রকল্প ডিরেক্টরিতে নেভিগেট করে থাকেন তবে বর্তমান প্রকল্পটি উপস্থাপন করতে একটি সময়কাল ব্যবহার করুন।

আপনার স্থানীয় কাজের পরিবেশে অন্য শাখায় যেতে:

git checkout BRANCH_NAME

বিদ্যমান শাখাগুলির একটি তালিকা দেখতে:

git branch

বা

repo branches

উভয় কমান্ডই একটি তারকাচিহ্ন (*) এর পূর্বে বর্তমান শাখার নামের সাথে বিদ্যমান শাখাগুলির তালিকা প্রদান করে।

ফাইল স্টেজিং

ডিফল্টরূপে, গিট নোটিশ করে কিন্তু আপনি একটি প্রকল্পে যে পরিবর্তনগুলি করেন তা ট্র্যাক করে না। আপনার পরিবর্তনগুলি সংরক্ষণ করতে গিটকে বলতে, আপনাকে অবশ্যই একটি প্রতিশ্রুতিতে অন্তর্ভুক্ত করার জন্য সেই পরিবর্তনগুলি চিহ্নিত বা স্টেজ করতে হবে।

পর্যায় পরিবর্তনের জন্য:

git add

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

ক্লায়েন্ট স্ট্যাটাস দেখা

ফাইলের অবস্থা তালিকাভুক্ত করতে:

repo status

প্রতিশ্রুতিহীন সম্পাদনাগুলি দেখতে (স্থানীয় সম্পাদনাগুলি যা প্রতিশ্রুতির জন্য চিহ্নিত নয় ):

repo diff

প্রতিশ্রুতিবদ্ধ সম্পাদনাগুলি দেখতে (অবস্থিত সম্পাদনাগুলি যা কমিটের জন্য চিহ্নিত করা হয়েছে ), নিশ্চিত করুন যে আপনি প্রজেক্ট ডিরেক্টরিতে আছেন তারপর cached আর্গুমেন্টের সাথে git diff চালান:

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

প্রতিশ্রুতিবদ্ধ পরিবর্তন

একটি কমিট হল গিট-এ পুনর্বিবেচনা নিয়ন্ত্রণের মৌলিক একক এবং এতে সমগ্র প্রকল্পের জন্য ডিরেক্টরি কাঠামো এবং ফাইলের বিষয়বস্তুর একটি স্ন্যাপশট থাকে। গিটে একটি কমিট তৈরি করতে এই কমান্ডটি ব্যবহার করুন:

git commit

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

Gerrit পরিবর্তন আপলোড করা হচ্ছে

সর্বশেষ সংশোধনে আপডেট করুন, তারপর পরিবর্তনটি আপলোড করুন:

repo sync
repo upload

এই কমান্ডগুলি আপনার করা পরিবর্তনগুলির একটি তালিকা প্রদান করে এবং পর্যালোচনা সার্ভারে আপলোড করার জন্য শাখাগুলি নির্বাচন করার জন্য আপনাকে অনুরোধ করে। শুধুমাত্র একটি শাখা থাকলে, আপনি একটি সাধারণ y/n প্রম্পট দেখতে পাবেন।

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

যদি repo sync কমান্ড সিঙ্ক দ্বন্দ্ব ফেরত দেয়:

  1. আনমার্জ করা ফাইলগুলি দেখুন (স্থিতি কোড = U)।
  2. প্রয়োজনে বিরোধপূর্ণ অঞ্চলগুলি সম্পাদনা করুন।
  3. প্রাসঙ্গিক প্রকল্প ডিরেক্টরি পরিবর্তন করুন. প্রভাবিত ফাইল যোগ করুন এবং প্রতিশ্রুতিবদ্ধ করুন, তারপর পরিবর্তনগুলি রিবেস করুন:
    git add .
    git commit
    git rebase --continue
    
  4. রিবেস সম্পূর্ণ হওয়ার পরে, সম্পূর্ণ সিঙ্ক আবার শুরু করুন:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

ক্লায়েন্টদের পরিষ্কার করা

Gerrit-এ পরিবর্তনগুলি একত্রিত করার পরে, আপনার স্থানীয় কার্যকারী ডিরেক্টরি আপডেট করুন, তারপরে পুরানো বিষয় শাখাগুলিকে নিরাপদে সরাতে repo prune ব্যবহার করুন:

repo sync
repo prune

ক্লায়েন্ট মুছে ফেলা হচ্ছে

যেহেতু সমস্ত রাজ্যের তথ্য আপনার ক্লায়েন্টে সংরক্ষিত আছে, আপনাকে শুধুমাত্র আপনার ফাইল সিস্টেম থেকে ডিরেক্টরিটি মুছে ফেলতে হবে:

rm -rf WORKING_DIRECTORY

একটি ক্লায়েন্ট মুছে ফেলা স্থায়ীভাবে কোনো পরিবর্তন মুছে দেয় আপনি পর্যালোচনার জন্য আপলোড করেননি৷