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

يتطلب العمل باستخدام رمز 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

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

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

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

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 الملفات فقط إلى بمستودع جيت؛ ويمكن استخدامها أيضًا لتنظيم تعديلات الملفات عمليات الحذف.

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

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

repo status

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

repo diff

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

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

جارٍ تنفيذ التغييرات

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

git commit

عندما يُطلب منك التزام، قدِّم رسالة قصيرة (ولكنها مفيدة) التغييرات التي تم إرسالها إلى "مشروع مساعد Google" (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

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