작성기 구성에서 git 후크를 쉽게 관리하세요. 이 명령줄 도구를 사용하면 프로젝트 전체에서 일관된 git 후크 사용을 쉽게 구현할 수 있습니다. 작성기 파일에 후크를 지정하면 프로젝트 팀의 모든 구성원이 후크를 사용할 수 있습니다. 이는 모든 사람에게 일관된 환경과 행동을 제공합니다. 컴퓨터의 모든 저장소에 대해 전역적으로 git 후크를 관리하는 데 사용할 수도 있습니다. 이렇게 하면 작업하기로 선택한 모든 프로젝트에 대해 직접 제작한 신뢰할 수 있는 후크 세트를 갖게 됩니다.
composer.json
의 extra
섹션에 hooks
섹션을 추가하고 거기에 후크를 추가하세요.
{
"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
그러면 vendor/bin
폴더에 cghooks
바이너리가 설치됩니다. 이 폴더가 경로에 없으면 모든 명령 앞에 vendor/bin/
붙여야 합니다.
참고: scripts
에 선언된 후크 또는 composer.json
의 hooks
루트 섹션은 v3에서 더 이상 지원되지 않습니다.
전역적으로 설치할 수도 있습니다. 이는 전역 git 후크 관리를 위해 새로 추가된 지원과 함께 cghooks
사용할 때 훨씬 더 자연스럽게 느껴집니다.
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
구성 섹션을 변경한 후에는 항상 업데이트 명령을 실행해야 합니다.
사용자 정의 후크는 `config 섹션의 custom-hooks
배열에 추가될 수 있습니다.
{
"extra" : {
"hooks" : {
"config" : {
"custom-hooks" : [ " pre-flow-feature-start " ]
},
"pre-flow-feature-start" : [
" echo 'Starting a new feature...' "
]
}
}
}
custom-hooks
구성 섹션을 변경한 후에는 항상 업데이트 명령을 실행해야 합니다. 참고: config
유효한 사용자 정의 후크 값이 아닙니다.
composer.json
파일의 scripts
섹션에 cghooks
스크립트를 추가하세요. 이렇게 하면 composer cghooks ${command}
사용하여 명령을 실행할 수 있습니다. 시스템 경로를 편집하지 않으려는 경우에 이상적입니다.
{
"scripts" : {
"cghooks" : " vendor/bin/cghooks " ,
"..." : " ... "
}
}
composer.json
파일에 다음 이벤트를 추가합니다. cghooks
명령은 이벤트가 발생할 때마다 실행됩니다. 작곡가의 이벤트 시스템에 대한 자세한 내용을 보려면 Composer 명령 이벤트로 이동하세요.
{
"scripts" : {
"post-install-cmd" : " cghooks add --ignore-lock " ,
"post-update-cmd" : " cghooks update " ,
"..." : " ... "
}
}
다음 명령은 모두 composer.json
파일과 동일한 폴더에서 실행하거나 composer.json
파일이 있는 폴더를 가리키도록 --git-dir
옵션을 지정하여 실행해야 합니다.
설치가 완료된 후 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
와 함께 실행되는 업데이트 명령은 기본적으로 잠금 파일을 무시하고 작성기 파일에서 후크를 추가하려고 시도합니다. 이는 add
명령에 대한 --force
옵션이 수행한 것과 유사합니다. 이 명령은 후크가 처음 추가된 이후 composer.json
파일의 후크가 변경된 경우 유용합니다.
이는 디렉토리가 제공되지 않는 경우 $COMPOSER_HOME
에 대한 대체가 없다는 점을 제외하고 --global
과 함께 사용될 때 유사하게 작동합니다.
후크는 cghooks remove
사용하여 쉽게 제거할 수 있습니다. 그러면 작곡가 구성에 지정된 모든 후크가 제거됩니다.
후크를 인수로 전달하여 제거할 수도 있습니다. cghooks remove pre-commit post-commit
후크를 제거하는 pre-commit
및 post-commit
제거합니다.
옵션 | 설명 | 명령 |
---|---|---|
force | 잠금 파일을 확인하지 않고 후크 삭제 | cghooks remove --force |
주의 : 잠금 파일이 변조되었거나 강제 옵션이 사용된 경우 이 패키지를 사용하기 전에 이미 존재했지만 작성기 스크립트 구성에 지정된 후크도 제거됩니다. 즉, 이전에 pre-commit
후크가 있었지만 현재 작성기 구성에도 pre-commit
후크가 있는 경우 이 옵션을 사용하면 명령이 초기 후크를 제거합니다.
--global
과 함께 사용할 때 디렉토리가 제공되지 않으면 $COMPOSER_HOME
으로 대체되지 않습니다.
cghooks list-hooks
명령을 사용하여 후크를 나열할 수 있습니다. 이는 기본적으로 작성기 구성을 확인하고 실제로 파일이 있는 후크를 나열합니다.
다음 옵션은 모든 명령에 공통됩니다.
옵션 | 설명 | 명령 |
---|---|---|
git-dir | git 디렉토리 경로 | 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
후크를 실행합니다.
자세한 내용은 CONTRIBUTING을 참조하세요.
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.