브렌쏭의 Veritas_Garage

Husky..husky...허스키.. & Git hook 본문

[Project_하다]/[Project_공부]

Husky..husky...허스키.. & Git hook

브렌쏭 2022. 3. 23. 14:35

https://typicode.github.io/husky/#/

 

Husky - Git hooks

 

typicode.github.io

대체 허스키가 뭘까 하고 허스키를 찾으니 Git Hook 이라고 한다. 근데 깃 훅은 또 뭐란말인가.

a를 찾으면 b를 모르고 그러면 다시 a라고 하고..

일단 설명을 읽어봤다.

Husky improves your commits and more 🐶 woof!

커밋과 그 이상을 개선시켜 준다고 한다. 난 개선을 원한 적이 없지만 일단 계속 읽어봤다.

You can use it to lint your commit messages, run tests, lint code, etc... when you commit or push. Husky supports all Git hooks.

 

Git - githooks Documentation

$GIT_DIR/hooks/* (or `git config core.hooksPath`/*)

git-scm.com

어어 뭐야 이거, 끝없는 하이퍼링크 지옥인가? 하고 다시 나온 링크에 가봤다. 이번엔 훅에 대한 정의가 있는 듯하다.

Hooks are programs you can place in a hooks directory to trigger actions at certain points in git’s execution. Hooks that don’t have the executable bit set are ignored.

깃을 실행할 때, 자동으로 연계된 이벤트로 뭐든지 실행시킬 수 있는 단축어나 명령 자동화 같은 놈인가 보다. 그리고 executable bit set이 없는 훅은 무시된다고 한다.

여전히 모르겠다.

그러나 여러 훅들의 이름을 보니 대충 실행 시점을 알겠다. 커밋을 실행시키면 그 앞이나 뒤, 머지를 한다면 또 그 앞이나 뒤 등 모든 깃의 실행 명령어 전후 시점에 지정한 액션을 자동으로 실행시켜주는 모양이다. 그것이 Git에서의 Hook이다. 라고 하고 일단은 넘어가자

1.  husky

그렇다면 수많은 종류의 훅이 있을 것이고, 미친듯이 많은 훅 애드온들이 있을 것이 자명하다. 다시 허스키의 기능으로 돌아가 봤다.

Features

  • Zero dependencies and lightweight (6 kB)
  • Powered by modern new Git feature (core.hooksPath)
  • Follows npm and Yarn best practices regarding autoinstall
  • User-friendly messages
  • Optional install
  • Like husky 4, supports
    • macOS, Linux and Windows
    • Git GUIs
    • Custom directories
    • Monorepos

유저 프렌들리 하다는 것을 보니 네이티브 깃훅은 몹시 언프렌들리 한 모양이다. 개발자가 리누스 토르발스니까 그럴만도 하지.

그럼 이놈도 애드온 중 하나인가? 하고 봤더니 네이티브 깃 훅을 잘 쓸 수 있게 도와주는 매개체 느낌이다.

Modern native git hooks made easy

뭔가 그 이상을 해준다고 해놓고는 거짓말이었나.

그런데 찾아보니 깃 훅 이라는 것을 검색해보니 뭔가 구미가 당기는 정보들이 나오기 시작했다.

.....대단한 기능들 그 이상이었다.

허스키는 이런 기능들을 일일히 깃의 깃훅 경로로 찾아가 직접 쓰는 수고로움을 덜어주고, 말 그대로 깃훅 관리를 위한 툴이라고 보면 되겠다.

Comments