diff options
-rw-r--r-- | hm/soispha/conf/git/default.nix | 12 | ||||
-rwxr-xr-x | hm/soispha/conf/git/scripts/commit | 19 |
2 files changed, 30 insertions, 1 deletions
diff --git a/hm/soispha/conf/git/default.nix b/hm/soispha/conf/git/default.nix index 46f272eb..eda42210 100644 --- a/hm/soispha/conf/git/default.nix +++ b/hm/soispha/conf/git/default.nix @@ -2,16 +2,26 @@ nixosConfig, lib, config, + sysLib, + pkgs, ... }: let gitIgnoreFile = ./git_ignore.git; gitTemplateFile = ./git_template.git; + commit = sysLib.writeShellScriptWithLibraryAndKeepPath { + name = "commit"; + src = ./scripts/commit; + dependencies = with pkgs; [ + git + gnused + ]; + }; in { programs.git = { enable = true; #package = pkgs.gitAndTools.gitFull; # TODO: for git send-email support aliases = { - cm = "commit --verbose"; + cm = "!${commit}/bin/commit"; cmr = "commit --file .git/COMMIT_EDITMSG --edit --verbose"; st = "status"; diff --git a/hm/soispha/conf/git/scripts/commit b/hm/soispha/conf/git/scripts/commit new file mode 100755 index 00000000..1b497065 --- /dev/null +++ b/hm/soispha/conf/git/scripts/commit @@ -0,0 +1,19 @@ +#!/usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="1.10.0" . %SHELL_LIBRARY_PATH + +ROOT="$(git rev-parse --show-toplevel)"; + +# Take first line from previous commit +if [ -f "$ROOT/.git/COMMIT_EDITMSG" ]; then + sed '1s/\(.*\)\((.*)\)\?\(:.*\)/\1\2: /;1p;d' "$ROOT/.git/COMMIT_EDITMSG" > "$ROOT/.git/COMMIT_TEMPLATE" +else + printf "\n" > "$ROOT/.git/COMMIT_TEMPLATE" +fi +sed '1d' "$(git config commit.template)" >> "$ROOT/.git/COMMIT_TEMPLATE" + +git commit --template "$ROOT/.git/COMMIT_TEMPLATE" --verbose "$@" + + +# vim: ft=sh |