Трубопроводы для мерзкого толчка

1

Всякий раз, когда я выполняю git push, я должен ввести свое имя пользователя и пароль в командной строке вручную.
Однако я хочу автоматизировать этот процесс.

Итак, я попытался передать учетные данные команде с помощью конвейера:

printf 'username\npassword' | git push

но запрос имени пользователя и пароля все равно не исчезнет!
Почему это не работает?

Примечание:
я знаю, что это можно сделать с помощью:
git push 'https://username:password@github.com/username/repo.git'
но мне интересно знать, что не так с методом трубопровода?


Также, чтобы подтвердить, что этот процесс работает для других случаев, я провел эксперимент.
Я создал скрипт b.py:

b.py:

#!/usr/bin/env python3

username = input()
password = input()

log = open("log.txt", "w")
print(username + "\n" + password, file=log)

Затем я выполнил printf 'abcd\nefgh' | ./b.pyв терминале, который работал должным образом, и в результате получил файл журнала, содержащий строки имени пользователя и пароля:

log.txt:

abcd
efgh
Анмол Сингх Джагги
источник

Ответы:

1

Это будет работать только в случае последовательных запросов, которые являются непосредственной частью сценария, как в вашем примере. Однако в случае, если gitваши значения передаются процессу до любого запроса имени пользователя / пароля - вероятно, когда он делает все (сеть и т. Д.) Раньше GIT_ASKPASS- для справки: https://git-scm.com/book/en/ v2 / GIT-Внутренность-переменные окружения

aphorise
источник
Так есть ли способ заставить его работать?
Анмол Сингх Джагги
Не то чтобы я в курсе. Кроме этого встроенного метода, на который вы ссылались, где учетные данные являются частью адреса. Еще одна вещь, о которой следует помнить, - это git-зависимость от используемого транспорта - так как он не справляется с этим - поэтому я представляю, что там также будет разделение, поэтому, вероятно, трубопровод не будет возможен без использования дополнительных хаков.
афоризация