রেপো কমান্ড রেফারেন্স

রেপো একাধিক রিপোজিটরি জুড়ে কাজকে সহজ করে গিটকে পরিপূরক করে। রেপো এবং গিটের মধ্যে সম্পর্কের ব্যাখ্যার জন্য, উত্স নিয়ন্ত্রণ সরঞ্জামগুলি দেখুন। রেপো সম্পর্কে আরো বিস্তারিত জানার জন্য, রেপো README দেখুন

রেপো ব্যবহার নিম্নলিখিত ফর্ম নেয়:

repo command options

ঐচ্ছিক উপাদানগুলি বন্ধনীতে দেখানো হয়েছে []। উদাহরণস্বরূপ, অনেক কমান্ড একটি যুক্তি হিসাবে project-list গ্রহণ করে। আপনি নামের তালিকা বা প্রকল্পগুলির জন্য স্থানীয় উত্স ডিরেক্টরিগুলির পথের তালিকা হিসাবে project-list নির্দিষ্ট করতে পারেন:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

সাহায্য

repo help

repo কমান্ডে সহায়তা প্রদান করে। আপনি একটি বিকল্প হিসাবে একটি কমান্ড নির্দিষ্ট করে একটি নির্দিষ্ট রেপো কমান্ড সম্পর্কে বিস্তারিত তথ্য দেখতে পারেন:

repo help command

উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি init কমান্ডের জন্য একটি বিবরণ এবং বিকল্পগুলির তালিকা প্রদান করে:

repo help init

অথবা, শুধুমাত্র একটি কমান্ডের জন্য উপলব্ধ বিকল্পগুলির তালিকা দেখতে, চালান:

repo command --help

যেমন:

repo init --help

init

repo init -u url [options]

বর্তমান ডিরেক্টরিতে রেপো ইনস্টল করে। এই কমান্ডটি রেপো সোর্স কোড এবং স্ট্যান্ডার্ড অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলগুলির জন্য গিট রিপোজিটরি সহ একটি .repo/ ডিরেক্টরি তৈরি করে।

বিকল্প:

  • -u : একটি URL নির্দিষ্ট করুন যেখান থেকে একটি ম্যানিফেস্ট রিপোজিটরি পুনরুদ্ধার করতে হবে। সাধারণ ম্যানিফেস্টটি https://android.googlesource.com/platform/manifest এ পাওয়া যায়।

  • -m : সংগ্রহস্থলের মধ্যে একটি ম্যানিফেস্ট ফাইল নির্বাচন করুন। যদি কোনো ম্যানিফেস্ট নাম নির্বাচন না করা হয়, ডিফল্ট default.xml

  • -b : একটি সংশোধন নির্দিষ্ট করুন, অর্থাৎ একটি নির্দিষ্ট manifest-branch

সিঙ্ক

repo sync [project-list]

নতুন পরিবর্তনগুলি ডাউনলোড করে এবং আপনার স্থানীয় পরিবেশে কার্যকরী ফাইলগুলিকে আপডেট করে, মূলত সমস্ত গিট রিপোজিটরি জুড়ে git fetch সম্পন্ন করে। আপনি যদি আর্গুমেন্ট ছাড়াই repo sync চালান তবে এটি সমস্ত প্রকল্পের জন্য ফাইলগুলিকে সিঙ্ক্রোনাইজ করে।

আপনি যখন repo sync চালান, তখন এটি ঘটে:

  • যদি প্রকল্পটি কখনও সিঙ্ক্রোনাইজ করা না হয়, তাহলে repo sync git clone সমতুল্য; দূরবর্তী সংগ্রহস্থলের সমস্ত শাখা স্থানীয় প্রকল্প ডিরেক্টরিতে অনুলিপি করা হয়।

  • যদি প্রকল্পটি আগে সিঙ্ক্রোনাইজ করা হয়, তাহলে repo sync এর সমতুল্য:

    git remote update
    git rebase origin/branch
    

    যেখানে branch স্থানীয় প্রকল্প ডিরেক্টরির বর্তমান চেক-আউট শাখা। যদি স্থানীয় শাখা দূরবর্তী সংগ্রহস্থলে একটি শাখা ট্র্যাক না করে, তাহলে প্রকল্পের জন্য কোন সিঙ্ক্রোনাইজেশন ঘটে না।

repo sync সফলভাবে চালানোর পরে, নির্দিষ্ট প্রকল্পের কোড আপ-টু-ডেট এবং দূরবর্তী সংগ্রহস্থলের কোডের সাথে সিঙ্ক করা হয়।

