Support & Downloads

Izymes builds easy-to-use apps for Atlassian applications that boost your productivity, free you from performing repetitive tasks inside Confluence, Jira and Bitbucket and enable you to use your time for what you do best – YOUR job.

Book a Demo

Interested in a 1-on-1 demonstration of Izymes’s products?
Here we will walk you through;

• All features and benefits of the product you are interested in trying.
• How to set up the account and configure the settings.
• Other tips, tricks and best practices.

It will also give us time to answer any questions you may have, or perhaps you just want to have a chat, we love a good chat.
You can schedule a time on the Calendly link below. Talk soon!

Contact Info
HQ Southport
Queensland, Australia
[email protected]
Follow Us
Digital animation of a woman sitting at her computer typing with an error on screen

How to use git pre-commit and pre-receive hooks to boost productivity

“Nobody is perfect” is not just a saying, it’s the truth. Some of your team may consider themselves close to perfect (it’s scary, right?), but most are humble about the fact that they make small mistakes, all the time.

The earlier we catch those small mistakes, the better! For one there are automated tests running in your Continuous Integration system showing icons in red, or rainclouds when things are going wrong with your latest commits.


Git pre-receive hooks and git pre-commit hooks are here to watch over your shoulder at a much earlier stage – when you commit changes locally or push changes to remote. They can automatically perform all sorts of checks on your code automatically preventing those mistakes to propagate to shared code, or even worse being deployed to live environments.

Digital animation of a woman sitting at her computer typing with an error on screen

What tools should run as pre-commit hooks?

1. Code formatters
Code formatters such as Prettier.io ensure all code is formatted consistently across the entire code base. Code formatters are highly customisable and at Izymes we spend the better half of a Friday pub lunch debating whether the maximum line length should be 160 or 80 characters. (We settled for 100).

Most IDEs (integrated development environment) integrate with the code formatter of your choice. It’s best to add the configuration file to the code-base so all team members use the same configuration.

Prettier.io test playground screenshot
A screenshot example of an online code formatting tool

2. Linters
Code linters statically analyse code and quickly find mistakes such as potential exceptions thrown at runtime. Again, they come with a default or recommended set of rules for a programming language, however, the rule-set is highly customisable. Add the linter configuration file to the code-base to enforce rules across the team or project.

3. Static code analysis
Static code analysers go beyond what linters can do. They detect bug risks, anti-patterns, performance, and security issues. Have a look at LGTM or SonarCloud.

4. Local compile (optional)
Another quick-win is to add a partial or full project compile step as a pre-receive hook. It depends on project complexity and may not be feasible if the compile or build cycles take too long.

a lint roller, rolling over errors in code
Image from the article What Is Lint Code? And Why Is Linting Important?

Get started now – git pre-commit hook set up

If your team works on a Node.js / Javascript project here are some easy steps to get started.

Husky is an easy to set up git pre-receive hook.

1. Install

npx husky-init && npm install

It will set up husky, modify package.json and create a sample pre-commit hook that you can edit. By default, it will run npm test when you commit. To add the prettier code formatter run

npx husky add .husky/pre-commit "npx prettier --check ."

2. Run

The next git commit will run

./.husky/pre-commit

A Siberian Husky sitting amongst the bushes
Since we’re on the topic of Husky, I couldn’t help but include a photo of my boy Malakai.

What about Git pre-receive hooks?

Git pre-receive hooks are the police that check your code when you push it to the (git-remote) server aka Bitbucket, Github or any DVCS server. These checks can be slightly different from pre-commit checks. They can verify that your commit message is synced with a Jira issue that is marked as “In progress”, or that there is no open pull request against the branch, or anything really that is required to streamline a team workflow.
As git pre-receive hooks run server-side they are usually configured by repository or project admins. Bitbucket server/data-center offers a wide range of hooks either built-in or installable via the Bitbucket app-store.

Bitbucket cloud has a limited amount of built-in pre-receive hooks and has zero flexibility when it comes to installable custom pre-receive hooks.

Conclusion

Now that you know a bit more about git pre-receive hooks and git pre-commit hooks, we encourage you to give it a try. Utilise the tools mentioned above to hit the ground running and be confident that your code is ready to go live.

What are your thoughts on git pre-receive and pre-commit hooks? We would love to hear about them below.


Want to take your team to the next level? Visit our Atlassian apps here or Book a Product Demo

Happy Coding!
Sean Manwarring
Head of Marketing at Izymes
[email protected]

Izymes’ mission is to eliminate boring from work. We build apps that turbo-charge team velocity through contextual automation.

Post a Comment