summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-06-15 22:56:52 +0200
committerMike Vink <mike1994vink@gmail.com>2023-06-15 22:56:52 +0200
commitf8fa107a46cba8699ccdd86639af5fd9fc2ceda7 (patch)
treea61a377bbe5ec5739827d3bad5a553762937a614
parent0e8c06fa19ce5ffa7c66c34990962221d13fdf42 (diff)
add simple bare handling
-rwxr-xr-xshell-scripts/kakup23
1 files changed, 22 insertions, 1 deletions
diff --git a/shell-scripts/kakup b/shell-scripts/kakup
index 1512ad5..3e45d29 100755
--- a/shell-scripts/kakup
+++ b/shell-scripts/kakup
@@ -24,9 +24,30 @@ session-or-client() {
echo $client
}
+is-bare() {
+ project="$(cat -)"
+ pushd $project >/dev/null 2>&1
+ if grep 'bare = true' config >/dev/null 2>&1 ; then
+ branch="$(git branch -a --format '%(refname)' | fzf -1)"
+ echo "$branch" >debug 2>&1
+ if [[ "$branch" == "refs/remotes/"* ]]; then
+ git branch ${branch#refs/remotes/*/} -t $branch >debug 2>&1
+ git worktree add ${branch#refs/remotes/*/} ${branch#refs/remotes/*/} >debug 2>&1
+ branch="${branch#refs/remotes/*/}"
+ elif [[ "$branch" == "refs/heads/"* ]]; then
+ branch="${branch#refs/heads/}"
+ git worktree add $branch $branch >debug 2>&1
+ fi
+ echo "$project/$branch"
+ else
+ echo "$project"
+ fi
+ popd >/dev/null 2>&1
+}
+
case "${@}" in
"") client="$(pwd | session-or-client)" ;;
- .) client="$(fd -d1 "." -t d $HOME $HOME/projects | fzf -1 | session-or-client)" ;;
+ .) client="$(fd -d1 "." -t d $HOME $HOME/projects | fzf -1 | is-bare | session-or-client)" ;;
*) client="$(echo "${@}" | session-or-client)" ;;
esac