মূল বিকল্প:

  • -c : সার্ভার থেকে শুধুমাত্র বর্তমান ম্যানিফেস্ট শাখা আনুন।
  • -d : নির্দিষ্ট প্রজেক্টগুলিকে ম্যানিফেস্ট রিভিশনে ফিরে যান। প্রকল্পটি একটি বিষয় শাখায় থাকলে এই বিকল্পটি সহায়ক, তবে সাময়িকভাবে ম্যানিফেস্ট সংশোধন প্রয়োজন।
  • -f : একটি প্রকল্প সিঙ্ক করতে ব্যর্থ হলেও অন্যান্য প্রকল্পগুলিকে সিঙ্ক করার সাথে এগিয়ে যান৷
  • threadcount : দ্রুত সমাপ্তির জন্য থ্রেড জুড়ে সিঙ্ক বিভক্ত করুন। নিশ্চিত করুন যে আপনি আপনার মেশিনকে অভিভূত করবেন না - কিছু CPU অন্যান্য কাজের জন্য সংরক্ষিত রাখুন। উপলব্ধ CPU-র সংখ্যা দেখতে প্রথমে nproc --all চালান।
  • -q : স্ট্যাটাস বার্তা দমন করে শান্তভাবে চালান।
  • -s : বর্তমান ম্যানিফেস্টে manifest-server উপাদান দ্বারা নির্দিষ্ট করা একটি পরিচিত ভাল বিল্ডে সিঙ্ক করুন।

আরও বিকল্পের জন্য, repo help sync চালান।

আপলোড

repo upload [project-list]

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

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

যখন গেরিট তার সার্ভারে অবজেক্ট ডেটা পায়, তখন এটি প্রতিটি কমিটকে পরিবর্তনে পরিণত করে যাতে পর্যালোচকরা একটি নির্দিষ্ট প্রতিশ্রুতিতে মন্তব্য করতে পারে। একাধিক চেকপয়েন্ট কমিটকে একটি একক প্রতিশ্রুতিতে একত্রিত করতে, আপলোড চালানোর আগে git rebase -i ব্যবহার করুন।

আপনি যুক্তি ছাড়াই repo upload চালালে, এটি আপলোড করার জন্য পরিবর্তনের জন্য সমস্ত প্রকল্প অনুসন্ধান করে।

আপলোড হওয়ার পরে পরিবর্তনগুলি সম্পাদনা করতে, আপনার স্থানীয় প্রতিশ্রুতি আপডেট করতে git rebase -i বা git commit --amend মতো একটি টুল ব্যবহার করুন। আপনার সম্পাদনা সম্পূর্ণ হওয়ার পরে:

  • যাচাই করুন যে আপডেট করা শাখাটি বর্তমান চেক আউট শাখা।
  • পরিবর্তন ম্যাচিং এডিটর খুলতে repo upload --replace PROJECT ব্যবহার করুন।
  • সিরিজের প্রতিটি কমিটের জন্য, বন্ধনীর ভিতরে গেরিট পরিবর্তন আইডি লিখুন:

    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacements
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

আপলোড সম্পূর্ণ হওয়ার পরে, পরিবর্তনগুলির একটি অতিরিক্ত প্যাচ সেট আছে।

আপনি যদি শুধুমাত্র বর্তমানে চেক আউট করা Git শাখা আপলোড করতে চান, তাহলে পতাকা --current-branch (বা সংক্ষেপে --cbr ) ব্যবহার করুন।

সম্পর্কিত পরিবর্তনের জন্য, একই বিষয়ে সমস্ত CL রাখা দরকারী। --topic=TOPIC দিয়ে আপলোড করার সময় আপনি একটি বিষয়ের নাম যোগ করতে পারেন। অথবা, স্থানীয় শাখার নামের মতো বিষয়ের নাম সেট করতে শুধু পাস -t করুন।

পার্থক্য

repo diff [project-list]

git diff ব্যবহার করে কমিট এবং ওয়ার্কিং ট্রির মধ্যে অসামান্য পরিবর্তন দেখায়।

ডাউনলোড

repo download target change

পর্যালোচনা সিস্টেম থেকে নির্দিষ্ট পরিবর্তন ডাউনলোড করে এবং এটি আপনার প্রকল্পের স্থানীয় কাজের ডিরেক্টরিতে উপলব্ধ করে।

উদাহরণস্বরূপ, আপনার platform/build ডিরেক্টরিতে পরিবর্তন 23823 ডাউনলোড করতে:

repo download platform/build 23823

repo sync চালানোর ফলে repo download মাধ্যমে পুনরুদ্ধার করা যেকোনো কমিট মুছে যায়। অথবা আপনি git checkout m/main ব্যবহার করে দূরবর্তী শাখাটি পরীক্ষা করতে পারেন।

forall

repo forall [project-list] -c command

প্রতিটি প্রকল্পে প্রদত্ত শেল কমান্ড কার্যকর করে। নিম্নলিখিত অতিরিক্ত পরিবেশ ভেরিয়েবলগুলি repo forall দ্বারা উপলব্ধ করা হয়েছে:

  • REPO_PROJECT প্রকল্পের অনন্য নামে সেট করা হয়েছে।
  • REPO_PATH হল ক্লায়েন্টের রুটের সাথে সম্পর্কিত পথ।
  • REPO_REMOTE হল ম্যানিফেস্ট থেকে রিমোট সিস্টেমের নাম।
  • REPO_LREV হল ম্যানিফেস্টের রিভিশনের নাম, যা স্থানীয় ট্র্যাকিং শাখায় অনুবাদ করা হয়েছে। স্থানীয়ভাবে নির্বাহিত গিট কমান্ডে ম্যানিফেস্ট সংশোধন পাস করতে হলে এই ভেরিয়েবলটি ব্যবহার করুন।
  • REPO_RREV হল ম্যানিফেস্ট থেকে রিভিশনের নাম, ঠিক যেমনটি ম্যানিফেস্টে লেখা আছে।

