0
0
Gitdevops~10 mins

Sharing hooks with the team (husky) in Git - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - Sharing hooks with the team (husky)
Add husky to project
Create hook script
Commit hook config to repo
Team pulls repo
Husky installs hooks locally
Hooks run automatically on git actions
This flow shows how husky hooks are added, committed, and shared so the whole team runs the same git hooks automatically.
Execution Sample
Git
npm install husky --save-dev
npm set-script prepare "husky install"
npx husky add .husky/pre-commit "npm test"
git add package.json .husky/pre-commit
git commit -m "Add pre-commit hook"
This code installs husky, sets up a pre-commit hook to run tests, and commits the hook config to the repo.
Process Table
StepActionResultEffect on Team
1Run npm install husky --save-devHusky added to dev dependenciesTeam members get husky when they install dependencies
2Run npm set-script prepare "husky install"Prepare script added to package.jsonTeam npm install runs husky install automatically
3Run npx husky add .husky/pre-commit "npm test"Pre-commit hook script createdHook script ready to share
4git add package.json .husky/pre-commitHook script and package.json staged for commitReady to share hook with team
5git commit -m "Add pre-commit hook"Hook config committed to repoTeam members get hook on next pull
6Team pulls repo and runs npm installHusky installs hooks locallyHooks run automatically on git actions
7Team makes commitPre-commit hook runs npm testEnsures code quality before commit
8Condition: npm test fails?Commit blockedPrevents bad code from entering repo
9Condition: npm test passes?Commit allowedCode safely committed
💡 Execution stops after commit is allowed or blocked by pre-commit hook
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 5After Step 6
husky_installedfalsetruetruetruetruetrue
hook_script_existsfalsefalsefalsetruetruetrue
hook_committedfalsefalsefalsefalsetruetrue
team_hooks_installedfalsefalsefalsefalsefalsetrue
Key Moments - 3 Insights
Why do we commit the .husky folder to the repo?
Committing the .husky folder shares the hook scripts with the whole team, so everyone runs the same hooks automatically (see execution_table step 5).
What happens if a team member forgets to run npm install after pulling?
Husky hooks won't be installed locally, so git hooks won't run until they run npm install (see variable_tracker team_hooks_installed after step 6).
Does husky run hooks on the server or locally?
Husky runs hooks locally on each developer's machine before git actions like commit (see execution_table step 7).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step is the pre-commit hook script created?
AStep 5
BStep 2
CStep 3
DStep 6
💡 Hint
Check the 'Action' column for when the hook script is created.
According to variable_tracker, when does the team_hooks_installed variable become true?
AAfter Step 3
BAfter Step 6
CAfter Step 5
DAfter Step 1
💡 Hint
Look at the 'team_hooks_installed' row and see when it changes to true.
If the npm test fails during the pre-commit hook, what happens according to the execution_table?
ACommit is blocked
BHook script is deleted
CCommit is allowed
DHusky uninstalls
💡 Hint
Check the rows describing the condition when npm test fails.
Concept Snapshot
Husky shares git hooks by committing hook scripts in .husky folder.
Install husky with npm and run 'husky install' to set up hooks.
Add hooks with 'husky add' and commit them.
Team members get hooks by pulling and running npm install.
Hooks run locally on git actions like commit to enforce rules.
Full Transcript
This lesson shows how to share git hooks using husky. First, install husky as a dev dependency. Then run 'npx husky install' to create the hooks folder. Add a hook script with 'npx husky add .husky/pre-commit "npm test"'. Commit the .husky folder so the hook script is shared. When team members pull and run npm install, husky installs the hooks locally. Now, when they commit, the pre-commit hook runs tests automatically. If tests fail, the commit is blocked, ensuring code quality. This process helps teams enforce rules consistently across all developers.