قم بإدارة خطافات 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). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.