Template repositories¶
الـ template repository في ليڤانت غيت (LevantGit) هو repository تجعله قالبًا، فيُنشئ منه أي شخص repository جديدًا بنسخة من محتواه دون تاريخ الـ commits ودون fork. تحتاجه حين تتكرّر البنية نفسها في كل مشروع: ملفات الإعداد والترخيص والـ workflows. ويستطيع ليڤانت غيت ملء متغيّرات مثل اسم الـ repository والسنة عند الإنشاء.
ما هو الـ template repository؟¶
الـ template repository هو repository عادي تضع فيه هيكل مشروع جاهزًا: ملفات الإعداد، ملف README، الترخيص، الـ workflows، وغيرها. بعد ذلك يستطيع أي شخص يراه أن ينشئ منه repository جديدًا بنسخة من محتواه، دون تاريخ الـ commits القديم، ودون الحاجة إلى fork.
جعل الـ repository قالبًا¶
- افتح الـ repository ثم Settings.
- في القسم الأساسي فعّل الخيار Template Repository واحفظ.
يمكنك أيضًا تفعيل الخيار أثناء الـ push بخيار repo.template=true؛ انظر
الـ push وخياراته.
إنشاء repository من قالب¶
في صفحة الـ template repository اضغط زر Use this template، أو عند إنشاء repository جديد اختر القالب من قائمة Template. اختر ما تريد نسخه (المحتوى، الـ labels، الـ webhooks، الـ branches…) ثم أنشئ الـ repository.
توسيع المتغيّرات (variable expansion)¶
عند الإنشاء من قالب يمكن لليڤانت غيت أن يستبدل متغيّرات داخل الملفات بقيم حقيقية. افتراضيًا لا
يلمس أي ملف؛ يفحص فقط الملفات التي تطابق الأنماط المكتوبة في الملف .gitea/template داخل
القالب. هذا الملف نفسه لا يُنسخ إلى الـ repository الجديد، وكل الملفات الأخرى تُنسخ.
صيغة الأنماط هي gobwas/glob، وهي قريبة جدًا من صيغة ملف
.gitignore مع فروق طفيفة.
مثال لملف .gitea/template¶
كل المسارات نسبية إلى جذر الـ repository:
# Expand all .go files, anywhere in the repository
**.go
# All text files in the text directory
text/*.txt
# A specific file
a/b/c/d.json
# Batch files in both upper or lower case can be matched
**.[bB][aA][tT]
المتغيّرات المتاحة¶
في أي ملف يطابق الأنماط السابقة تُستبدل المتغيّرات التالية. وتُستبدل أيضًا في أسماء الملفات والمجلدات المطابقة، بعد تنقية تحفّظية لتبقى الأسماء صالحة على كل أنظمة الملفات.
اكتب المتغيّر بصيغة $VAR أو ${VAR}. ولكتابة $ حرفيًا دون استبدال استخدم $$، مثل $$VAR
أو $${VAR}.
| المتغيّر | يُستبدل بـ | قابل للتحويل |
|---|---|---|
| YEAR | سنة إنشاء الـ repository (مثل 2024) |
✘ |
| MONTH | شهر إنشاء الـ repository (مثل 03) |
✘ |
| MONTH_ENGLISH | الشهر بالإنجليزية (مثل March) |
✓ |
| DAY | يوم إنشاء الـ repository (مثل 02) |
✘ |
| REPO_NAME | اسم الـ repository الجديد | ✓ |
| TEMPLATE_NAME | اسم الـ template repository | ✓ |
| REPO_DESCRIPTION | وصف الـ repository الجديد | ✘ |
| TEMPLATE_DESCRIPTION | وصف الـ template repository | ✘ |
| REPO_OWNER | owner الـ repository الجديد | ✓ |
| TEMPLATE_OWNER | owner الـ template repository | ✓ |
| REPO_LINK | رابط الـ repository الجديد | ✘ |
| TEMPLATE_LINK | رابط الـ template repository | ✘ |
| REPO_HTTPS_URL | رابط الـ clone عبر HTTPS للـ repository الجديد | ✘ |
| TEMPLATE_HTTPS_URL | رابط الـ clone عبر HTTPS للـ template repository | ✘ |
| REPO_SSH_URL | رابط الـ clone عبر SSH للـ repository الجديد | ✘ |
| TEMPLATE_SSH_URL | رابط الـ clone عبر SSH للـ template repository | ✘ |
مثال عملي¶
لو وضعت في القالب ملف README.md بهذا المحتوى، وأدرجت README.md في .gitea/template:
فسيصبح في الـ repository الجديد شيئًا مثل «# my-api» ثم الوصف ثم «Created by username in March 2024.».
المحوِّلات (transformers)¶
المتغيّرات المعلَّمة «قابل للتحويل» في الجدول لها صيغ بديلة تطبّق عليها محوِّل أسلوب كتابة. تستدعي
الصيغة البديلة بإلحاق اسم المحوِّل باسم المتغيّر. مثلًا للحصول على REPO_NAME بأسلوب PASCAL
اكتب ${REPO_NAME_PASCAL}.
المحوِّلات المتاحة (بافتراض أن المدخل هو go-sdk):
| المحوِّل | النتيجة |
|---|---|
| SNAKE | go_sdk |
| KEBAB | go-sdk |
| CAMEL | goSdk |
| PASCAL | GoSdk |
| LOWER | go-sdk |
| UPPER | GO-SDK |
| TITLE | Go-Sdk |
نصيحة
المحوِّلات مفيدة خاصة في الكود: اسم حزمة بأسلوب SNAKE، واسم صنف بأسلوب PASCAL، كلاهما
من اسم الـ repository نفسه.
ماذا بعد؟¶
- الـ push وخياراته: اجعل الـ repository قالبًا من سطر الأوامر.
- Markdown: اكتب ملف README جيدًا لقالبك.
- قوالب Issues و Pull requests: نوع آخر من القوالب يعمل داخل الـ repository الواحد.
هذه الصفحة مبنية على وثائق Gitea (رخصة MIT) بعد ترجمتها وتبسيطها.