Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kvz/ochtra
One Commit Hook To Rule All
https://github.com/kvz/ochtra
command-line commits git hooks programming-languages quality-assurance shell
Last synced: 4 months ago
JSON representation
One Commit Hook To Rule All
- Host: GitHub
- URL: https://github.com/kvz/ochtra
- Owner: kvz
- License: mit
- Created: 2013-12-29T13:50:39.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2019-08-01T14:31:18.000Z (over 5 years ago)
- Last Synced: 2024-10-04T19:14:45.597Z (4 months ago)
- Topics: command-line, commits, git, hooks, programming-languages, quality-assurance, shell
- Language: Shell
- Homepage:
- Size: 43.9 KB
- Stars: 86
- Watchers: 7
- Forks: 13
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ochtra
[![Build Status](https://secure.travis-ci.org/kvz/ochtra.png?branch=master)](http://travis-ci.org/kvz/ochtra "Check this project's build status on TravisCI")
ochtra stands for
**O**ne
**C**ommit
**H**ook
**T**o
**R**ule
**A**ll
and is an attempt at creating the definitive Git commit hook that:- Works on all your languages (for now Ruby, JavaScript, TypeScript,
CoffeeScript, Python, Sh, Bash, Dash, Go, Perl, PHP, XML, JSON, YAML, HTML)
- Is globally installable for all your repositories
- Aims to keep syntax errors from entering your codebase
- Is not religous about coding style (you still can have your own custom `pre-ochtra` hook for that)ochtra deals with some common pitfalls you'll find in other hooks:
- Works on initial commits
- Will skip files that are staged to be deleted
- Will not run when we're not currently on a branch
- Can co-exist with your current commit hook, just rename it to `pre-ochtra`
- Works on filenames with spaces
- Checks files as staged in Git, not how they're currently saved in your working dir
- Deals with discrepancies between linters sometimes printing errors on STDOUT vs STDERR## Try it now
Without installing anything, you can see ochtra in action on a local test repository:
```bash
cd /tmp
mkdir test-repo && cd $_git init
curl -s https://raw.githubusercontent.com/kvz/ochtra/master/pre-commit -ko .git/hooks/pre-commit \
&& chmod u+x $_echo ";-)" > syntax-error.go
git add syntax-error.go
git commit
```You'll notice that ochtra won't let you commit that `syntax-error.go`:
![screen shot 2014-01-07 at 15 18 47](https://f.cloud.github.com/assets/26752/1859626/b1b5d4ac-77a6-11e3-9434-0d1485bfd13f.png)
Phew : ) Now for `.go` files it won't typically be a huge problem as your Go project won't run with syntax errors in the first place. But what about making that quick documentation change and leaving a typo? What about that Bash file in your repository? ochtra has got you covered.
## Install
As of Git 1.7 you can install ochtra as a git template.
```bash
mkdir -p ~/.gittemplate/hooks
curl https://raw.githubusercontent.com/kvz/ochtra/master/pre-commit -o ~/.gittemplate/hooks/pre-commit \
&& chmod u+x $_
git config --global init.templatedir '~/.gittemplate'
```This will make it present in all newly create repositories.
Now, to install/update in existing repositories you can type
```bash
cd my-project
rm .git/hooks/pre-commit
git init # just copies any non-existing files from ~/.gittemplate to current repo
```## Uninstall
To remove ochtra from one project, type
```bash
rm .git/hooks/pre-commit
```To remove the automatic installer for new Git repos, type
```bash
git config --global --unset init.templatedir
# git config --global --remove-section init
```## Tests
To run the tests:
```bash
make test
```## Contributors
Feel free to report issues, comment on [my blog](http://kvz.io/blog/2013/12/29/one-git-commit-hook-to-rule-them-all/) or send a pull requests.
Contributors so far:
- [abtris](https://github.com/abtris) (YAML, JSON & XML support)
- Stefan Näwe (reporting issue)
- mihaeu (reporting issue)
- [Mischa ter Smitten](https://github.com/tersmitten) (curl fix for githubusercontent when installing)
- [Jan Dorsman](https://github.com/oldskool) (fix PHP error logging)
- [qdx](https://github.com/qdx) (fix pipestatus & Git invalid object bug)
- [Jostein Kjønigsen](https://github.com/josteink) (TypeScript support)
- [Dan Boulet](https://github.com/dboulet) (HTML support, improve YAML/Git/Go support and tests)## Tips
- If you already had a `pre-commit` hook that you want to preserve and have
executed before ochtra, just rename it to `pre-ochtra`.- If you ever want to commit code and disable the pre-commit one time, type
```bash
$ git commit -n
```This can be useful if you import big chunks of code that don't pass jshint yet.
- If you want to install linters, have a look
at the [.travis.yml](.travis.yml) file, it has instructions for all of them## Thanks
These pages have been a source of inspiration when building ochtra:
-
-
-## License
[MIT Licensed](LICENSE)