aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-03-24 20:08:03 +0100
committerMattias Andrée <m@maandree.se>2026-03-24 20:08:03 +0100
commit5ff229f7a23f44eee941c2127edd30037a5201ec (patch)
treea9ed788764326526d8f5758bab0248f3a765d5a6
parentm (diff)
downloaddotfiles-5ff229f7a23f44eee941c2127edd30037a5201ec.tar.gz
dotfiles-5ff229f7a23f44eee941c2127edd30037a5201ec.tar.bz2
dotfiles-5ff229f7a23f44eee941c2127edd30037a5201ec.tar.xz
add git-cdiffHEADmaster
Signed-off-by: Mattias Andrée <m@maandree.se>
-rw-r--r--git/Makefile4
-rwxr-xr-xgit/git-cdiff20
2 files changed, 24 insertions, 0 deletions
diff --git a/git/Makefile b/git/Makefile
index 1794675..cca3bd0 100644
--- a/git/Makefile
+++ b/git/Makefile
@@ -16,9 +16,12 @@ install:
test ! -d ~/.config/bash/aliases.d/git
ln -sf -- ~/.dotfiles/git/bash-aliases ~/.config/bash/aliases.d/git
../check-installed-shebang ge
+ ../check-installed-shebang git-cdiff
+ ../check-in-path diff
mkdir -p -- ~/.local/bin
ln -sf -- ~/.dotfiles/git/ge ~/.local/bin/
ln -sf -- ~/.dotfiles/git/new-c-proj ~/.local/bin/
+ ln -sf -- ~/.dotfiles/git/git-cdiff ~/.local/bin/
uninstall:
+! ../check-installed git
@@ -28,6 +31,7 @@ uninstall:
-rmdir -- ~/.config/bash/aliases.d
-unlink -- ~/.local/bin/ge
-unlink -- ~/.local/bin/new-c-proj
+ -unlink -- ~/.local/bin/git-cdiff
clean:
-rm -f -- .config
diff --git a/git/git-cdiff b/git/git-cdiff
new file mode 100755
index 0000000..bd4ae31
--- /dev/null
+++ b/git/git-cdiff
@@ -0,0 +1,20 @@
+#!/bin/dash
+if test -z "${GIT_CDIFF_CONTEXT}"; then
+ git difftool -y -x "diff -c --color=always" "$@"
+elif echo "${GIT_CDIFF_CONTEXT}" | grep -q '^-'; then
+ git difftool -y -x "diff ${GIT_CDIFF_CONTEXT} --color=always" "$@"
+else
+ git difftool -y -x "diff -C${GIT_CDIFF_CONTEXT} --color=always" "$@"
+fi | {
+ if test "$TERM" = linux; then
+ sed '/^\(\x1b\[[0-9;]*m\)* /s/\x1b\[[0-9;]*m//g'
+ else
+ sed '/^\(\x1b\[[0-9;]*m\)* /s/^/\x1b\[2m/g'
+ fi
+} | {
+ if test -t 1; then
+ less -R
+ else
+ cat
+ fi
+}