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

يكمل 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، يمكنك العثور على أحدث الوثائق بدءًا من ملخص لجميع الأوامر عن طريق تشغيل:

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

  • تأكد من أن الفرع المحدث هو الفرع المسحوب حاليًا.
  • استخدم 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 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 (أو --cbr للاختصار).

فرق

repo diff [project-list]

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

تحميل

repo download target change

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

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

repo download platform/build 23823

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

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

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