샘플 파일을 따르는 경우 후크는 bash로 작성하는 것이 가장 좋습니다. 그러나 사용 가능한 모든 언어로 작성하고 실행 가능 플래그가 있는지 확인하십시오.
따라서 목표를 달성하기 위해 Python 또는 Go 코드를 작성하고 hooks 폴더 아래에 배치 할 수 있습니다. 작동하지만 리포지토리와 함께 관리되지는 않습니다.
두 가지 옵션
a) 멀티 스크립트
도움말 내부에 후크를 코딩하고 후크에 작은 코드 조각을 추가하여 다음과 같이 완벽한 스크립트를 호출 할 수 있습니다.
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/myprecommit.js
b) 단일 스크립트
더 멋진 옵션은 여러 개의 스크립트 대신 하나의 스크립트 만 추가하여 모두를 지배하는 것입니다. 따라서 hooks / mysuperhook.go를 만들고 원하는 모든 후크를 가리 킵니다.
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/mysuperhook.go $(basename $0)
이 매개 변수는 어떤 후크가 트리거되었는지 스크립트를 제공하며 코드 내에서 구별 할 수 있습니다. 왜? 예를 들어, 커밋 및 푸시에 대해 동일한 검사를 수행하려는 경우가 있습니다.
그리고?
그런 다음 다음과 같은 추가 기능을 원할 수 있습니다.
- 커밋 또는 푸시 전에도 후크가 수동으로 트리거되어 모든 것이 정상인지 확인하십시오. 스크립트 (옵션 a 또는 b)를 호출하면 트릭을 수행합니다.
- CI에서 후크를 트리거하므로 CI에 대해 동일한 검사를 다시 작성할 필요가 없습니다. 예를 들어 커밋 및 푸시 트리거를 호출하는 것입니다. 위와 동일하게 해결해야합니다.
- 마크 다운 검사기 또는 YAML 검사기와 같은 외부 도구를 호출하십시오. syscall을 수행 할 수 있으며 STDOUT 및 STDERR을 처리해야합니다.
- 모든 개발자가 후크를 설치하는 간단한 방법을 갖도록하십시오. 따라서 기본 후크를 올바른 후크로 바꾸려면 멋진 스크립트를 저장소에 추가해야합니다.
- 분기를 개발하고 마스터하기위한 커밋을 차단하기위한 검사와 같은 일부 글로벌 도우미를 보유하고 모든 저장소에 추가하지 않아도됩니다. 글로벌 스크립트가있는 다른 저장소를 사용하여이를 해결할 수 있습니다.
이것이 더 간단 할 수 있습니까?
예, 자식 후크를 관리하는 데 도움이되는 몇 가지 도구가 있습니다. 각각은 다른 관점에서 문제를 해결하기 위해 만들어졌으며, 여러분이나 팀에 가장 적합한 것을 얻기 위해 모든 문제를 이해해야 할 수도 있습니다. GitHooks.com 은 후크에 대한 많은 정보와 오늘날 사용 가능한 몇 가지 도구를 제공합니다.
오늘 현재, git hooks을 관리하기위한 다양한 전략과 함께 21 개의 프로젝트가 나열되어 있습니다. 일부는 단일 후크, 특정 언어 등에 대해서만 수행합니다.
내가 작성한 도구 중 하나이며 오픈 소스 프로젝트로 무료로 제공되는 도구는 hooks4git 입니다. 파이썬으로 작성되었지만 (내가 좋아하기 때문에) 아이디어는 .hooks4git.ini라는 단일 구성 파일에서 위에 나열된 모든 항목을 처리하는 것입니다. .
git hooks를 사용하는 것은 절대적으로 환상적이지만, 제공되는 방식은 일반적으로 사람들을 멀리합니다.