سير عمل AGit¶
يتيح لك سير عمل AGit أن تفتح pull
request على ليڤانت غيت (LevantGit) بأمر git push واحد، دون fork للـ repository ودون صلاحية كتابة
عليه: تنفّذ push إلى ref خاص بدل branch عادي، فيحوّل الخادم دفعتك إلى pull request جاهز للمراجعة.
الميزة مدعومة في Gitea الذي يعمل عليه ليڤانت غيت.
لماذا AGit؟¶
الطريقة المعتادة للمساهمة في repository لا تملك صلاحية الكتابة عليه: تنشئ منه fork في حسابك، ثم تنفّذ push لـ branch إلى الـ fork، ثم تفتح الـ pull request من الواجهة. AGit يختصر ذلك كله: تنفّذ push لتعديلاتك إلى الـ repository الأصلي مباشرة عبر ref خاص، فيحوّلها الخادم إلى pull request. لا fork مكرر يشغل مساحة، ولا خطوات في الواجهة.
ملاحظة
إن ردّ الخادم برفض الـ push إلى refs/for/... فسير عمل AGit غير متاح على هذا الـ repository؛
استخدم عندها الطريقة المعتادة بالـ fork. راجع
Pull requests.
فتح pull request بـ push¶
الشكل الأساسي: نفّذ push إلى الـ repository الأصلي مع refspec خاصة:
مكوّنات الأمر:
origin: الـ repository الهدف — الـ repository الأصلي لا fork له.HEAD: الـ branch المحلي الذي يحمل تعديلاتك المقترحة.refs/<for|draft|for-review>/<branch>: نوع الـ pull request وهدفه:for: فتح pull request عادي هدفه الـ branch المسمّى<branch>.draftوfor-review: يتجاهلهما الخادم حاليًّا بصمت (لا يفتحان draft pull request).<branch>: الـ branch الذي تريد دمج تعديلاتك فيه (مثلmain).
-o <topic|title|description>: push options تضبط الـ pull request:topic: موضوع التعديل، ويصير اسم الـ branch الذي يحمل تعديلاتك بانتظار المراجعة. مطلوب لفتح الـ pull request.title: عنوان الـ pull request (اختياري ويُستحسن)؛ يُستخدم فقط إن لم يكن للموضوع pull request مفتوح.description: وصف الـ pull request (اختياري ويُستحسن)؛ يُستخدم فقط إن لم يكن للموضوع pull request مفتوح.force-push=true: يحدّد إن كان الـ push يُحدِّث branch الـ pull request قسرًا.- ملاحظة: كتابة
-o force-pushوحدها دون قيمة تعمل أيضًا.
- ملاحظة: كتابة
مثال كامل يفتح pull request جديدًا هدفه main مع موضوع وعنوان ووصف:
git push origin HEAD:refs/for/main -o topic="topic_of_my_PR" -o title="Title of the PR" -o description="# The PR Description\nThis can be **any** markdown content.\n- [x] Ok"
بعد نجاح الـ push يطبع الخادم في الطرفية رابط الـ pull request الذي أُنشئ؛ افتحه لتراه في الواجهة كأي pull request عادي: يُراجَع ويُعلَّق عليه ويُدمَج.
تحديث الـ pull request بعد فتحه¶
أضف commits جديدة إلى الـ branch المحلي ثم أعد الأمر نفسه بالموضوع نفسه:
يتعرّف الخادم على الموضوع ويحدّث الـ pull request المفتوح بدل فتح واحد جديد. وإن كنت أعدت كتابة
التاريخ محليًّا (بـ rebase مثلًا) فأضف -o force-push.
نصيحة
الـ topic هو هوية الـ pull request في هذا السير: topic واحد = pull request واحد. اختر اسمًا
واضحًا مثل fix-login-error واستعمله في كل push يخص الـ pull request نفسه.
ماذا بعد؟¶
هذه الصفحة مبنية على وثائق Gitea (رخصة MIT) بعد ترجمتها وتبسيطها.