Zsh псевдоним для изменения git credential-osxkeychain - PullRequest
1 голос
/ 06 апреля 2020

Мне необходимо регулярно заменять мои учетные данные git osxkeychain по умолчанию, используя командную строку. Я делаю это вручную следующим образом:

git credential-osxkeychain erase <Enter>
host=github.com <Enter>
protocol=https <Enter>

password=foo <Enter>
username=bar <Enter>
<Enter><Enter>

И затем этот процесс снова, за исключением git credential-osxkeychain store и новых учетных данных. Я хотел бы автоматизировать это, что-то вроде

alias git_newcred='git credential-osxkeychain erase; host=github.com; protocol=https;git credential-osxkeychain erase; host=github.com; protocol=https;'

, где вместо клавиши ввода находятся символы ;. Тем не менее, так как это происходит молча.

Начало метода read_credential в источнике выглядит следующим образом :

while (fgets(buf, sizeof(buf), stdin)) {
    char *v;

    if (!strcmp(buf, "\n"))
        break;
    buf[strlen(buf)-1] = '\0';

Как использовать псевдоним multi запись, которая является частью одной команды? Или есть лучший способ сделать это?

(Использование zsh, но я не думаю, что что-то происходит zsh -specifi c.)

1 Ответ

2 голосов
/ 06 апреля 2020

Вы должны использовать функцию, а не псевдоним. После запуска git остальные данные вводятся в эту команду, а не в дополнительные команды, запускаемые оболочкой. Вы можете сделать это с документом здесь

git_newcred () {
    git credential-osxkeychain erase <<EOF
host=github.com
protocol=https
password=foo
username=bar
EOF
}

или с трубой.

git_newcred () {
    # POSIX-compatible version
    # printf '%s\n' ... | git credential-osxkeychain
    print -l "host=github.com" "protocol=https" "password=foo" "username=bar" | git credential-osxkeychain
}
...