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

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

تدفق

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

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

مهام Google

يتضمن العمل مع 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

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

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

لبدء فرع موضوع باستخدام Repo، انتقِل إلى المشروع ونفِّذ:

repo start BRANCH_NAME .

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

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

repo status .

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

لإسناد الفرع إلى مشروع معيّن:

repo start BRANCH_NAME PROJECT_NAME

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

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

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

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