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

Protected tags

الـ protected tag في ليڤانت غيت (LevantGit) قاعدة تحدّد من يستطيع إنشاء tag يطابق اسمًا أو نمطًا معيّنًا، أو تعديله أو حذفه. تضبطها من SettingsTags باسم صريح أو نمط glob أو تعبير نمطي، وتختار المستخدمين والـ teams المسموح لهم؛ ومن سواهم يرى رسالة رفض عند push الـ tag في الطرفية.

لماذا تحتاجها؟ الـ tags غالبًا هي ما تبني عليه الإصدارات وعمليات النشر؛ tag باسم v2.0.0 خاطئ أو مُعاد كتابته قد يربك كل من يعتمد على مشروعك. بالـ protected tags تضمن أن tags الإصدار لا ينشئها إلا من تثق بهم.

ملاحظة

إدارة هذه القواعد تحتاج صلاحية admin على الـ repository أو أن تكون owner له؛ راجع Permissions.

إعداد protected tag

  1. افتح الـ repository ثم SettingsTags.
  2. اكتب في حقل النمط اسمًا واحدًا، أو نمط glob، أو تعبيرًا نمطيًا (regular expression).
  3. اختر المستخدمين و/أو الـ teams المسموح لهم. إن تركت الحقلين فارغين فلن يستطيع أحد إنشاء هذا الـ tag أو تعديله.
  4. اضغط Save.

تسري القاعدة على كل الطرق: الـ push بالـ tags من Git، وإنشاء الإصدار من الواجهة، وواجهة API. من يحاول تنفيذ push لـ tag مطابق وهو خارج القائمة يرى رسالة رفض في الطرفية.

نصيحة

تَرْك القائمتين فارغتين طريقة سريعة لتجميد tag موجود: لا أحد يستطيع حذفه أو نقله إلى commit أخرى.

الأنماط

يقبل حقل النمط صياغة glob أو تعبيرًا نمطيًا. للتعبير النمطي أحِط النمط بشرطتين مائلتين /.../، وهكذا يميّزه ليڤانت غيت عن glob.

أمثلة:

النوع نمط الـ protected tag tags قد تطابقه
Glob v* v، v-1، version2
Glob v[0-9] v0، v1 حتى v9
Glob *-release 2.1-release، final-release
Glob release release فقط
Glob *release* release، 2.1-release، 1_release-candidate
Glob {v,rel}-* v-، v-1، v-final، rel-، rel-x
Glob * كل أسماء الـ tags
Regex /\Av/ v، v-1، version2
Regex /\Av[0-9]\z/ v0، v1 حتى v9
Regex /\Av\d+\.\d+\.\d+\z/ v1.0.17، v2.1.0
Regex /\Av\d+(\.\d+){0,2}\z/ v1، v2.1، v1.2.34
Regex /-release\z/ 2.1-release، final-release
Regex /release/ release، 2.1-release، 1_release-candidate
Regex /\Arelease\z/ release فقط
Regex /^release$/ release فقط
Regex /\A(v\|rel)-/ v-، v-1، v-final، rel-، rel-x
Regex /.+/ كل أسماء الـ tags

بعض الملاحظات على الجدول:

  • في glob، النجمة * تطابق أي عدد من الأحرف، والأقواس المربّعة [0-9] تطابق حرفًا واحدًا من المجموعة، والأقواس المعقوفة {v,rel} تطابق أحد البدائل.
  • في التعابير النمطية، \A تعني «بداية الاسم» و\z تعني «نهايته»؛ من دونهما يطابق النمط أي tag يحتوي النص، كما في /release/.
  • النمط /\Av\d+\.\d+\.\d+\z/ هو الأنسب لمن يتّبع الترقيم الدلالي (semantic versioning) مثل v1.4.2.

مثال عملي

تريد أن يكون إنشاء tags الإصدار من حق team «الإصدارات» فقط، مع ترك حرية الـ tags التجريبية للجميع:

  1. أنشئ قاعدة بالنمط /\Av\d+\.\d+\.\d+\z/ واختر team الإصدارات في قائمة الـ teams.
  2. لا تنشئ قاعدة لبقية الـ tags؛ ما لا تطابقه قاعدة يبقى مفتوحًا لكل من له صلاحية write.

الآن v1.4.2 لا ينفّذ له push إلا الـ team، بينما test-build-17 ينفّذه أي مساهم.

ماذا بعد؟


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