summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuebinm2024-03-15 17:09:35 +0100
committerstuebinm2024-03-15 17:09:35 +0100
commit127207830ac01eb3a49619d8ce1612a31a047b73 (patch)
tree4aa28f1312eea4c68c449628686e0a2aa15119a1
parent8ef4a63053e7e1143a7c7d706d47b20fc4ac98b3 (diff)
home: i have officially lost control of all the git repos
so I added a command to search though them :) Should help whenever I'm not sure if I have cloned something already. Intended usage is something like `cd (git where)`. It might be useful to extend this so it doesn't assume everything has a remote called `origin', but looks like my only three git repos which don't have one (and which are not my own) where cloned via heartwood/radicle, and I'm unlikely to need those again tbh. … tbh, it might also be worth it to add a mass-fetch command? So much of what I've cloned is just old stuff lying around …
-rw-r--r--home/home-minimal.nix10
1 files changed, 10 insertions, 0 deletions
diff --git a/home/home-minimal.nix b/home/home-minimal.nix
index c265218..d6488a5 100644
--- a/home/home-minimal.nix
+++ b/home/home-minimal.nix
@@ -70,6 +70,15 @@
end
fd $pattern | fzf --preview="glow {} --style=dark" --bind ctrl-j:preview-down,ctrl-k:preview-up,ctrl-alt-j:preview-page-down,ctrl-alt-k:preview-page-up
'';
+ git-where.body = ''
+ set gits (fd "^\\.git\$" -H)
+ for git in $gits
+ # .git may be a file (e.g. in case of standalone worktrees)
+ if test -d $git && contains origin (git --git-dir $git remote)
+ echo (git -C $git -C .. rev-parse --show-toplevel) (git --git-dir $git remote get-url origin)
+ end
+ end | fzf --preview 'git -C {1} show --no-show-signature --color=always' | cut -f1 -d" "
+ '';
};
};
@@ -93,6 +102,7 @@
log.showSignature = true;
init.defaultBranch = "main";
alias.search = "!git log --format='tformat:%h %cs %s' --no-show-signature | fzf --multi --preview 'git show {+1}|bat -p -lpatch --color=always' | cut -f1 -d\" \" | wl-copy -n && wl-paste";
+ alias.where = "!fish -c git-where";
merge.conflictStyle = "zdiff3";
push.autoSetupRemote = true;
commit.verbose = true;