مرجع أمر Repo

يُكمّل Repo Git من خلال تبسيط العمل عبر مستودعات متعددة. بالنسبة إلى للعلاقة بين Repo وGit، راجع أدوات التحكم في المصادر: لمزيد من المعلومات، التفاصيل حول Repo، راجِع التقرير التمهيدي

يظهر استخدام 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: تقسيم المزامنة بين سلاسل المحادثات لـ بشكل أسرع. احرص على عدم تحميل عبء زائد على جهازك، وترك جزء من وحدة المعالجة المركزية (CPU) محجوزة للمهام الأخرى. لمعرفة عدد وحدات المعالجة المركزية المتاحة، يُرجى تشغيل الجهاز أولاً 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: عرض الرسائل التي يكتبها الأمر إلى الجهاز العادي

تقليم

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

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

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 في بداية الجلسة. لاسترداد الحساب، يمكنك التحقق من رقم تعريف الإتمام، ابدأ فرعًا جديدًا ثم ادمجه.