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

يكمل الريبو Git من خلال تبسيط العمل عبر مستودعات متعددة. راجع أدوات التحكم في المصدر للحصول على شرح للعلاقة بين Repo و Git. لمزيد من التفاصيل حول Repo ، راجع Repo README .

يأخذ استخدام الريبو الشكل التالي:

repo command options

تظهر العناصر الاختيارية بين قوسين []. على سبيل المثال ، تتخذ العديد من الأوامر project-list كوسيطة. يمكنك تحديد project-list كقائمة أسماء أو قائمة مسارات لأدلة المصادر المحلية للمشاريع:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

يساعد

هذه الصفحة تسلط الضوء فقط على الخيارات الرئيسية. انظر تعليمات سطر الأوامر للحصول على التفاصيل الكاملة. عند تثبيت Repo ، يمكنك العثور على أحدث الوثائق التي تبدأ بملخص لجميع الأوامر عن طريق تشغيل:

repo help

يمكنك الاطلاع على معلومات مفصلة حول أي أمر من خلال تشغيل هذا داخل شجرة الريبو:

repo help command

على سبيل المثال ، ينتج عن الأمر التالي وصف وقائمة خيارات لوسيطة init الخاصة بـ Repo ، والتي تقوم بتهيئة Repo في الدليل الحالي. (انظر الحرف الأول للحصول على التفاصيل.)

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 المتبقية ، يجب أن يكون دليل العمل الحالي إما الدليل الأصلي لـ .repo/ أو دليلًا فرعيًا للدليل الأصل.

تزامن

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

  • إذا أدت عملية Git rebase إلى حدوث تعارضات في الدمج ، فاستخدم أوامر Git العادية (على سبيل المثال ، git rebase --continue - استمر) لحل التعارضات.

بعد التشغيل الناجح repo sync ، يتم تحديث التعليمات البرمجية في المشاريع المحددة وتتم مزامنتها مع الرمز الموجود في المستودع البعيد.

فيما يلي الخيارات الرئيسية. راجع repo help sync لمزيد من المعلومات:

  • -c : جلب فرع البيان الحالي فقط من الخادم.

  • -d : قم بتبديل المشروعات المحددة مرة أخرى إلى مراجعة البيان. يكون هذا مفيدًا إذا كان المشروع حاليًا في فرع موضوع ، ولكن هناك حاجة إلى مراجعة البيان مؤقتًا.

  • -f : تابع مزامنة المشاريع الأخرى حتى في حالة فشل مزامنة المشروع.

  • -j threadcount : قم بتقسيم المزامنة عبر سلاسل الرسائل لإكمالها بشكل أسرع. تأكد من عدم إرباك جهازك - اترك بعض وحدة المعالجة المركزية مخصصة لمهام أخرى. لمعرفة عدد وحدات المعالجة المركزية المتاحة ، قم أولاً بتشغيل: nproc --all

  • -q : تشغيل بهدوء عن طريق منع رسائل الحالة.

  • -s : مزامنة مع بنية جيدة معروفة كما هو محدد بواسطة عنصر manifest-server في البيان الحالي.

تحميل

repo upload [project-list]

بالنسبة للمشاريع المحددة ، يقارن Repo الفروع المحلية بالفروع البعيدة التي تم تحديثها أثناء مزامنة Repo الأخيرة. يطالبك الريبو باختيار واحد أو أكثر من الفروع التي لم يتم تحميلها للمراجعة.

ثم يتم إرسال جميع الالتزامات في الفروع المحددة إلى Gerrit عبر اتصال HTTPS. تحتاج إلى تكوين كلمة مرور HTTPS لتمكين ترخيص التحميل. قم بزيارة مولد كلمة المرور لإنشاء اسم مستخدم / كلمة مرور جديدة لاستخدامهما عبر HTTPS.

عندما يتلقى Gerrit بيانات الكائن عبر خادمه ، فإنه يحول كل التزام إلى تغيير بحيث يمكن للمراجعين التعليق على التزام معين. لدمج العديد من التزامات نقاط التحقق في التزام واحد ، استخدم git rebase -i قبل تشغيل التحميل.

إذا قمت بتشغيل repo upload بدون وسيطات ، فإنه يبحث في جميع المشاريع عن التغييرات التي سيتم تحميلها.

لتعديل التغييرات بعد تحميلها ، استخدم أداة مثل git rebase -i أو git commit --amend - تعديل لتحديث التزاماتك المحلية. بعد اكتمال تعديلاتك:

  • تحقق من أن الفرع المحدث هو الفرع المعار حاليًا.
  • لكل التزام في السلسلة ، أدخل معرف تغيير Gerrit داخل الأقواس:
    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacments
    # 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 Branch (أو --cbr للاختصار).

فرق

repo diff [project-list]

يُظهر التغييرات البارزة بين الالتزام والشجرة العاملة باستخدام git diff .

تحميل

repo download target change

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

على سبيل المثال ، لتنزيل التغيير 23823 في دليل النظام الأساسي / البناء الخاص بك:

repo download platform/build 23823

يؤدي تشغيل repo sync إلى إزالة أي التزامات يتم استردادها مع repo download . أو يمكنك التحقق من الفرع البعيد باستخدام git checkout m/master .

ملاحظة: هناك تأخيرات في النسخ المتماثل لجميع الخوادم في جميع أنحاء العالم ، لذلك هناك تأخر بسيط في النسخ المتطابق بين وقت ظهور التغيير على الويب في Gerrit والوقت الذي يمكن فيه repo download العثور على التغيير لجميع المستخدمين.

فورال

repo forall [project-list] -c command

ينفذ أمر shell المحدد في كل مشروع. يتم توفير متغيرات البيئة الإضافية التالية بواسطة 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 المشاريع التي تشارك في فرع الموضوع هذا.

ملاحظة: النقطة (.) هي اختصار للمشروع في دليل العمل الحالي.

الحالة

repo status [project-list]

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

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

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

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