Kelola git hooks dengan mudah di konfigurasi komposer Anda. Alat baris perintah ini memudahkan penerapan penggunaan git hooks yang konsisten di seluruh proyek. Menentukan kait dalam file komposer membuatnya tersedia untuk setiap anggota tim proyek. Ini memberikan lingkungan dan perilaku yang konsisten untuk semua orang dan itu bagus. Dimungkinkan juga untuk digunakan untuk mengelola git hooks secara global untuk setiap repositori di komputer Anda. Dengan begitu, Anda memiliki seperangkat pengait andal yang dibuat sendiri untuk setiap proyek yang Anda pilih untuk dikerjakan.
Tambahkan bagian hooks
ke bagian extra
composer.json
Anda dan tambahkan kait di sana.
{
"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"
"..." : "..."
}
}
}
Kemudian instal dengan
composer require --dev brainmaestro/composer-git-hooks
Ini menginstal biner cghooks
ke folder vendor/bin
Anda. Jika folder ini tidak ada di jalur Anda, Anda harus mengawali setiap perintah dengan vendor/bin/
.
Catatan: hook yang dideklarasikan di scripts
atau bagian root hooks
dari composer.json
tidak lagi didukung di v3.
Anda juga dapat menginstalnya secara global. Ini terasa jauh lebih alami ketika cghooks
digunakan dengan dukungan baru untuk mengelola git hooks global.
composer global require --dev brainmaestro/composer-git-hooks
Semua perintah memiliki dukungan global (selain menguji hook. Masih harus berada di direktori dengan file composer.json
).
Ketika hook adalah rangkaian perintah, akan berguna untuk menghentikan eksekusi ketika sebuah perintah gagal.
Tentukan kait yang terkena dampak di bagian konfigurasi stop-on-failure
.
{
"extra" : {
"hooks" : {
"config" : {
"stop-on-failure" : [ " pre-push " ]
},
"pre-push" : [
" php-cs-fixer fix --dry-run --stop-on-violation . " ,
" phpunit "
],
}
}
}
Selalu pastikan untuk menjalankan perintah pembaruan setelah mengubah bagian konfigurasi stop-on-failure
.
Kait khusus dapat ditambahkan ke larik custom-hooks
di bagian `config.
{
"extra" : {
"hooks" : {
"config" : {
"custom-hooks" : [ " pre-flow-feature-start " ]
},
"pre-flow-feature-start" : [
" echo 'Starting a new feature...' "
]
}
}
}
Selalu pastikan untuk menjalankan perintah pembaruan setelah mengubah bagian konfigurasi custom-hooks
. Catatan: config
bukan nilai kait khusus yang valid.
Tambahkan skrip cghooks
ke bagian scripts
file composer.json
Anda. Dengan begitu, perintah dapat dijalankan dengan composer cghooks ${command}
. Ini ideal jika Anda memilih untuk tidak mengedit jalur sistem Anda.
{
"scripts" : {
"cghooks" : " vendor/bin/cghooks " ,
"..." : " ... "
}
}
Tambahkan peristiwa berikut ke file composer.json
Anda. Perintah cghooks
akan dijalankan setiap kali peristiwa terjadi. Buka Acara Perintah Komposer untuk detail lebih lanjut tentang sistem acara komposer.
{
"scripts" : {
"post-install-cmd" : " cghooks add --ignore-lock " ,
"post-update-cmd" : " cghooks update " ,
"..." : " ... "
}
}
Semua perintah berikut harus dijalankan di folder yang sama dengan file composer.json
Anda atau dengan menentukan opsi --git-dir
untuk menunjuk ke folder dengan file composer.json
.
Setelah instalasi selesai, jalankan cghooks add
untuk menambahkan semua git hooks valid yang telah ditentukan dalam konfigurasi composer.
Pilihan | Keterangan | Memerintah |
---|---|---|
no-lock | Jangan membuat file kunci | cghooks add --no-lock |
ignore-lock | Tambahkan file kunci ke .gitignore | cghooks add --ignore-lock |
force-win | Paksa kompatibilitas windows bash | cghooks add --force-win |
File lock
berisi daftar semua kait yang ditambahkan.
Jika flag --global
digunakan, hook akan ditambahkan secara global, dan konfigurasi git global juga akan diubah. Jika tidak ada direktori yang disediakan, ada fallback ke core.hooksPath
saat ini di konfigurasi global. Jika nilai tersebut tidak disetel, nilai defaultnya adalah $COMPOSER_HOME
(penggantian khusus ini hanya terjadi untuk perintah add
). Ini akan gagal dengan kesalahan jika masih tidak ada jalur setelah fallback.
Perintah update yang dijalankan dengan cghooks update
pada dasarnya mengabaikan file kunci dan mencoba menambahkan kait dari file komposer. Ini mirip dengan opsi --force
untuk perintah add
. Perintah ini berguna jika hook di file composer.json
telah berubah sejak pertama kali hook ditambahkan.
Cara kerjanya sama ketika digunakan dengan --global
kecuali tidak ada fallback ke $COMPOSER_HOME
jika tidak ada direktori yang disediakan.
Kait dapat dengan mudah dilepas dengan cghooks remove
. Ini akan menghapus semua kait yang ditentukan dalam konfigurasi komposer.
Kait juga dapat dihilangkan dengan meneruskannya sebagai argumen. Perintah cghooks remove pre-commit post-commit
yang akan menghapus hook pre-commit
dan post-commit
.
Pilihan | Keterangan | Memerintah |
---|---|---|
force | Hapus kait tanpa memeriksa file kunci | cghooks remove --force |
HATI-HATI : Jika file kunci dirusak atau opsi force digunakan, hook yang sudah ada sebelum menggunakan paket ini, namun ditentukan dalam konfigurasi skrip komposer juga akan dihapus. Artinya, jika Anda memiliki hook pre-commit
sebelumnya, namun konfigurasi komposer Anda saat ini juga memiliki hook pre-commit
, opsi ini akan menyebabkan perintah menghapus hook awal Anda.
Ini juga tidak memiliki cadangan ke $COMPOSER_HOME
jika tidak ada direktori yang disediakan saat digunakan dengan --global
.
Hooks dapat dicantumkan dengan perintah cghooks list-hooks
. Ini pada dasarnya memeriksa konfigurasi komposer dan mencantumkan kait yang benar-benar memiliki file.
Opsi berikut ini umum untuk semua perintah.
Pilihan | Keterangan | Memerintah |
---|---|---|
git-dir | Jalur ke direktori git | cghooks ${command} --git-dir='/path/to/.git' |
lock-dir | Jalur untuk mengunci direktori file | cghooks ${command} --lock-dir='/path/to/lock' |
global | Menjalankan perintah yang ditentukan secara global | cghooks ${command} --global |
Setiap perintah juga memiliki tanda -v
untuk mengontrol verbositas untuk log yang lebih detail. Saat ini, hanya satu level yang didukung.
Hooks dapat diuji dengan cghooks ${hook}
sebelum menambahkannya. Contoh cghooks pre-commit
menjalankan hook pre-commit
.
Silakan lihat KONTRIBUSI untuk rinciannya.
Lisensi MIT (MIT). Silakan lihat File Lisensi untuk informasi lebih lanjut.