From 1abc1d998a71efd50af30210e26bee462496e442 Mon Sep 17 00:00:00 2001 From: Oscar Lee-Vermeren Date: Mon, 4 Sep 2023 13:21:27 -0400 Subject: feat(git-commit): create plugin (#9646) Co-authored-by: K. Akatsuki --- plugins/git-commit/README.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 plugins/git-commit/README.md (limited to 'plugins/git-commit/README.md') diff --git a/plugins/git-commit/README.md b/plugins/git-commit/README.md new file mode 100644 index 000000000..dc10d8ad5 --- /dev/null +++ b/plugins/git-commit/README.md @@ -0,0 +1,36 @@ +# git-commit plugin + +The git-commit plugin adds several [git aliases](https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-alias) for [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/#summary) messages. + +To use it, add `git-commit` to the plugins array in your zshrc file: + +```zsh +plugins=(... git-commit) +``` + +## Syntax + +```zshrc +git [(-s, --scope) ""] "" +``` + +> ⚠️ Single/Double quotes around the scope and message are required + +Where `type` is one of the following: + +- `build` +- `chore` +- `ci` +- `docs` +- `feat` +- `fix` +- `perf` +- `refactor` +- `revert` +- `style` +- `test` + +## Examples + +`git style "remove trailing whitespace"` -> `git commit -m "style: remove trailing whitespace"` +`git fix -s "router" "correct redirect link"` -> `git commit -m "fix(router): correct redirect link"` -- cgit v1.2.3-70-g09d2 From 048455ccefdc67c4f137b8f7886769c55c2e5417 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Wed, 25 Oct 2023 19:47:10 +0200 Subject: fix(git-commit): fix revert alias conflict (#12007) Fixes #12007 --- plugins/git-commit/README.md | 14 ++++++++++---- plugins/git-commit/git-commit.plugin.zsh | 24 ++++++++++++++---------- 2 files changed, 24 insertions(+), 14 deletions(-) (limited to 'plugins/git-commit/README.md') diff --git a/plugins/git-commit/README.md b/plugins/git-commit/README.md index dc10d8ad5..91cc73b44 100644 --- a/plugins/git-commit/README.md +++ b/plugins/git-commit/README.md @@ -10,7 +10,7 @@ plugins=(... git-commit) ## Syntax -```zshrc +```zsh git [(-s, --scope) ""] "" ``` @@ -26,11 +26,17 @@ Where `type` is one of the following: - `fix` - `perf` - `refactor` -- `revert` +- `rev` - `style` - `test` +> NOTE: the alias for `revert` type is `rev`, as otherwise it conflicts with the git command of the same name. +> It will still generate a commit message in the format `revert: ` + ## Examples -`git style "remove trailing whitespace"` -> `git commit -m "style: remove trailing whitespace"` -`git fix -s "router" "correct redirect link"` -> `git commit -m "fix(router): correct redirect link"` +| Git alias | Command | +| --------------------------------------------- | ---------------------------------------------------- | +| `git style "remove trailing whitespace"` | `git commit -m "style: remove trailing whitespace"` | +| `git fix -s "router" "correct redirect link"` | `git commit -m "fix(router): correct redirect link"` | +| `git rev -s "api" "rollback v2"` | `git commit -m "revert(api): rollback v2"` | diff --git a/plugins/git-commit/git-commit.plugin.zsh b/plugins/git-commit/git-commit.plugin.zsh index 4ad4c0177..72cecb1d6 100644 --- a/plugins/git-commit/git-commit.plugin.zsh +++ b/plugins/git-commit/git-commit.plugin.zsh @@ -1,9 +1,3 @@ -function _git_commit_register { - if ! git config --global --get-all alias.$1 >/dev/null 2>&1; then - git config --global alias.$1 '!a() { if [ "$1" = "-s" ] || [ "$1" = "--scope" ]; then local scope="$2"; shift 2; git commit -m "'$1'(${scope}): ${@}"; else git commit -m "'$1': ${@}"; fi }; a' - fi -} - local -a _git_commit_aliases _git_commit_aliases=( 'build' @@ -19,9 +13,19 @@ _git_commit_aliases=( 'test' ) -for _alias in "${_git_commit_aliases[@]}"; do - _git_commit_register $_alias +local alias type +for type in "${_git_commit_aliases[@]}"; do + # an alias can't be named "revert" because the git command takes precedence + # https://stackoverflow.com/a/3538791 + case "$type" in + revert) alias=rev ;; + *) alias=$type ;; + esac + + local func='!a() { if [ "$1" = "-s" ] || [ "$1" = "--scope" ]; then local scope="$2"; shift 2; git commit -m "'$type'(${scope}): ${@}"; else git commit -m "'$type': ${@}"; fi }; a' + if ! git config --global --get-all alias.${alias} >/dev/null 2>&1; then + git config --global alias.${alias} "$func" + fi done -unfunction _git_commit_register -unset _alias +unset _git_commit_aliases alias type func -- cgit v1.2.3-70-g09d2