GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - sascha-andres/git-commit: a configurable git commit hook implementation

This repository was archived by the owner on Jun 9, 2023. It is now read-only.
BranchesTags
Open more actions menu

Latest commit

 

History

134 Commits
134 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.idea
.idea
 
 
cmd
cmd
 
 
hook
hook
 
 
subcommands
subcommands
 
 
test
test
 
 
.commit-hook.yaml
.commit-hook.yaml
 
 
.gitignore
.gitignore
 
 
.goreleaser.yml
.goreleaser.yml
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
ISSUE_TEMPLATE.md
ISSUE_TEMPLATE.md
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
PULL_REQUEST_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
 
 
README.md
README.md
 
 
code_of_conduct.md
code_of_conduct.md
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 

Repository files navigation

git-commit

Go Report Card Maintainability codebeat badge FOSSA Status

This project is a configurable commit-msg hook. You can either configure using a global configuration file of a repository configuration file. If both exist, repository file will be merged into global configuration file.

The global configuration file is located in the HOME directory of the user and named .commit-hook.yaml while the repository specific file is in the root of the repository and named .commit-hook.yaml.

Both files have the same structure.

Configuration file structure

---

version: 2                           # version of config file

subject-line-length: 50              # Length of the subject line at a maximum
body-required: false                 # Is a body required for a commit
separate-body: true                  # Should the body be separated by a blank line
body-line-length: 72                 # Maximum length of body lines
enforce-body-line-length: true       # Should too long body lines be treated as an error or as a warning
lint_gitlab_ci: true                 # If true this calls out to lint .gitlab-ci.yml files
gitlab_ci_file: relativePath         # Set a different CI file location
confd-directories                    # Specify whether .commit-msg.d directory is used

ignore:                              # a list of regular expressions to ignore lines (no check)
  - ^#.*                             # ignore comments

subject:                                         # Match the subject against those expressions
  - name: ensure tagging of subject              # Name of rule
    expression: ^[a-z]+(\([a-z]+\))?:.*[^\.]$    # have feat(web): bla match, no . at the end allowed
    severity: error                              # on error fail commit, else print with severity attached

occurs:                              # Match somewhere, check for existence
  - TICKET-[0-9]+                    # have a TICKET-1 as a match

external-tools:                      # external tools to run before accepting commit
  - severity: error                  # on error fail commit, else print with severity attached
    name: linter                     # name of rule
    command:                         # command to execute
      - make
      - lint

Installation

Put the binary into your path. If you want to use GitLab CI linting you need to use: https://gitlab.com/orobardet/gitlab-ci-linter

Use

install hook

The application has a helper to install the hook:

git-hook-commit install

You need to run this in the root of your project ( the folder containing the .git folder ). If there is an existing hook you have to force it ( -f ).

uninstall hook

Similar to the installation process, there is an uninstall helper:

git-hook-commit uninstall

Essentially this just removes the hook, so it would remove any other hook also. So be careful.

History

Version Description
1.1.0 Add support for conf.d directory
1.0.1 better gitlab ci handling
1.0.0 update to use go modules
0.9.0 add support for GitLab CI linter
fix a bug where body lines where multiplied by the number of ignore expressions
0.8.0 add support for Co-authored-by
0.7.0 rename binary
0.6.2 code quality improvements
0.6.1 code quality improvements
0.6.0 remove v1
run external tools
fix: version check
0.5.0 version 2 of configuration
Naming of rules
Severity for rules
0.4.0 add version to config file
0.3.1 integration with code quality tools
0.3.0 print version information
0.2.0 configuration file is now named .commit-hook.yaml
fix: project configuration now correctly located in repository root
fix: run subject line length
0.1.0 Initial version

License

FOSSA Status

About

a configurable git commit hook implementation

Topics

commit-hooksgit

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing
Activity

Stars

10 stars

Watchers

1 watching

Forks

1 fork
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.