مرجع أوامر الريبو

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

يتم بعد ذلك نقل كافة الالتزامات على الفروع المحددة إلى 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 .

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 : إظهار الرسائل التي يكتبها الأمر إلى stderr.

تقليم

repo prune [project-list]

تقليم (حذف) المواضيع التي تم دمجها بالفعل.

يبدأ

repo start branch-name [project-list]

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

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

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

حالة

repo status [project-list]

يقارن شجرة العمل بمنطقة التدريج (الفهرس) والالتزام الأحدث على هذا الفرع (HEAD) في كل مشروع محدد. يعرض سطر ملخص لكل ملف حيث يوجد اختلاف بين هذه الحالات الثلاث.

لمعرفة حالة الفرع الحالي فقط، قم بتشغيل repo status . . يتم سرد معلومات الحالة حسب المشروع. لكل ملف في المشروع، يتم استخدام رمز مكون من حرفين.

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

خطاب معنى وصف
- لا تغيير نفس الشيء في HEAD وindex
أ تمت الإضافة ليس في HEAD، في الفهرس
م معدل في HEAD، تم تعديله في الفهرس
د تم الحذف في HEAD، وليس في الفهرس
ر تمت إعادة تسميته ليس في HEAD، تم تغيير المسار في ملف Index
ج نسخ ليس في HEAD، منسوخ من ملف آخر في الفهرس
ت تم تغيير الوضع نفس المحتوى في HEAD والفهرس، تم تغيير الوضع
ش غير مدمج الصراع بين HEAD والفهرس؛ القرار المطلوب

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

خطاب معنى وصف
- جديد/غير معروف ليس في الفهرس، في شجرة العمل
م معدل في الفهرس، في شجرة العمل، تم تعديله
د تم الحذف في الفهرس، وليس في شجرة العمل

التعامل مع أخطاء الريبو

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