قم بإدارة خطافات git بسهولة في تكوين الملحن الخاص بك. تسهل أداة سطر الأوامر هذه تنفيذ الاستخدام المتسق على مستوى المشروع لخطافات git. تحديد الخطافات في ملف الملحن يجعلها متاحة لكل عضو في فريق المشروع. يوفر هذا بيئة وسلوكًا متسقين للجميع وهو أمر رائع. من الممكن أيضًا استخدامها لإدارة خطافات git عالميًا لكل مستودع على جهاز الكمبيوتر الخاص بك. بهذه الطريقة يكون لديك مجموعة موثوقة من الخطافات التي صممتها بنفسك لكل مشروع تختار العمل عليه.
أضف قسم hooks إلى القسم extra في ملف composer.json الخاص بك وأضف الخطافات هناك.
{
"extra" : {
"hooks" : {
"pre-commit" : [
"echo committing as $(git config user.name)" ,
"php-cs-fixer fix ." // fix style
] ,
// verify commit message. ex: ABC-123: Fix everything
"commit-msg" : "grep -q '[A-Z]+-[0-9]+.*' $1" ,
"pre-push" : [
"php-cs-fixer fix --dry-run ." // check style
"phpunit"
] ,
"post-merge" : "composer install"
"..." : "..."
}
}
}ثم التثبيت مع
composer require --dev brainmaestro/composer-git-hooks يؤدي هذا إلى تثبيت ملف cghooks الثنائي في مجلد vendor/bin الخاص بك. إذا لم يكن هذا المجلد موجودًا في المسار الخاص بك، فستحتاج إلى تمهيد كل أمر بـ vendor/bin/ .
ملاحظة: الخطافات المعلنة في scripts أو أقسام جذر hooks في composer.json json لم تعد مدعومة في الإصدار 3.
يمكنك أيضًا تثبيته عالميًا. يبدو هذا أكثر طبيعية عند استخدام cghooks مع الدعم المُضاف حديثًا لإدارة خطافات git العالمية.
composer global require --dev brainmaestro/composer-git-hooks تتمتع جميع الأوامر بدعم عالمي (إلى جانب اختبار الخطافات. ولا يزال يتطلب التواجد في الدليل باستخدام ملف composer.json ).
عندما يكون الخطاف عبارة عن سلسلة من الأوامر، فقد يكون من المفيد إيقاف التنفيذ عند فشل الأمر.
حدد الخطافات المتأثرة في قسم تكوين stop-on-failure .
{
"extra" : {
"hooks" : {
"config" : {
"stop-on-failure" : [ " pre-push " ]
},
"pre-push" : [
" php-cs-fixer fix --dry-run --stop-on-violation . " ,
" phpunit "
],
}
}
} تأكد دائمًا من تشغيل أمر التحديث بعد تغيير قسم تكوين stop-on-failure .
يمكن إضافة الخطافات المخصصة إلى مصفوفة custom-hooks في قسم التكوين.
{
"extra" : {
"hooks" : {
"config" : {
"custom-hooks" : [ " pre-flow-feature-start " ]
},
"pre-flow-feature-start" : [
" echo 'Starting a new feature...' "
]
}
}
} تأكد دائمًا من تشغيل أمر التحديث بعد تغيير قسم تكوين custom-hooks . ملاحظة: config ليس قيمة ربط مخصصة صالحة.
قم بإضافة برنامج cghooks النصي إلى قسم scripts في ملف composer.json الخاص بك. بهذه الطريقة، يمكن تشغيل الأوامر باستخدام composer cghooks ${command} . يعد هذا مثاليًا إذا كنت تفضل عدم تعديل مسار النظام لديك.
{
"scripts" : {
"cghooks" : " vendor/bin/cghooks " ,
"..." : " ... "
}
} أضف الأحداث التالية إلى ملف composer.json الخاص بك. سيتم تشغيل أوامر cghooks في كل مرة تقع فيها الأحداث. انتقل إلى أحداث أمر الملحن لمزيد من التفاصيل حول نظام أحداث الملحن.
{
"scripts" : {
"post-install-cmd" : " cghooks add --ignore-lock " ,
"post-update-cmd" : " cghooks update " ,
"..." : " ... "
}
} يجب تشغيل جميع الأوامر التالية إما في نفس المجلد الذي يوجد به ملف composer.json الخاص بك أو عن طريق تحديد خيار --git-dir للإشارة إلى مجلد يحتوي على ملف composer.json .
بعد اكتمال التثبيت، قم بتشغيل cghooks add لإضافة كافة خطافات git الصالحة التي تم تحديدها في تكوين الملحن.
| خيار | وصف | يأمر |
|---|---|---|
no-lock | لا تقم بإنشاء ملف القفل | cghooks add --no-lock |
ignore-lock | أضف ملف القفل إلى .gitignore | cghooks add --ignore-lock |
force-win | فرض توافق Windows bash | cghooks add --force-win |
يحتوي ملف lock على قائمة بجميع الخطافات المضافة.
إذا تم استخدام العلامة --global ، فستتم إضافة الخطافات عالميًا، وسيتم أيضًا تعديل تكوين git العام. إذا لم يتم توفير أي دليل، فهناك بديل إلى core.hooksPath الحالي في التكوين العام. إذا لم يتم تعيين هذه القيمة، فستكون القيمة الافتراضية هي $COMPOSER_HOME (يحدث هذا الإجراء الاحتياطي المحدد فقط لأمر add ). سوف يفشل مع حدوث خطأ إذا لم يكن هناك مسار بعد الإجراءات الاحتياطية.
يتجاهل أمر التحديث الذي يتم تشغيله مع cghooks update ملف القفل بشكل أساسي ويحاول إضافة خطافات من ملف الملحن. وهذا مشابه لما فعله خيار --force لأمر add . يكون هذا الأمر مفيدًا إذا تغيرت الخطافات الموجودة في ملف composer.json منذ المرة الأولى التي تمت فيها إضافة الخطافات.
يعمل هذا بشكل مشابه عند استخدامه مع --global باستثناء أنه لا يوجد بديل إلى $COMPOSER_HOME إذا لم يتم توفير دليل.
يمكن إزالة الخطافات بسهولة باستخدام cghooks remove . سيؤدي هذا إلى إزالة كافة الخطافات التي تم تحديدها في تكوين الملحن.
يمكن أيضًا إزالة الخطافات عن طريق تمريرها كوسيطات. يقوم الأمر cghooks remove pre-commit post-commit والذي سيؤدي إلى إزالة خطافات pre-commit وما post-commit .
| خيار | وصف | يأمر |
|---|---|---|
force | احذف الخطافات دون التحقق من ملف القفل | cghooks remove --force |
انتبه : إذا تم التلاعب بملف القفل أو تم استخدام خيار القوة، فستتم أيضًا إزالة الخطافات التي كانت موجودة بالفعل قبل استخدام هذه الحزمة، ولكن تم تحديدها في تكوين البرامج النصية للملحن. بمعنى، إذا كان لديك خطاف سابق pre-commit ، ولكن تكوين الملحن الحالي الخاص بك يحتوي أيضًا على خطاف pre-commit ، فسيؤدي هذا الخيار إلى قيام الأمر بإزالة الخطاف الأولي الخاص بك.
لا يحتوي هذا أيضًا على بديل إلى $COMPOSER_HOME إذا لم يتم توفير دليل عند استخدامه مع --global .
يمكن إدراج الخطافات باستخدام أمر cghooks list-hooks . يقوم هذا بشكل أساسي بالتحقق من تكوين الملحن وسرد الخطافات التي تحتوي بالفعل على ملفات.
الخيارات التالية مشتركة بين كافة الأوامر.
| خيار | وصف | يأمر |
|---|---|---|
git-dir | المسار إلى دليل بوابة | cghooks ${command} --git-dir='/path/to/.git' |
lock-dir | المسار لقفل دليل الملف | cghooks ${command} --lock-dir='/path/to/lock' |
global | يقوم بتشغيل الأمر المحدد عالميًا | cghooks ${command} --global |
يحتوي كل أمر أيضًا على علامة -v للتحكم في الإسهاب للحصول على سجلات أكثر تفصيلاً. حاليًا، يتم دعم مستوى واحد فقط.
يمكن اختبار الخطافات باستخدام cghooks ${hook} قبل إضافتها. مثال cghooks pre-commit الذي يقوم بتشغيل ربط pre-commit .
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.