git-client-hook
Version:
git client hook for node project with unit-test: bats
141 lines (91 loc) • 4.54 kB
Markdown
# git-client-hook
---
[](https://travis-ci.org/adispring/git-client-hook)
git-client-hook used for installing some [git client hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) into node project.
## Function of git client hook
### `pre-push`: run npm test before git push
1. If `npm test` passed, git push will go on, else git push will be cancelled, and output errors npm test found.
2. Check if the pushing branch is update to newest remotes/origion/master.
### `commit-msg`: add branch name(jira) to commit message automatically & do some check
1. Check if commit-msg is valid, check options as follows:
* if commit on branch: **master/develop/release/test**, it will output a warning.
* if **commit without any message**, this commit will fail.
* if branch name format does not satisfy `[feature | release | bugfix | hotfix]/JIRA-xxxx-brief-description`, this commit will fail. ([correct branch name format](https://confluence.atlassian.com/bitbucketserver/using-branches-in-bitbucket-server-776639968.html))
* if commit message already contains a jira task number(regex: `[A-Z][A-Z_0-9]+-[0-9]+`), it will not add one again.
2. Add JIRA TASK number(branch name) to commit-msg.
If all above passed, **commit-msg will add branch name (JIRA TASK number) to commit message**.
[Add JIRA Task number into commit message](https://confluence.atlassian.com/display/FISHEYE/Using+Smart+Commits) can build a link between git commit and JIRA TASK.
## HOW TO USE git-client-hook
### Install
Run `npm install git-client-hook --save-dev`, pre-push & commit-msg hooks
will install into `git/hooks`.
Before install git hooks to `.git/hooks`, there are also some checks,
Check options as follows:
1. Git hook will install only if NODE_ENV is development or undefined.
2. If project is managed by git.(has .git/ dir)
3. Check if some hooks have already installed, if hooks have changed/updated.
If hook has already installed and not changed, this hook will not install again,
else if it updated, it will updated.
### Uninstall
Run `npm uninstall git-client-hook --save-dev`:
1. git-client-hook will be uninstalled.
2. git hooks installed into .git/hooks/ will be uninstalled.
## Development
You can add any fantasy git client hooks to the repository, or custom it for your project.
Tests are executed using [Bats](https://github.com/sstephenson/bats)
Please feel free to submit pull requests and file bugs on the [issue
tracker](https://github.com/adispring/git-client-hook/issues).
## TODO
1. add post-commit to run npm test in background
2. add git-hook CLI: 1.custom pre-commit email verify; 2.batch change current branch commits email
## DONE
### v0.0.24
1. optimize "feature branch update to master branch before push".
### v0.0.23
1. add branch name format reference link.
2. add branch name of `release`.
### v0.0.22
1. restrict branch name format: [feature | bugfix | hotfix]/JIRA-xxxx-brief-description.
2. optimize emoji.
### v0.0.21
1. fix: JIRA Number can not prepend to commit-msg when `git commit` with editor.
### v0.0.20
### v0.0.19
1. force feature branch update to master branch before git push.
### v0.0.18
1. check whether feature branch merged/rebased newest master branch in pre-push.
### v0.0.17
### v0.0.16
1. add travis ci
2. fix shell if [[ to [
3. fix some unit test warning
### v0.0.15
1. fix mulit jira task add to commit-msg when open editor to edit commit message
2. optimize jira number check:
- check jira number instead of branch name
- add jira number instead of branch name to commit-msg.
### v0.0.14
1. add increment eslint check
2. fix typo: romte_sha -> remote_sha
3. change install approach
4. backup all exist and affected hooks
### v0.0.13
1. fix is_commit_msg_empty func in commit-msg
### v0.0.12
### v0.0.11
### v0.0.10
1. modify README.md
### v0.0.9
1. add git hook update unit-test
2. rename unit test dir name
### v0.0.8
1. change prepare-commit-msg to commit-msg. prepare-commit-msg invoked before editor, commit-msg invoked after user enters a commit message.
2. optimize string judgement, fix string var bug: $() to "$()"
3. fix empty commit-msg judegment.
### v0.0.6
1. uninstall git hooks from .git/hooks/ when uninstall git-client-hook
2. fix NODE_ENV does not work when bash git-hook-install.sh.
### v0.0.5
1. remove bats & bats-assert from git-hook-install.sh
### v0.0.4
1. update git unit test for new git-hook-install.sh