Git

Git hooks

Creating your own Git hooks


        vim .git/hooks/pre-commit.sample
        

        vim .git/hooks/pre-commit.sample
        

        #!/bin/sh
        #
        # An example hook script to verify what is about to be committed.
        # Called by "git commit" with no arguments.  The hook should
        # exit with non-zero status after issuing an appropriate message if
        # it wants to stop the commit.
        #
        # To enable this hook, rename this file to "pre-commit".

        if git rev-parse --verify HEAD >/dev/null 2>&1
        then
            against=HEAD
        else
            # Initial commit: diff against an empty tree object
            against=$(git hash-object -t tree /dev/null)
        

Haralan Dobrev

Haralan Dobrev

@hkdobrev

hkdobrev.com

Git, JS, PHP, DevOps

CTO @ Clippings

Share your team's hooks


        git config core.hooksPath <hooks-dir>
        

        ln -sf ../../<hooks-dir>/pre-commit .git/hooks/pre-commit
        

Husky

🐶 Git hooks made easy


        package.json
        

        {
          "husky": {
            "hooks": {
              "pre-commit": "yarn test",
              "pre-push": "yarn test",
            }
          }
        }
        

Husky makes your hooks:


  • Documented
  • Discoverable
  • Automatically installed

What can hooks be useful for in a team?

  • Validate branch names
  • Commit message templating & checks
  • Lint commit contents
  • Auto fix commit contents
  • Run tests
  • Install new dependencies

Automatically format code on commit

pre-commit & lint-staged

Run command if file changed after pull/checkout

post-checkout & run-if-changed

Q&A

Thanks!

@hkdobrev

hkdobrev.com


Следващо събитие:

Creating lightweight JS Apps w/ Web Components and lit-html