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