سير عمل التحكم بالمصدر

يتطلب العمل مع كود Android استخدام Git (نظام تحكم في الإصدار مفتوح المصدر) و Repo (أداة إدارة المستودعات التي أنشأتها Google والتي تعمل فوق Git). راجع أدوات التحكم في المصدر للحصول على شرح للعلاقة بين Repo وGit وروابط للوثائق الداعمة لكل أداة.

تدفق

يتضمن تطوير Android سير العمل الأساسي التالي:

  1. ابدأ فرع موضوع جديد باستخدام repo start .
  2. تحرير الملفات.
  3. تغييرات المرحلة باستخدام git add .
  4. تنفيذ التغييرات باستخدام git commit .
  5. قم بتحميل التغييرات إلى خادم المراجعة باستخدام repo upload .

مهام

يتضمن العمل مع Git وRepo في مستودعات أكواد Android تنفيذ المهام الشائعة التالية.

يأمر وصف
repo init تهيئة عميل جديد.
repo sync مزامنة العميل مع المستودعات.
repo start يبدأ فرع جديد.
repo status يظهر حالة الفرع الحالي.
repo upload تحميل التغييرات إلى خادم المراجعة.
git add مراحل الملفات.
git commit يرتكب الملفات المرحلية.
git branch يظهر الفروع الحالية.
git branch [branch] إنشاء فرع موضوع جديد.
git checkout [branch] يقوم بتبديل HEAD إلى الفرع المحدد.
git merge [branch] يدمج [branch] في الفرع الحالي.
git diff يظهر اختلاف التغييرات غير المرحلية.
git diff --cached يظهر اختلاف التغييرات المرحلية.
git log يظهر تاريخ الفرع الحالي.
git log m/[codeline].. يُظهر الالتزامات التي لم يتم دفعها.

للحصول على معلومات حول استخدام Repo لتنزيل المصدر، راجع تنزيل المصدر ومرجع أمر Repo .

مزامنة العملاء

لمزامنة الملفات لجميع المشاريع المتاحة:

repo sync

لمزامنة الملفات للمشاريع المحددة:

repo sync PROJECT0 PROJECT1 ... PROJECTN

إنشاء فروع الموضوع

ابدأ فرع موضوع في بيئة العمل المحلية لديك عندما تبدأ تغييرًا، على سبيل المثال عندما تبدأ العمل على خطأ أو ميزة جديدة. فرع الموضوع ليس نسخة من الملفات الأصلية؛ إنه مؤشر لالتزام معين، مما يجعل إنشاء الفروع المحلية والتبديل بينها عملية خفيفة الوزن. باستخدام الفروع، يمكنك عزل جانب واحد من عملك عن الجوانب الأخرى. للحصول على مقالة مثيرة للاهتمام حول استخدام فروع المواضيع، راجع فصل فروع المواضيع .

لبدء فرع موضوع باستخدام الريبو، انتقل إلى المشروع وقم بتشغيل:

repo start BRANCH_NAME .

تمثل النقطة اللاحقة ( . ) المشروع في دليل العمل الحالي.

للتأكد من إنشاء الفرع الجديد:

repo status .

استخدام فروع الموضوع

لتعيين الفرع لمشروع معين:

repo start BRANCH_NAME PROJECT_NAME

للحصول على قائمة بجميع المشاريع، راجع android.googlesource.com . إذا كنت قد انتقلت بالفعل إلى دليل المشروع، فما عليك سوى استخدام نقطة لتمثيل المشروع الحالي.

للتبديل إلى فرع آخر في بيئة العمل المحلية الخاصة بك:

git checkout BRANCH_NAME

لعرض قائمة الفروع الموجودة:

git branch

أو

repo branches

يقوم كلا الأمرين بإرجاع قائمة الفروع الموجودة مع اسم الفرع الحالي مسبوقًا بعلامة النجمة (*).

ملفات التدريج

افتراضيًا، يلاحظ Git التغييرات التي تجريها في المشروع، ولكنه لا يتتبعها. لإخبار Git بالحفاظ على تغييراتك، يجب عليك وضع علامة على هذه التغييرات أو تنظيمها لتضمينها في الالتزام.

لمرحلة التغييرات:

git add

يقبل هذا الأمر وسيطات الملفات أو الدلائل الموجودة في دليل المشروع. على الرغم من الاسم، git add لا يقوم فقط بإضافة الملفات إلى مستودع Git؛ ويمكن استخدامه أيضًا لإجراء تعديلات وحذف الملفات.

عرض حالة العميل

لسرد حالة الملفات:

repo status

لعرض التعديلات غير الملتزم بها (التحريرات المحلية التي لم يتم وضع علامة عليها للالتزام):

repo diff

لعرض التعديلات المُلتزم بها (التحريرات الموجودة التي تم وضع علامة الالتزام عليها)، تأكد من وجودك في دليل المشروع ثم قم بتشغيل git diff باستخدام الوسيطة cached :

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

ارتكاب التغييرات

الالتزام هو الوحدة الأساسية للتحكم في المراجعة في Git ويتكون من لقطة من بنية الدليل ومحتويات الملف للمشروع بأكمله. استخدم هذا الأمر لإنشاء التزام في Git:

git commit

عندما يُطلب منك إرسال رسالة التزام، قم بتقديم رسالة قصيرة (ولكنها مفيدة) للتغييرات المرسلة إلى AOSP. إذا لم تقم بإضافة رسالة التزام، فسيفشل الالتزام.

تحميل التغييرات إلى Gerrit

قم بالتحديث إلى الإصدار الأخير، ثم قم بتحميل التغيير:

repo sync
repo upload

تُرجع هذه الأوامر قائمة بالتغييرات التي قمت بتنفيذها وتطالبك بتحديد الفروع لتحميلها إلى خادم المراجعة. إذا كان هناك فرع واحد فقط، فسترى مطالبة y/n بسيطة.

حل تعارضات المزامنة

إذا أعاد أمر repo sync تعارضات المزامنة:

  1. عرض الملفات التي تم إلغاء دمجها (رمز الحالة = U).
  2. قم بتحرير مناطق الصراع حسب الضرورة.
  3. قم بالتغيير إلى دليل المشروع ذي الصلة. قم بإضافة الملفات المتأثرة وتنفيذها، ثم قم بإعادة صياغة التغييرات:
    git add .
    git commit
    git rebase --continue
    
  4. بعد اكتمال عملية إعادة الأساس، ابدأ المزامنة بالكامل مرة أخرى:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

تنظيف العملاء

بعد دمج التغييرات في Gerrit، قم بتحديث دليل العمل المحلي الخاص بك، ثم استخدم repo prune لإزالة فروع المواضيع القديمة بأمان:

repo sync
repo prune

حذف العملاء

نظرًا لأن جميع معلومات الحالة مخزنة في عميلك، فأنت تحتاج فقط إلى حذف الدليل من نظام الملفات الخاص بك:

rm -rf WORKING_DIRECTORY

يؤدي حذف العميل نهائيًا إلى حذف أي تغييرات لم تقم بتحميلها للمراجعة.