يُكمّل Repo Git من خلال تبسيط العمل عبر مستودعات متعددة. للحصول على شرح للعلاقة بين Repo وGit، يُرجى الاطّلاع على أدوات التحكّم في المصدر. لمزيد من التفاصيل حول Repo، يُرجى الاطّلاع على ملف README الخاص بـ Repo.
يتم استخدام المستودعات بالشكل التالي:
repo command options
يتم عرض العناصر الاختيارية بين قوسين []. على سبيل المثال، تأخذ العديد من الأوامر project-list كمَعلمة. يمكنك تحديد project-list كقائمة أسماء أو قائمة مسارات إلى أدلة المصدر المحلية لمشاريع:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
مساعدة
repo help
يوفّر مساعدة حول الأمر repo
. يمكنك الاطّلاع على معلومات تفصيلية عن أحد ملفّات Repo التي تحدّد أمرًا كخيار:
repo help command
على سبيل المثال، يقدّم الأمر التالي وصفًا وقائمة خيارات للأمر init
:
repo help init
أو للاطّلاع فقط على قائمة الخيارات المتاحة لأحد الأوامر، شغِّل:
repo command --help
مثلاً:
repo init --help
init
repo init -u url [options]
يؤدي هذا الإجراء إلى تثبيت Repo في الدليل الحالي. ينشئ هذا الأمر .repo/
دليلاً يتضمّن مستودعات Git لرمز المصدر في Repo وملفَّي بيان Android
العاديَين.
الخيارات:
-u
: حدِّد عنوان URL لاسترداد مستودع بيان. يمكن العثور على ملف البيان المشترَك علىhttps://android.googlesource.com/platform/manifest
.-m
: اختَر ملف بيان داخل المستودع. إذا لم يتم تحديد اسم بيان، يكون العنوان التلقائي هوdefault.xml
.-b
: حدِّد نسخة سابقة، أي manifest-branch معيّنة.
مزامنة
repo sync [project-list]
تنزيل التغييرات الجديدة وتعديل الملفات النشطة في بيئتك المحلية،
ما يؤدي إلى تنفيذ git fetch
بشكل أساسي في جميع مستودعات Git في حال تنفيذ repo sync
بدون وسيطات، ستتم مزامنة الملفات لجميع المشاريع.
عند تشغيل repo sync
، سيحدث ما يلي:
إذا لم تتم مزامنة المشروع مطلقًا، يكون
repo sync
مساويًا لgit clone
، ويتم نسخ جميع الفروع في المستودع البعيد إلى دليل المشروع المحلي.إذا تمت مزامنة المشروع من قبل، تكون قيمة
repo sync
مكافئة لما يلي:git remote update git rebase origin/branch
حيث branch هو الفرع الحالي الذي يتم تسجيل المغادرة في دليل المشروع المحلي. إذا لم يكن الفرع المحلي يتتبّع فرعًا في المستودع العميق، لن تتم مزامنة المشروع.
بعد تنفيذ repo sync
بنجاح، يتم تعديل الرمز البرمجي في المشاريع المحدّدة
ومزامنته مع الرمز البرمجي في المستودع البعيد.
الخيارات الرئيسية:
-c
: لا يتم جلب سوى فرع البيان الحالي من الخادم.-d
: يمكنك تبديل المشاريع المحدّدة مرة أخرى إلى نسخة البيان. يكون هذا الخيار مفعّلاً إذا كان المشروع في فرع موضوع، ولكن تكون مراجعة البيان ضرورية مؤقتًا.-f
: يمكنك مواصلة مزامنة المشاريع الأخرى حتى إذا تعذّر مزامنة أحد المشاريع.threadcount
: يمكنك تقسيم المزامنة على مستوى سلاسل المحادثات لإكمالها بشكل أسرع. احرص على عدم تحميل جهازك بشكل زائد، واترك بعض وحدة المعالجة المركزية محجوزة للمهام الأخرى. للاطّلاع على عدد وحدات المعالجة المركزية المتاحة، عليك أولاً تشغيلnproc --all
.-q
: التشغيل بدون إزعاج من خلال حظر رسائل الحالة-s
: المزامنة مع إصدار معروف وصالح كما هو محدّد في عنصرmanifest-server
في ملف البيان الحالي
لمزيد من الخيارات، يمكنك تشغيل "repo help sync
".
تحميل
repo upload [project-list]
تحميل التغييرات إلى خادم المراجعة بالنسبة للمشروعات المحددة، يقارن Repo الفروع المحلية بالفروع البعيدة التي تم تحديثها أثناء آخر مزامنة Repo. يطلب منك Repo اختيار فرع واحد أو أكثر لم يتم تحميله للمراجعة.
يتم بعد ذلك نقل كل الفروع المحدّدة إلى Gerrit عبر اتصال HTTPS. عليك ضبط كلمة مرور HTTPS لتفعيل إذن التحميل. لإنشاء زوج جديد من اسم مستخدم/كلمة مرور لاستخدامه من خلال HTTPS، انتقِل إلى أداة إنشاء كلمات المرور.
عندما يتلقّى Gerrit بيانات العنصر عبر خادمه، يحوّل كل
commit إلى تغيير حتى يتمكّن المراجعون من التعليق على commit معيّن.
لدمج عدة عمليات إرسال نقاط تفتيش في عملية إرسال واحدة، استخدِم git rebase -i
قبل تشغيل عملية التحميل.
إذا شغّلت repo upload
بدون وسيطات، سيتم البحث في جميع المشاريع عن
تغييرات لتحميلها.
لتعديل التغييرات بعد تحميلها، استخدِم أداة مثل git rebase -i
أو
git commit --amend
لتعديل عمليات الربط المحلية. بعد اكتمال تعديلاتك:
- تأكَّد من أنّ الفرع الذي تم تعديله هو الفرع الذي تم تسجيله حاليًا.
- استخدِم
repo upload --replace PROJECT
لفتح محرِّر مطابقة التغييرات. لكلّ عملية إرسال في السلسلة، أدخِل معرّف تغيير Gerrit داخل الأقواس:
# 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
اختصارًا).
diff
repo diff [project-list]
تعرِض التغييرات غير المُطبَّقة بين الإضافة والشجرة العاملة باستخدام
git diff
.
تنزيل
repo download target change
تنزيل التغيير المحدّد من نظام المراجعة وإتاحته في دليل العمل المحلي لمشروعك
على سبيل المثال، لتنزيل
change 23823 إلى الدليل platform/build
:
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
هو اسم المراجعة من البيان، وتم تحويله إلى فرع تتبُّع محلي. استخدم هذا المتغير إذا كنت بحاجة إلى تمرير مراجعة البيان إلى أمر Git يتم تنفيذه محليًا.REPO_RREV
هو اسم المراجعة من البيان، كما هو مكتوب بالضبط في البيان.
الخيارات:
-c
: الأمر والوسيطات المراد تنفيذها. يتم تقييم الأمر من خلال/bin/sh
ويتم تمرير أي وسيطات بعده كمَعلمات موضعية لshell.-p
: عرض رؤوس المشاريع قبل إخراج الأمر المحدّد ويتم تحقيق ذلك من خلال ربط الممرات بتدفقات الأمر stdin وstdout وsterr، ثم توجيه جميع المخرجات إلى تدفق متواصل يتم عرضه في جلسة واحدة.-v
: عرض الرسائل التي يكتبها الأمر إلى الجهاز العادي
الخوخ المجفف
repo prune [project-list]
يؤدي هذا الإجراء إلى حذف المواضيع التي سبق أن تم دمجها.
بدء
repo start branch-name [project-list]
يبدأ فرعًا جديدًا للتطوير، بدءًا من المراجعة المحدّدة فيملف البيان.
تقدّم الوسيطة BRANCH_NAME
وصفًا موجزًا للتغيير الذي تحاول
إجراؤه على المشاريع. وإذا كنت لا تعرف ذلك، يمكنك استخدام الاسم
default
.
تحدّد الوسيطة project-list
المشاريع التي تشارك في هذا الموضوع
الفرع.
status
repo status [project-list]
يقارن شجرة العمل بالمنطقة المرحلية (الفهرس) وأحدث إتمام في هذا الفرع (الرأس) في كل مشروع محدد. تعرِض هذه السمة سطرًا تلخيصيًا لكل ملف يتضمّن اختلافًا بين هذه الحالات الثلاث.
للاطّلاع على حالة الفرع الحالي فقط، شغِّل repo status .
. يتم إدراج معلومات الحالة
حسب المشروع. يتم استخدام رمز مكوّن من حرفين لكل ملف في المشروع.
في العمود الأول، يشير الحرف الكبير إلى كيفية اختلاف منطقة الإعداد عن الحالة الأخيرة التي تم الالتزام بها.
Letter | المعنى | الوصف |
---|---|---|
- | لم يتغيّر موقفي | متطابق في العنوان والفهرس |
A | مضاف | غير متوفّر في قسم HEAD، بل في الفهرس |
M | تاريخ التعديل | في العنوان، تم تعديلها في الفهرس |
D | محذوف | في قسم HEAD، وليس في الفهرس |
R | تمت إعادة التسمية | غير متوفّر في قسم HEAD، تم تغيير المسار في الفهرس |
C | تم النسخ | غير مضمّنة في العنوان، تم نسخها من ملف آخر في الفهرس |
T | تم تغيير الوضع | المحتوى نفسه في العنوان والفهرس، تم تغيير الوضع |
U | لم يتم دمجها | تعارض بين HEAD والفهرس، يجب حلّه |
في العمود الثاني، يشير الحرف الصغير إلى كيفية اختلاف الدليل العامل عن الفهرس.
Letter | المعنى | الوصف |
---|---|---|
- | جديد/غير معروف | غير مضمّنة في الفهرس، بل في شجرة العمل |
د | تاريخ التعديل | في الفهرس، في شجرة العمل، تم تعديله |
يوم | محذوف | في الفهرس، وليس في شجرة العمل |
التعامل مع أخطاء المستودع
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
في بداية الجلسة. لاستردادها، يمكنك التحقّق من
معرّف الإضافة، وبدء فرع جديد ثم دمجه.