diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-06-15 22:56:52 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-06-15 22:56:52 +0200 |
| commit | f8fa107a46cba8699ccdd86639af5fd9fc2ceda7 (patch) | |
| tree | a61a377bbe5ec5739827d3bad5a553762937a614 | |
| parent | 0e8c06fa19ce5ffa7c66c34990962221d13fdf42 (diff) | |
add simple bare handling
| -rwxr-xr-x | shell-scripts/kakup | 23 |
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 |
