714399a7c33963384ef7f21ce21f6d134416f9aa

Author
fanuch <fanuch@gmail.com>
Committer
Marc Cornellà <hello@mcornella.com>
Date

Message

feat(git): add `gccd` alias to clone and cd into git repository (#8220)

Fixes #8216
Closes #8220

Co-authored-by: Nelson Estevão <nelsonmestevao@gmail.com>

Diff

 1diff --git a/plugins/git/README.md b/plugins/git/README.md
 2index 05ef25099317c115dc095cce0858fd335c9b6a91..b68dc552e0780944eef639c69bfc718ced6ea1c4 100644
 3--- a/plugins/git/README.md
 4+++ b/plugins/git/README.md
 5@@ -47,6 +47,7 @@ plugins=(... git)
 6 | gcb                  | git checkout -b                                                                                                                  |
 7 | gcf                  | git config --list                                                                                                                |
 8 | gcl                  | git clone --recurse-submodules                                                                                                   |
 9+| gccd                 | git clone --recurse-submodules "$@" && cd "$(basename $_ .git)"                                                                  |
10 | gclean               | git clean -id                                                                                                                    |
11 | gpristine            | git reset --hard && git clean -dffx                                                                                              |
12 | gcm                  | git checkout $(git_main_branch)                                                                                                  |
13diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
14index 11dff99d979d31eaea76c699c8bac3d5dcb34fb9..f2431fde569a2106d6f12014703890cb26247079 100644
15--- a/plugins/git/git.plugin.zsh
16+++ b/plugins/git/git.plugin.zsh
17@@ -97,6 +97,13 @@ alias gcas='git commit -a -s'
18 alias gcasm='git commit -a -s -m'
19 alias gcb='git checkout -b'
20 alias gcf='git config --list'
21+
22+function gccd() {
23+  command git clone --recurse-submodules "$@"
24+  [[ -d "$_" ]] && cd "$_" || cd "${${_:h}%.git}"
25+}
26+compdef _git gccd=git-clone
27+
28 alias gcl='git clone --recurse-submodules'
29 alias gclean='git clean -id'
30 alias gpristine='git reset --hard && git clean -dffx'