বিকল্প:

  • -c : কার্যকর করার জন্য কমান্ড এবং আর্গুমেন্ট। কমান্ডটি /bin/sh এবং যেকোনো আর্গুমেন্টের মাধ্যমে মূল্যায়ন করা হয় শেল পজিশনাল প্যারামিটার হিসেবে পাস করার পর।
  • -p : নির্দিষ্ট কমান্ডের আউটপুট আগে প্রজেক্ট হেডার দেখান। কমান্ডের stdin, stdout, এবং sterr স্ট্রীমগুলিতে পাইপগুলিকে আবদ্ধ করে এবং একটি একক পেজার সেশনে প্রদর্শিত একটি অবিচ্ছিন্ন স্ট্রীমে সমস্ত আউটপুটকে পাইপ করার মাধ্যমে এটি অর্জন করা হয়।
  • -v : বার্তাগুলি দেখান যে কমান্ডটি stderr-এ লেখে।

ছাঁটাই

repo prune [project-list]

ইতিমধ্যেই একত্রিত করা বিষয়গুলি ছাঁটাই (মুছে দেয়)।

শুরু

repo start branch-name [project-list]

উন্নয়নের জন্য একটি নতুন শাখা শুরু করে, ম্যানিফেস্টে নির্দিষ্ট করা সংশোধন থেকে শুরু করে।

BRANCH_NAME আর্গুমেন্ট আপনি প্রকল্পে যে পরিবর্তন করার চেষ্টা করছেন তার একটি সংক্ষিপ্ত বিবরণ প্রদান করে। আপনি যদি না জানেন, default নাম ব্যবহার করার কথা বিবেচনা করুন।

project-list যুক্তি নির্দিষ্ট করে কোন প্রকল্প এই বিষয় শাখায় অংশগ্রহণ করে।

অবস্থা

repo status [project-list]

নির্দিষ্ট প্রতিটি প্রকল্পে স্টেজিং এরিয়া (সূচক) এবং এই শাখায় (HEAD) সবচেয়ে সাম্প্রতিক প্রতিশ্রুতির সাথে কাজের গাছের তুলনা করে। প্রতিটি ফাইলের জন্য একটি সারাংশ লাইন প্রদর্শন করে যেখানে এই তিনটি অবস্থার মধ্যে পার্থক্য রয়েছে।

শুধুমাত্র বর্তমান শাখার অবস্থা দেখতে, repo status . . স্থিতি তথ্য প্রকল্প দ্বারা তালিকাভুক্ত করা হয়. প্রকল্পের প্রতিটি ফাইলের জন্য, একটি দুই-অক্ষরের কোড ব্যবহার করা হয়।

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

চিঠি অর্থ বর্ণনা
- কোন পরিবর্তন নেই হেড এবং সূচকে একই
যোগ করা হয়েছে মাথায় নয়, সূচকে
এম পরিবর্তিত HEAD এ, সূচকে পরিবর্তিত হয়েছে
ডি মুছে ফেলা হয়েছে HEAD এ, সূচকে নয়
আর নাম পরিবর্তন করা হয়েছে HEAD এ নয়, সূচকে পাথ পরিবর্তন হয়েছে
কপি করা হয়েছে HEAD-এ নয়, সূচকে অন্য থেকে কপি করা হয়েছে
টি মোড পরিবর্তন হয়েছে HEAD এবং সূচকে একই বিষয়বস্তু, মোড পরিবর্তিত হয়েছে৷
একীভূত HEAD এবং সূচকের মধ্যে দ্বন্দ্ব; রেজল্যুশন প্রয়োজন

দ্বিতীয় কলামে, একটি ছোট হাতের অক্ষর নির্দেশ করে কিভাবে কার্যকারী ডিরেক্টরি সূচক থেকে আলাদা।

চিঠি অর্থ বর্ণনা
- নতুন/অজানা সূচকে নয়, কাজের গাছে
মি পরিবর্তিত সূচকে, কাজের গাছে, পরিবর্তিত
d মুছে ফেলা হয়েছে সূচকে, কাজের গাছে নয়

রেপো ত্রুটিগুলি পরিচালনা করুন

git commit -a # Commit local changes first so they aren't lost.
repo start branch-name # Start the branch
git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start
repo upload .

ত্রুটি repo: error: no branches ready for upload সেশনের শুরুতে repo start কমান্ড চালানো না হলে আপলোডের জন্য প্রস্তুত কোনো শাখা প্রদর্শিত হয় না। পুনরুদ্ধার করতে, আপনি কমিট আইডি পরীক্ষা করতে পারেন, একটি নতুন শাখা শুরু করতে পারেন এবং তারপর এটিকে একত্রিত করতে পারেন।