مرجع أمر Repo

يُكمّل Repo Git من خلال تبسيط العمل عبر مستودعات متعددة. للحصول على شرح للعلاقة بين Repo وGit، يُرجى الاطّلاع على أدوات التحكم في المصدر. لمزيد من التفاصيل حول Repo، يمكنك الاطّلاع على 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

إعداد

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 بيانات الكائن عبر خادمها، فإنها تحول كل التزام إلى تغيير حتى يتمكن المراجعون من التعليق على التزام محدد. لدمج عدة نقاط مرجعية في عملية التزام واحدة، استخدِم 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 للاختصار).

الفرق

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.

للجميع

repo forall [project-list] -c command

لتنفيذ أمر الغلاف المحدد في كل مشروع. تتوفّر متغيّرات البيئة الإضافية التالية من خلال "repo forall":

  • تم ضبط REPO_PROJECT على الاسم الفريد للمشروع.
  • REPO_PATH هو المسار المرتبط بجذر العميل.
  • REPO_REMOTE هو اسم النظام البعيد الوارد في ملف البيان.
  • وREPO_LREV هو اسم النسخة السابقة من البيان، وتمت ترجمته إلى فرع تتبُّع محلي. استخدم هذا المتغير إذا كنت بحاجة إلى تمرير مراجعة البيان إلى أمر Git يتم تنفيذه محليًا.
  • وREPO_RREV هو اسم النسخة السابقة من البيان، كما هو مكتوب في البيان.

خيارات:

  • -c: الأمر والوسيطات المراد تنفيذها. يتم تقييم الأمر من خلال /bin/sh وأي وسيطات بعده يتم تمريرها كمعلَمات موضع واجهة أوامر.
  • -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 المعنى الوصف
- لم يتغيّر موقفي الشيء نفسه في رأس الصفحة والفهرس
جيم تمّت الإضافة. ليست في HEAD، في الفهرس
M تاريخ التعديل في HEAD، تم تعديلها في الفهرس
D محذوف في HEAD، وليس في الفهرس
R تمت إعادة التسمية ليس في رأس الصفحة، تم تغيير المسار في الفهرس
C تم النسخ ليست في HEAD، تم نسخها من عمود آخر في الفهرس.
T تم تغيير الوضع المحتوى نفسه في عنوان الرأس والفهرس، تم تغيير الوضع
U تم إلغاء الدمج هناك تعارض بين رأس الصفحة والفهرس؛ يجب حل المشكلة

وفي العمود الثاني، يشير حرف صغير إلى أوجه اختلاف دليل العمل عن الفهرس.

Letter المعنى الوصف
- جديد/غير معروف ليس في الفهرس، في شجرة العمل
د تاريخ التعديل في الفهرس، في شجرة العمل، تم تعديله
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 في بداية الجلسة. لاسترداد الحساب، يمكنك التحقق من رقم تعريف الاشتراك، وبدء فرع جديد، ثم دمجه.