রেপো একাধিক রিপোজিটরি জুড়ে কাজকে সহজ করে গিটকে পরিপূরক করে। রেপো এবং গিটের মধ্যে সম্পর্কের ব্যাখ্যার জন্য সোর্স কন্ট্রোল টুলস দেখুন। রেপো সম্পর্কে আরও বিস্তারিত জানার জন্য, রেপো README দেখুন।
রেপো ব্যবহার নিম্নলিখিত ফর্ম নেয়:
repo command options
ঐচ্ছিক উপাদানগুলি বন্ধনীতে দেখানো হয়েছে [ ]। উদাহরণস্বরূপ, অনেক কমান্ড একটি যুক্তি হিসাবে project-list গ্রহণ করে। আপনি নামের তালিকা বা প্রকল্পগুলির জন্য স্থানীয় উত্স ডিরেক্টরিগুলির পথের তালিকা হিসাবে project-list নির্দিষ্ট করতে পারেন:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
সাহায্য
এই পৃষ্ঠাটি শুধুমাত্র মূল বিকল্পগুলিকে হাইলাইট করে। সম্পূর্ণ বিবরণের জন্য কমান্ড লাইন সহায়তা দেখুন। যখন রেপো ইনস্টল করা হয়, আপনি চালানোর মাধ্যমে সমস্ত কমান্ডের সারাংশ দিয়ে শুরু করে সর্বশেষ ডকুমেন্টেশন খুঁজে পেতে পারেন:
repo help
রেপো ট্রির মধ্যে এটি চালানোর মাধ্যমে আপনি যেকোনো কমান্ড সম্পর্কে বিস্তারিত তথ্য দেখতে পারেন:
repo help command
উদাহরণ স্বরূপ, নিম্নোক্ত কমান্ডটি Repo-এর init
আর্গুমেন্টের জন্য একটি বর্ণনা এবং বিকল্পের তালিকা প্রদান করে, যা বর্তমান ডিরেক্টরিতে Repo চালু করে। (বিস্তারিত জানার জন্য init দেখুন।)
repo help init
অথবা শুধুমাত্র উপলব্ধ বিকল্পগুলির তালিকা দেখতে, চালান:
repo command --helpউদাহরণস্বরূপ:
repo init --help
এটা
repo init -u url [options]
বর্তমান ডিরেক্টরিতে রেপো ইনস্টল করে। এটি রেপো সোর্স কোড এবং স্ট্যান্ডার্ড অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলগুলির জন্য গিট রিপোজিটরি সহ একটি .repo/
ডিরেক্টরি তৈরি করে।
বিকল্প:
-
-u
: একটি URL নির্দিষ্ট করুন যেখান থেকে একটি ম্যানিফেস্ট রিপোজিটরি পুনরুদ্ধার করতে হবে। সাধারণ ম্যানিফেস্টটিhttps://android.googlesource.com/platform/manifest
এ পাওয়া যায়। -
-m
: সংগ্রহস্থলের মধ্যে একটি ম্যানিফেস্ট ফাইল নির্বাচন করুন। যদি কোনো ম্যানিফেস্ট নাম নির্বাচন না করা হয়, ডিফল্টdefault.xml
। -
-b
: একটি সংশোধন নির্দিষ্ট করুন, অর্থাৎ একটি নির্দিষ্ট manifest-branch ।
দ্রষ্টব্য: অবশিষ্ট সমস্ত Repo কমান্ডের জন্য, বর্তমান কার্যকারী ডিরেক্টরিটি হয় .repo/
এর মূল ডিরেক্টরি বা মূল ডিরেক্টরির একটি সাবডিরেক্টরি হতে হবে।
সুসংগত
repo sync [project-list]
নতুন পরিবর্তনগুলি ডাউনলোড করে এবং আপনার স্থানীয় পরিবেশে কার্যকরী ফাইলগুলিকে আপডেট করে, মূলত সমস্ত গিট রিপোজিটরি জুড়ে git fetch
সম্পন্ন করে। আপনি যদি আর্গুমেন্ট ছাড়াই repo sync
চালান তবে এটি সমস্ত প্রকল্পের জন্য ফাইলগুলিকে সিঙ্ক্রোনাইজ করে।
আপনি যখন repo sync
চালান, তখন এটি ঘটে:
যদি প্রকল্পটি কখনও সিঙ্ক্রোনাইজ করা না হয়, তাহলে
repo sync
git clone
সমতুল্য। দূরবর্তী সংগ্রহস্থলের সমস্ত শাখা স্থানীয় প্রকল্প ডিরেক্টরিতে অনুলিপি করা হয়।যদি প্রকল্পটি আগে সিঙ্ক্রোনাইজ করা হয়, তাহলে
repo sync
এর সমতুল্য:git remote update git rebase origin/branch
যেখানে
branch
স্থানীয় প্রকল্প ডিরেক্টরিতে বর্তমানে চেক-আউট শাখা। যদি স্থানীয় শাখা দূরবর্তী সংগ্রহস্থলে একটি শাখা ট্র্যাক না করে, তাহলে প্রকল্পের জন্য কোন সিঙ্ক্রোনাইজেশন ঘটে না।যদি গিট রিবেস অপারেশনের ফলে মার্জ দ্বন্দ্ব দেখা দেয়, তবে দ্বন্দ্ব সমাধানের জন্য সাধারণ গিট কমান্ড ব্যবহার করুন (উদাহরণস্বরূপ,
git rebase --continue
)।
repo sync
সফলভাবে চালানোর পরে, নির্দিষ্ট প্রকল্পের কোড আপ টু ডেট এবং দূরবর্তী সংগ্রহস্থলের কোডের সাথে সিঙ্ক করা হয়।
এখানে মূল বিকল্প আছে. আরো জন্য repo help sync
দেখুন:
-c
: সার্ভার থেকে শুধুমাত্র বর্তমান ম্যানিফেস্ট শাখা আনুন।-d
: নির্দিষ্ট প্রজেক্টগুলিকে ম্যানিফেস্ট রিভিশনে ফিরে যান। প্রকল্পটি বর্তমানে একটি বিষয় শাখায় থাকলে এটি সহায়ক, কিন্তু ম্যানিফেস্ট সংশোধন সাময়িকভাবে প্রয়োজন।-f
: একটি প্রকল্প সিঙ্ক করতে ব্যর্থ হলেও অন্যান্য প্রকল্পগুলিকে সিঙ্ক করার সাথে এগিয়ে যান৷-j threadcount
: দ্রুত সমাপ্তির জন্য থ্রেড জুড়ে সিঙ্ককে বিভক্ত করুন। নিশ্চিত করুন যে আপনি আপনার মেশিনকে অভিভূত করবেন না - অন্যান্য কাজের জন্য কিছু CPU সংরক্ষিত রাখুন। উপলব্ধ CPU-র সংখ্যা দেখতে, প্রথমে চালান:nproc --all
-q
: স্ট্যাটাস বার্তা দমন করে শান্তভাবে চালান।-s
: বর্তমান ম্যানিফেস্টে manifest-server উপাদান দ্বারা নির্দিষ্ট করা একটি পরিচিত ভাল বিল্ডে সিঙ্ক করুন।
আপলোড
repo upload [project-list]
নির্দিষ্ট প্রকল্পগুলির জন্য, রেপো স্থানীয় শাখাগুলিকে দূরবর্তী শাখাগুলির সাথে তুলনা করে যা শেষ রেপো সিঙ্কের সময় আপডেট করা হয়েছিল৷ রেপো আপনাকে এক বা একাধিক শাখা নির্বাচন করতে অনুরোধ করে যেগুলি পর্যালোচনার জন্য আপলোড করা হয়নি।
নির্বাচিত শাখায় সমস্ত প্রতিশ্রুতি একটি HTTPS সংযোগের মাধ্যমে গেরিট-এ প্রেরণ করা হয়। আপলোড অনুমোদন সক্ষম করতে আপনাকে একটি HTTPS পাসওয়ার্ড কনফিগার করতে হবে৷ HTTPS ব্যবহার করার জন্য একটি নতুন ব্যবহারকারীর নাম/পাসওয়ার্ড জোড়া তৈরি করতে পাসওয়ার্ড জেনারেটরে যান।
যখন গেরিট তার সার্ভারে অবজেক্ট ডেটা পায়, তখন এটি প্রতিটি কমিটকে পরিবর্তনে পরিণত করে যাতে পর্যালোচকরা একটি নির্দিষ্ট প্রতিশ্রুতিতে মন্তব্য করতে পারে। একাধিক চেকপয়েন্ট কমিটকে একটি একক প্রতিশ্রুতিতে একত্রিত করতে, আপলোড চালানোর আগে git rebase -i
ব্যবহার করুন।
আপনি যুক্তি ছাড়াই repo upload
, এটি আপলোড করার জন্য পরিবর্তনের জন্য সমস্ত প্রকল্প অনুসন্ধান করে।
আপলোড হওয়ার পরে পরিবর্তনগুলি সম্পাদনা করতে, আপনার স্থানীয় প্রতিশ্রুতি আপডেট করতে git rebase git rebase -i
বা git commit --amend
মতো একটি টুল ব্যবহার করুন। আপনার সম্পাদনা সম্পূর্ণ হওয়ার পরে:
- যাচাই করুন যে আপডেট করা শাখাটি বর্তমানে চেক আউট শাখা।
- সিরিজের প্রতিটি কমিটের জন্য, বন্ধনীর ভিতরে গেরিট পরিবর্তন আইডি লিখুন:
# Replacing from branch foo [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific... [ 2829 ] ec18b4ba Update proto client to support patch set replacments # 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
) ব্যবহার করুন।
পার্থক্য
repo diff [project-list]
git diff
ব্যবহার করে কমিট এবং ওয়ার্কিং ট্রির মধ্যে অসামান্য পরিবর্তন দেখায়।
ডাউনলোড
repo download target change
পর্যালোচনা সিস্টেম থেকে নির্দিষ্ট পরিবর্তন ডাউনলোড করে এবং এটি আপনার প্রকল্পের স্থানীয় কাজের ডিরেক্টরিতে উপলব্ধ করে।
উদাহরণস্বরূপ, আপনার প্ল্যাটফর্ম/বিল্ড ডিরেক্টরিতে পরিবর্তন 23823 ডাউনলোড করতে:
repo download platform/build 23823
repo sync
চালানোর ফলে repo download
মাধ্যমে পুনরুদ্ধার করা যেকোনো কমিট মুছে যায়। অথবা আপনি git checkout m/master
ব্যবহার করে দূরবর্তী শাখাটি পরীক্ষা করতে পারেন।
দ্রষ্টব্য: বিশ্বব্যাপী সমস্ত সার্ভারে প্রতিলিপি বিলম্ব রয়েছে, তাই যখন গেরিট -এ ওয়েবে একটি পরিবর্তন দৃশ্যমান হয় এবং যখন repo download
সমস্ত ব্যবহারকারীর জন্য পরিবর্তনটি খুঁজে পেতে পারে তার মধ্যে একটি সামান্য মিররিং ব্যবধান রয়েছে৷
সবার জন্য
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
কমান্ড চালানো না হলে আপলোডের জন্য প্রস্তুত কোনো শাখা প্রদর্শিত হয় না। পুনরুদ্ধার করতে, আপনি কমিট আইডি পরীক্ষা করতে পারেন, একটি নতুন শাখা শুরু করতে পারেন এবং তারপরে এটি একত্রিত করতে পারেন।