مدقق تسمية فروع git
أدخل اسم الفرع والقالب: الاسم feature/ABC-123-add-login صالح مقابل type/ticket-description، وينقسم إلى ثلاثة أجزاء هي النوع والتذكرة والوصف، والتذكرة فيه هي ABC. وإن لم يطابق تذكر الرسالة الاسم والقالب معًا. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الفرع
- feature/ABC-123-add-login
- الاصطلاح
- type/ticket-description
- أسماء المكوّنات
- type, ticket, description
- عدد المكونات
- 3
الفِرق التي تتشارك monorepo أو مستودع منتج طويل الأمد تتفق عادةً على اصطلاح لتسمية الفروع حتى تتمكن روبوتات المراجعة ونصوص الإصدار وروابط التذاكر من تحليل كل ref دون تخمين بشري. يبدو النمط الشائع مثل نوع ثم شرطة مائلة ثم تذكرة ثم واصلة ثم وصف—مثال feature/ABC-123-add-login—لكن كل مؤسسة تبتكر فواصلها وترتيب مكوّناتها. يقبل مدقق اصطلاح تسمية فروع git سلسلة الفرع وقالب الاصطلاح لديكم، ويتحقق من تطابق الاسم بالكامل من البداية إلى النهاية، ويعيد كل مكوّن مسمّى حتى تفرض CI والخطافات ولوحات التحكم السياسة دون تعبيرات منتظمة هشة لمرة واحدة.
كيف يعمل نمط الاصطلاح وما الذي يُستخرَج
الاصطلاح سلسلة قالب قصيرة من أسماء عناصر نائبة وفواصل حرفية. العناصر النائبة معرّفات عادية: تبدأ بحرف أو شرطة سفلية وتستمر بأحرف أو أرقام أو شرطات سفلية. كل ما سوى ذلك في القالب فاصل يجب أن يظهر حرفياً في اسم الفرع.
المثال الكلاسيكي type/ticket-description يعني إذن ثلاثة مكوّنات—type و ticket و description—موصولة بشرطة مائلة ثم واصلة. عندما ترسلون الفرع feature/ABC-add-login بهذا الاصطلاح، يعيد المدقق type مساوياً لـ feature و ticket مساوياً لـ ABC و description مساوياً لـ add-login. يجوز للمكوّن الأخير أن يحتوي الأحرف نفسها المستخدمة فواصل سابقة، فتبقى slugs متعددة الكلمات مثل add-user-login داخل description بدلاً من القطع عند أول واصلة.
يجب أن تكون أسماء المكوّنات فريدة داخل الاصطلاح الواحد؛ ويجب أن يبدأ النمط وينتهي بعنصر نائب؛ ويجب أن تتناوب العناصر النائبة والفواصل. تحافظ هذه القواعد على مطابق مجمّع حتمي وتتجنب الالتقاطات الغامضة.
عقد الإدخال وفحوصات الأمان وشكل الاستجابة
قبل مطابقة النمط يطبّق المعالج فحوصات أمان خفيفة لـ ref في git: بلا مسافات، بلا نقاط متتالية، بلا شرطتين مائلتين مزدوجتين، بلا تسلسل @ {، بلا شرطات مائلة عكسية، بلا شرطة مائلة أو نقطة في البداية أو النهاية، بلا .lock في النهاية، وبلا أحرف ASCII التلدة والرمز الالتفافي والنقطتين وعلامة الاستفهام والنجمة والقوس المربّع الفاتح. تُرفض أحرف التحكم أيضاً. تُحذف مفاتيح الخرج الاختيارية بدلاً من تعيينها إلى null.
التحقق الفاشل لا يُفوتر. اقرنوا الاستجابة بطبقة سياستكم إن احتجتم قائمة مسموحة لقيم type مثل feature و fix و chore أو release؛ هذه القدرة تتحقق من البنية وتستخرج الأجزاء ولا تثبت مفردات مؤسسة واحدة.
أين يحقق مدقق تسمية الفروع قيمته
تستخدم وظائف التكامل المستمر مدقق اصطلاح تسمية فروع git كخطوة أولى في خط الأنابيب حتى لا تصل طلبات السحب بأسماء مرتجلة إلى مراحل بناء مكلفة. تستدعي خطافات git وأدوات المطوّر المحلية الوحدة الصرفة نفسها—أو ودجة المتصفح المجانية أثناء التهيئة—لتعليم نمط البيت قبل الدفع. تستخرج أتمتة الإصدار مكوّن ticket لفتح أو تحديث تذاكر المتتبع، وتستخرج مكوّن type لاختيار أقسام سجل التغيير دون حيل هشة على سلاسل فرعية.
تنشر فرق المنصة التي تدير مستودعات كثيرة سلسلة اصطلاح واحدة في بوابة المطوّرين وتوجّه كل قالب وروبوت وقائمة تحقق إلى هذه النقطة النهائية، فيصبح تغيير السياسة تعديلاً واحداً للنص لا مطاردة عبر نصوص shell. تستفيد مواقع المحتوى التي تستهدف مدقق اصطلاح تسمية فروع git من نموذج حي يتطابق مساره المجاني بايتًا بايتًا مع مسار الأتمتة المدفوع.
حالات الاستخدام
بوابة CI لطلبات السحب
ارفضوا فروع طلبات السحب التي لا تطابق type/ticket-description قبل تشغيل بناءات واختبارات مكلفة.
خطافات pre-commit والتهيئة
علّموا المطوّرين نمط التسمية المحلي نفسه الذي يستخدمه الخادم عبر المطابق الصرف.
أتمتة التذاكر وسجل التغيير
استخرجوا مكوّني ticket و type من اسم الفرع لتحديث المتتبعات واختيار أقسام سجل التغيير.
الأسئلة الشائعة
ماذا يحدث إذا كان اسم الفرع فارغاً؟
لا يُقبل أبداً اسم فرع فارغ أو مسافات فقط ولا يُفوتر.
هل يجوز أن يحتوي جزء description على واصلات؟
نعم. يلتقط العنصر النائب الأخير اللاحقة المتبقية، فتبقى add-user-login داخل المكوّن الأخير عندما يكون الفاصل السابق واصلة واحدة.
هل يفرض المدقق قائمة ثابتة لأنواع الفروع؟
لا. يتحقق من البنية ويستخرج المكوّنات. طبّقوا قائمتكم المسموحة على مكوّن type إن قبلتم فقط feature و fix و chore وتسميات مشابهة.
لماذا تظهر التذكرة ABC وليس ABC-123؟
لأن التذكرة في هذا القالب تنتهي عند أول شرطة، فهذه الشرطة هي الفاصل الذي يسبق الوصف. وكل ما يأتي بعدها يذهب إلى الجزء الأخير، وهو الجزء الذي يقبل شرطاته الخاصة.
ما الأحرف التي تُفشل اسم الفرع؟
المسافات والنقاط المتتالية وعلامات الترقيم التي يمنعها git وأحرف التحكم. ويُرفض أيضًا الاسم الفارغ أو المكون من مسافات فقط، لأنه لا يمكن إنشاء فرع بلا اسم.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/git-branch-name-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"branch":"feature/ABC-123-add-login","convention":"type/ticket-description"}'const res = await fetch("https://api.kit.forhosting.com/dev/git-branch-name-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"branch": "feature/ABC-123-add-login",
"convention": "type/ticket-description"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/git-branch-name-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"branch": "feature/ABC-123-add-login",
"convention": "type/ticket-description"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/git-branch-name-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"branch":"feature/ABC-123-add-login","convention":"type/ticket-description"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"branch":"feature/ABC-123-add-login","convention":"type/ticket-description"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/git-branch-name-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"branch": "feature/ABC-123-add-login",
"convention": "type/ticket-description"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.git_branch_name_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تفشل الأسماء الفارغة بـ invalid_input، وكذلك أحرف ref غير الآمنة الشائعة مثل المسافات والنقاط المتتالية وعلامات الترقيم المحظورة. المنطق التحليلي الصرف نفسه يغذّي ودجة المتصفح المجانية ومسار API المدفوع مسبقاً، فلا تختلف فحوصات pre-commit المحلية وبوابات الخادم حول النجاح أو الفشل.
كيف يعمل نمط الاصطلاح وما الذي يُستخرَج
إذا لم يطابق الفرع النمط بالكامل، تفشل المهمة بـ invalid_input مع رسالة تقتبس الفرع والاصطلاح معاً حتى يصحّح المطوّرون الاسم أو السياسة بنظرة واحدة.
عقد الإدخال وفحوصات الأمان وشكل الاستجابة
أرسلوا بجسم JSON عبر POST سلسلتين مطلوبتين: branch وهو اسم فرع git المرشّح، و convention وهو قالب التسمية. تُقبل أسماء بديلة للراحة—branch_name و name و ref لحقل الفرع؛ و pattern و format و template لحقل الاصطلاح—لكن الأسماء القانونية تظهر في التوثيق وSDK. يجب ألا يكون الحقلان فارغين بعد رفض المسافات وحدها؛ الفرع الفارغ دائماً invalid_input لأن git لا يستطيع إنشاء ref بطول صفر، والأتمتة التي تنسى تمرير الاسم يجب أن تفشل مغلقة. عند النجاح يتضمن الجسم valid true والفرع والاصطلاح المعادين، وكائن components يربط كل اسم عنصر نائب بقيمته الملتقطة، و component_names بترتيب القالب، و component_count.
أين يحقق مدقق تسمية الفروع قيمته
لأن التنفيذ pure parse من المستوى A، كل استدعاء ناجح يكلف السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة.
أسئلة تقنية
كيف أتحقق من فرع git مقابل اصطلاح تسمية؟
أرسلوا branch (مثال feature/ABC-add-login) و convention (مثال type/ticket-description). عند النجاح تعيد API القيمة valid true وخريطة components بكل جزء مسمّى.
كم يكلف مدقق تسمية فروع git؟
أداة المتصفح مجانية. طلبات API تستخدم رصيد KIT المدفوع مسبقاً بسعر $0.002 لكل استدعاء ناجح؛ الإدخال غير الصالح لا يُفوتر.