feat: add fzf functions to interact with git worktrees
These have to be functions sadly because `cd` doesn't work otherwise. This just means there is more reason to have subcommand aliases on a shell level. :) Heavily based on nerdypeppers stuff[https://peppe.rs/posts/curing_a_case_of_git-UX/].
This commit is contained in:
parent
a74ea2571a
commit
180152ba4a
1 changed files with 48 additions and 0 deletions
|
@ -42,6 +42,54 @@ in {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
|
gwa() {
|
||||||
|
[[ "$1" ]] || {
|
||||||
|
echo "required branch name argument" >&2
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
local repo="''${PWD##*/}"
|
||||||
|
local uuid="$(< /proc/sys/kernel/random/uuid)"
|
||||||
|
local basepath="$HOME/worktrees"
|
||||||
|
local path="$basepath/$repo-$uuid"
|
||||||
|
|
||||||
|
mkdir -p "$basepath"
|
||||||
|
git worktree add "$path" -b "$1" && cd "$path"
|
||||||
|
}
|
||||||
|
|
||||||
|
gwd() {
|
||||||
|
local res="$(
|
||||||
|
set -o pipefail
|
||||||
|
git worktree list | \
|
||||||
|
${pkgs.fzf}/bin/fzf --preview 'git log --color --decorate --oneline' \
|
||||||
|
--preview-window=up \
|
||||||
|
--cycle \
|
||||||
|
--query "$1" |\
|
||||||
|
cut -d' ' -f1
|
||||||
|
)"
|
||||||
|
|
||||||
|
[[ $? -eq 0 ]] && echo "$res" && git worktree remove "$res"
|
||||||
|
}
|
||||||
|
|
||||||
|
gwg() {
|
||||||
|
local res="$(
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
local trees="$(git worktree list | ${pkgs.fzf}/bin/fzf --filter "$1" --no-sort)"
|
||||||
|
if [[ "$(wc -l <<<"$trees")" -eq 1 ]]; then
|
||||||
|
printf '%s\n' "$trees"
|
||||||
|
else
|
||||||
|
printf '%s\n' "$trees" | \
|
||||||
|
${pkgs.fzf}/bin/fzf --preview='git log --color --decorate --oneline' \
|
||||||
|
--preview-window=up \
|
||||||
|
--cycle \
|
||||||
|
--query "$1"
|
||||||
|
fi | cut -d' ' -f1
|
||||||
|
)"
|
||||||
|
|
||||||
|
[[ $? -eq 0 ]] && echo "$res" && cd "$res"
|
||||||
|
}
|
||||||
|
|
||||||
__prompt() {
|
__prompt() {
|
||||||
local status="$?"
|
local status="$?"
|
||||||
local row
|
local row
|
||||||
|
|
Loading…
Reference in a new issue