Files
dotfiles/.functions/fshow.sh
Stefan Imhoff a41290c297 feat(nix): nix and back again
I tried Nix, but it had too many downsides so I removed it.

1. Didn't like that all files are immutable and simple config changes
need a complete rebuild.
2. Setting up a new Mac didn't work as smoothly as promised. Not worth
the effort.
3. It sucked a lot to always have to type in the password twice on each
darwin-rebuild
4. It solves problems I never had.
2024-08-07 17:49:02 +02:00

26 lines
923 B
Bash

# fshow - git commit browser
fshow() {
# Check if we're in a git repository
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
echo "Error: Not in a git repository"
return 1
fi
# Define the git log format
local log_format="%C(auto)%h%d %s %C(black)%C(bold)%cr"
# Use git log to get the commit history and pipe it to fzf
git log --graph --color=always --format="$log_format" "$@" |
fzf --ansi --no-sort --reverse --tiebreak=index \
--bind=ctrl-s:toggle-sort \
--bind=ctrl-d:preview-page-down \
--bind=ctrl-u:preview-page-up \
--preview 'grep -o "[a-f0-9]\{7,\}" <<< {} | xargs git show --color=always' \
--bind "ctrl-m:execute:
(grep -o '[a-f0-9]\{7,\}' | head -1 |
xargs -I % sh -c 'git show --color=always % | less -R') << 'FZF-EOF'
{}
FZF-EOF"
}