|
|
|
|
@ -166,8 +166,15 @@ alias gclean='git clean --interactive -d' |
|
|
|
|
alias gcl='git clone --recurse-submodules' |
|
|
|
|
|
|
|
|
|
function gccd() { |
|
|
|
|
command git clone --recurse-submodules "$@" |
|
|
|
|
[[ -d "$_" ]] && cd "$_" || cd "${${_:t}%.git}" |
|
|
|
|
# get repo URI from args based on valid formats: https://git-scm.com/docs/git-clone#URLS |
|
|
|
|
local repo="${${@[(r)(ssh://*|git://*|ftp(s)#://*|http(s)#://*|*@*)(.git/#)#]}:-$_}" |
|
|
|
|
|
|
|
|
|
# clone repository and exit if it fails |
|
|
|
|
command git clone --recurse-submodules "$@" || return |
|
|
|
|
|
|
|
|
|
# if last arg passed was a directory, that's where the repo was cloned |
|
|
|
|
# otherwise parse the repo URI and use the last part as the directory |
|
|
|
|
[[ -d "$_" ]] && cd "$_" || cd "${${repo:t}%.git/#}" |
|
|
|
|
} |
|
|
|
|
compdef _git gccd=git-clone |
|
|
|
|
|
|
|
|
|
|