Автоматически включать имя владельца репо при клонировании - PullRequest
0 голосов
/ 08 июня 2018

Я клонирую репо из разных источников.Иногда это может сбивать с толку, кто был источником одного из этих репозиториев, которые все находятся в моей папке git.Чтобы это исправить, я начал вручную создавать подпапку с именем владельца репо, а затем клонировать в эту подпапку.Есть ли способ сделать это автоматически?Чтобы git прочитал имя владельца и затем клонировал в /?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вы можете использовать этот псевдоним Bash ручной работы clone (см. Ниже) следующим образом:

$ clone https://github.com/coq/coq.git ~/git/
+ git clone https://github.com/coq/coq.git /home/user/git/coq/coq
Cloning into '/home/user/git/coq/coq'...

$ clone git@github.com:coq/coq.git .
+ git clone git@github.com:coq/coq.git ./coq/coq
Cloning into './coq/coq'...

Он работает с репозиториями HTTPS и SSH GitHub:

alias clone='f(){ [[ $# -ne 2 ]] && { echo "\$ clone git@github.com:user/repo.git ."; return 1; } || ( tmp="${1##*github.com?}"; set -x; git clone "$1" "${2%/}/${tmp%.git}" ) }; f'

Но если вы не хотите автоматически добавлять имя пользователя репозитория GitHub и хотите одновременно обобщать его с другими URL-адресами Git, не связанными с GitHub, вы можете просто заменить tmp="${1##*github.com?}" на tmp="${1##*/}":

alias clone='f(){ [[ $# -ne 2 ]] && { echo "\$ clone git@github.com:user/repo.git ."; return 1; } || ( tmp="${1##*/}"; set -x; git clone "$1" "${2%/}/${tmp%.git}" ) }; f'

Например:

$ clone https://github.com/coq/coq.git ~/git/other-user
+ git clone https://github.com/coq/coq.git /home/user/git/other-user/coq
Cloning into '/home/user/git/other-user/coq'...
0 голосов
/ 08 июня 2018

git clone принимает необязательный второй аргумент для пункта назначения:

git clone https://github.com/username/repo <b>username-repo</b>

, который можно автоматизировать с помощью сценария оболочки для некоторых распознаваемых провайдеров, например:

github-clone() {
    local dest="$(printf %s "$1" | sed -n 's#^.*[/:]\([[:alnum:]-]\+\)/\([[:alnum:]-]\+\)\(\.git\)\?$#\1-\2#p')"
    if [[ -z "$dest" ]]; then
        git clone "$1"
    else
        git clone "$1" "$dest"
    fi
}
$ github-clone https://github.com/username/repo
Cloning into 'username-repo'...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...