Composer git hooks
Composer Git Hooks 可以讓你直接在 composer 設定進行管理 git hooks,透過這樣管理的好處在於,能避免每個開發者都有各自的git hooks 設定,透過 composer git hooks 能將所有開發者的 git hooks 統一納入版控。
安裝
首先,如果還沒開始,可以先初始化 composer
$ composer init
$ compsoer install
接著開啟 composer.json 進行設定
"extra": {
"hooks": {
"pre-commit": [
"echo committing as $(git config user.name)",
"php-cs-fixer fix ." // fix style
],
"pre-push": [
"php-cs-fixer fix --dry-run .", // check style
"phpunit"
],
"post-merge": "composer update"
}
}
安裝 composer git hooks
$ composer require --dev brainmaestro/composer-git-hooks
同步設定到 git hooks
執行 cghooks add ,可以將 composer.json 設定的 git hooks 自動加到 git hooks
$ composer cghooks add
以下是自動執行的內容
> vendor/bin/cghooks 'add'
Added pre-commit hook
Added commit-msg hook
Added pre-push hook
Added post-merge hook
可以在 .git/hook/ 資料夾查看新增的git hook
執行測試
執行測試的指令為 cghooks ${hook}
在前面的 compsoer.json 我們有新增一個 pre-commit 指令,可以直接執行這段測試
composer cghooks pre-commit
備註
如果發生 php-cs-fixer: command not found
表示需要安裝
brew install php-cs-fixer
選項說明
Option | Description | Command |
---|---|---|
no-lock |
不要產生 lock file | cghooks add --no-lock |
ignore-lock |
將 lock file 加到 .gitignore | cghooks add --ignore-lock |
force-win |
強制兼容 windows bash | cghooks add --force-win |
force |
不檢查 lock file 直接刪除 hooks | cghooks remove —force |
git-dir1 |
指定 git 路徑 | cghooks ${command} --git-dir='/path/to/.git' |
global |
在 globally 執行指定指令 | cghooks ${command} --global |
list-hooks |
列出已經新增的 hooks | cghooks list-hooks |
remove |
刪除指定的 hooks | cghooks remove ${hook} |
update |
更新指定的 hooks | cghooks update ${hook} |