انتقل إلى المحتوى

Template repositories

الـ template repository في ليڤانت غيت (LevantGit) هو repository تجعله قالبًا، فيُنشئ منه أي شخص repository جديدًا بنسخة من محتواه دون تاريخ الـ commits ودون fork. تحتاجه حين تتكرّر البنية نفسها في كل مشروع: ملفات الإعداد والترخيص والـ workflows. ويستطيع ليڤانت غيت ملء متغيّرات مثل اسم الـ repository والسنة عند الإنشاء.

ما هو الـ template repository؟

الـ template repository هو repository عادي تضع فيه هيكل مشروع جاهزًا: ملفات الإعداد، ملف README، الترخيص، الـ workflows، وغيرها. بعد ذلك يستطيع أي شخص يراه أن ينشئ منه repository جديدًا بنسخة من محتواه، دون تاريخ الـ commits القديم، ودون الحاجة إلى fork.

جعل الـ repository قالبًا

  1. افتح الـ repository ثم Settings.
  2. في القسم الأساسي فعّل الخيار 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:

# ${REPO_NAME}

${REPO_DESCRIPTION}

Created by ${REPO_OWNER} in ${MONTH_ENGLISH} ${YEAR}.

فسيصبح في الـ 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 نفسه.

ماذا بعد؟


هذه الصفحة مبنية على وثائق Gitea (رخصة MIT) بعد ترجمتها وتبسيطها.