Permissions¶
تُدار الصلاحيات في ليڤانت غيت (LevantGit) على مستويين: الـ units، أي أجزاء الـ repository مثل Code و Issues و Wiki، ومستوى الوصول لكل unit: read أو write أو admin. في الـ repository الشخصي تمنح المستوى لكل collaborator على حدة، وفي الـ organization تمنحه عبر الـ teams، بصلاحية مستقلة لكل unit.
الـ units¶
كل repository مقسوم إلى أجزاء فرعية تسمّى units؛ هي التبويبات التي تراها في أعلى صفحة الـ repository تقريبًا. لكل unit مستوى وصول خاص بها، ويمكنك تعطيل بعضها من Settings إن لم تحتج إليها.
| الـ unit | الوصف | المستويات المتاحة |
|---|---|---|
| Code | الكود: الملفات والـ commits والـ branches | read، write |
| Issues | تقارير الأخطاء والمهام والـ milestones | read، write |
| Pull Requests | الـ pull requests ومراجعة الكود | read، write |
| Releases | الإصدارات وملفات التنزيل | read، write |
| Wiki | صفحات تكتبها وتشاركها مع الـ collaborators | read، write |
| ExternalWiki | رابط إلى wiki خارجي | read |
| ExternalTracker | رابط إلى متتبّع issues خارجي | read |
| Projects | لوحات المشاريع | read، write |
| Packages | الـ packages المرتبطة بهذا الـ repository | read، write |
| Actions | سجلات التشغيل وإعادة التشغيل أو الإلغاء | read، write |
| Settings | إعدادات الـ repository | admin |
ماذا يتيح كل مستوى؟¶
ثلاثة مستويات أساسية: read وwrite وadmin. المستوى الأعلى يشمل ما تحته دائمًا.
| الـ unit | read | write | admin |
|---|---|---|---|
| Code | تصفّح الملفات والـ commits والـ branches، وتنفيذ clone | تنفيذ push بالكود | - |
| Issues | عرض الـ issues وفتح issues جديدة | إضافة labels، تعيين assignees، إغلاق الـ issues | - |
| Pull Requests | عرض الـ pull requests وفتح طلبات جديدة | إضافة labels، تعيين assignees، إغلاق الطلبات | - |
| Releases | عرض الإصدارات وتنزيل الملفات | إنشاء الإصدارات وتعديلها | - |
| Wiki | عرض صفحات الـ wiki وتنفيذ clone لـ repository الـ wiki | إنشاء الصفحات وتعديلها وتنفيذ push إليها | - |
| ExternalWiki | فتح رابط الـ wiki الخارجي | - | - |
| ExternalTracker | فتح رابط المتتبّع الخارجي | - | - |
| Projects | عرض أعمدة اللوحات | نقل الـ issues بين الأعمدة | - |
| Packages | عرض الـ packages | رفع الـ packages وحذفها | - |
| Actions | عرض سجلات التشغيل | الموافقة، الإلغاء، إعادة التشغيل | - |
| Settings | - | - | إدارة الـ repository كاملًا |
ملاحظة
صلاحية write على الكود لا تعني بالضرورة أنك تستطيع تنفيذ push إلى أي branch. إن كان الـ branch protected فقواعد الحماية هي التي تحسم؛ راجع Protected branches.
الـ repository الشخصي¶
في الـ repository الذي تنشئه تحت حسابك أنت الـ owner الوحيد: تستطيع تغيير أي شيء فيه، ونقله إلى حساب آخر، أو حذفه. ولتتعاون مع غيرك تضيف collaborators من Settings ← Collaborators، وتمنح كل واحد منهم مستوى: read أو write أو admin.
ماذا يرى الـ collaborator؟
- بمستوى read على repository خاص (private)، يرى ما يراه أي زائر لـ repository عام: ينفّذ clone للكود، ويفتح الـ issues ويعلّق عليها، ويرسل pull requests.
- بمستوى write يستطيع فوق ذلك تنفيذ push إلى الـ branches (ضمن ما تسمح به قواعد الحماية) وتعديل صفحات الـ wiki.
- بمستوى admin يستطيع تعديل إعدادات الـ repository.
لكن حذف الـ repository أو نقله يبقى حقًّا للـ owner وحده، مهما كان مستوى الـ collaborator.
repositories الـ organization¶
في الـ organization لا يوجد owner فرد؛ الـ owners هم أعضاء فريق Owners، وكل الـ permissions الأخرى تُدار عبر الـ teams. يمكن للعضو الواحد أن ينتمي إلى أكثر من team.
فريق Owners¶
يُنشأ تلقائيًا مع إنشاء الـ organization، ويكون منشئها أول أعضائه. لا يمكن حذف هذا الـ team، ويجب أن يبقى فيه عضو واحد على الأقل. أعضاؤه يستطيعون كل شيء في الـ organization و repositories التابعة لها.
team الإدارة¶
عند إنشاء team جديد تختار بين نوعين: Administrator أو team عادي. team الإدارة يُكلَّف بـ repositories معيّنة (أو بكلها) ويستطيع أعضاؤه فعل أي شيء فيها. إنشاء الـ teams الجديدة محصور بأعضاء فريق Owners و teams الإدارة.
الـ team العادي¶
الـ team العادي هو الأكثر مرونة: تحدّد له صلاحية لكل unit على حدة (read أو write أو لا شيء)، وتحدّد نطاقه:
- إمّا أن يصل إلى كل repositories الـ organization، أو إلى repositories محدّدة تختارها.
- ويمكنك أن تسمح له بـإنشاء repositories جديدة في الـ organization أو تمنعه.
مثال عملي: team «المراجعون» بصلاحية write على الـ issues والـ pull requests فقط، و read على الكود؛ و team «المطوّرون» بصلاحية write على كل شيء.
مقارنة سريعة¶
| repository شخصي | repository organization | |
|---|---|---|
| الـ owner | مستخدم واحد | أعضاء فريق Owners |
| كيف تمنح الـ permissions | collaborator بعد collaborator | عبر الـ teams |
| صلاحية لكل unit | لا (مستوى واحد للـ collaborator) | نعم (للـ team العادي) |
| حذف الـ repository أو نقله | الـ owner فقط | فريق Owners |
أسئلة شائعة¶
ما الفرق بين read و write و admin في ليڤانت غيت؟¶
مستوى read يتيح تصفّح الكود وتنفيذ clone وفتح الـ issues والتعليق. ويضيف مستوى write تنفيذ push وإغلاق الـ issues وتعديل الـ wiki وإنشاء الإصدارات. ويضيف مستوى admin إعدادات الـ repository كاملة. والمستوى الأعلى يشمل ما تحته دائمًا، لكن حذف الـ repository أو نقله يبقى حقًّا للـ owner وحده.
كيف أضيف collaborator إلى repository؟¶
افتح الـ repository ثم Settings ← Collaborators، واكتب اسم المستخدم واختر له مستوى: read أو write أو admin. يستطيع بعدها العمل في الـ repository حتى لو كان private، ضمن ما يسمح به مستواه وقواعد حماية الـ branches. ولإزالته احذفه من القائمة نفسها في أي وقت.
ما الفرق بين صلاحيات الـ repository الشخصي و repositories الـ organization؟¶
في الـ repository الشخصي أنت الـ owner الوحيد، وتمنح كل collaborator مستوى واحدًا يشمل كل الـ units. أمّا في الـ organization فلا owner فرد؛ الـ owners هم أعضاء فريق Owners، وتُمنح الصلاحيات عبر الـ teams، ويمكن تحديد read أو write لكل unit على حدة ولكل مجموعة repositories.
لماذا لا أستطيع تنفيذ push رغم أن لي صلاحية write؟¶
غالبًا لأن الـ branch محمي. قواعد الـ protected branches تسبق مستوى الصلاحية: قد يكون الـ push
المباشر معطّلًا على main، أو محصورًا بقائمة مسموح بها، أو مشروطًا بعدد approvals قبل الـ
merge. راجع Settings ← Branches في الـ repository، أو مرّر تغييرك عبر pull request.
ماذا بعد؟¶
- Protected branches لتقييد الـ push والـ merge على branches مهمة.
- Protected tags لتحديد من يستطيع إنشاء الـ tags.
- CODEOWNERS لطلب review من أشخاص محدّدين تلقائيًا.
هذه الصفحة مبنية على وثائق Gitea (رخصة MIT) بعد ترجمتها وتبسيطها.