مرجع أمر Repo

يُكمّل 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

إعداد

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

تنزيل التغيير المحدّد من نظام المراجعة وإتاحته في دليل العمل المحلي لمشروعك

على سبيل المثال، لتنزيل تغيير 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: عرض الرسائل التي يكتبها الأمر في stderr

الخوخ المجفف

repo prune [project-list]

يؤدي هذا الإجراء إلى حذف المواضيع التي سبق دمجها.

بدء

repo start branch-name [project-list]

يبدأ فرعًا جديدًا للتطوير، بدءًا من المراجعة المحدّدة فيملف البيان.

تقدّم الوسيطة BRANCH_NAME وصفًا موجزًا للتغيير الذي تحاول إجراؤه على المشاريع. إذا كنت لا تعرفه، يمكنك استخدام الاسم default

تحدد الوسيطة project-list المشاريع المشاركة في هذا الموضوع. فرع.

status

repo status [project-list]

تقارن بين الشجرة النشطة ومنطقة الإعداد (الفهرس) وآخر عملية إرسال في هذا الفرع (HEAD) في كل مشروع محدّد. تعرِض هذه السمة سطرًا تلخيصيًا لكل ملف يتضمّن اختلافًا بين هذه الحالات الثلاث.

للاطّلاع على حالة الفرع الحالي فقط، شغِّل repo status .. يتم إدراج معلومات الحالة حسب المشروع. بالنسبة لكل ملف في المشروع، يتم تضمين حرفين المستخدم.

في العمود الأول، يشير الحرف الكبير إلى مدى اختلاف المساحة المرحلية من آخر حالة الالتزام.

Letter المعنى الوصف
- لم يتغيّر موقفي متطابق في العنوان والفهرس
A مضاف غير متوفّر في قسم HEAD، بل في الفهرس
M تاريخ التعديل في العنوان، تم تعديلها في الفهرس
D محذوف في قسم HEAD، وليس في الفهرس
R تمت إعادة التسمية ليس في رأس الصفحة، تم تغيير المسار في الفهرس
C تم النسخ ليست في HEAD، تم نسخها من عمود آخر في الفهرس.
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 في بداية الجلسة. لاسترداد الحساب، يمكنك التحقق من رقم تعريف الإتمام، ابدأ فرعًا جديدًا ثم ادمجه.