Git Credential Fill отклоняет мой ввод

Я хочу запускать ежедневное задание на сервере Windows: git-pull + тяжелые тесты. Поскольку я хочу, чтобы он запускался по расписанию и запускался из скрипта, мне нужно, чтобы учетные данные git вводились автоматически. Я хочу использовать Git заполнить учетные данные

с синтаксическим ключом = значение

Поскольку я впервые использую учетные данные git, я могу ошибиться.

Я пытался работать как в git-bash (расширения git -> ctrl+G), так и в Cygwin. Там я ввел следующие строки:

$ git credential fill
protocol=ssh
host=devserver
username=<my user name>
password=<my password>
path=/srv/gitosis/repositories/Matlab.git
<empty line>

Затем Git отвечает:

warning: invalid credential line:
fatal: unable to read credential from stdin

Я также попытался ввести только одну строку перед пустой строкой, и получил тот же результат. Я пробовал только строку имени пользователя, только строку протокола и только строку хоста.

Мои вопросы:

Первое: что я сделал не так.

Второе: как правильно кормить, если я бегу enter code heregit remote -vv и получите:

origin  gitosis@10.10.10.102:/srv/gitosis/repositories/Matlab.git (fetch)
origin  gitosis@10.10.10.102:/srv/gitosis/repositories/Matlab.git (push)

каков мой путь?

В-третьих, какое имя хоста

учитывая вывод git remote, если я запускаю ping devserverи получить

64 bytes from 10.10.10.102: icmp_seq=0 ttl=64 time=74 ms

Значит ли это, что хост является devserver?

1 ответ

Во-первых, отказ от ответственности: я не знаю, как работает git, и я просто взламываю все вместе, чтобы заставить их работать, и комментирую это здесь на случай, если это будет полезно для вас. На этом этапе я также использую устаревшую версию git. (1.9.5.mysysgit; у меня есть причины)

Мой опыт от попыток сделать что-то подобное заключался в том, что git-credential было трудно заставить работать правильно. Однако я получил нечто похожее на работу, работая более напрямую с помощью помощника по учетным данным.

Я нашел статью об API учетных данных, которая описывает вызов git credential-foo когда git config credential.helper возвращается foo, Похоже, что это немного другой интерфейс, с командой get вместо fill (что также кажется гораздо более логичным).

В любом случае, мой помощник по учету wincredи давайте позвоним хозяину mysite.com, Я выполняю большую часть своей работы на одном и том же сайте, поэтому диспетчер учетных данных Windows отображает сохраненные учетные данные для https://myusername@mysite.com, а не на какой-то конкретный путь. Позвонив, я ввожу:

>git credential-wincred get
protocol=https
host=mysite.com

а затем выйти:

username=myusername
password=mypassword

Я также могу добавить имя пользователя в список ввода, и он выводит то же самое. Если я добавлю какой-либо путь к входам или заменим хост на IP, это не сработает.

Мое предложение будет посмотреть, если вы можете использовать git credential-foo <get|store|erase> синтаксис, а не git credential <fill|approve|reject>хотя, по-видимому, они, по сути, одно и то же, только с немного другими именами.


Чтобы ответить на ваши более конкретные вопросы:

Что я сделал не так?

Если я правильно понимаю, что вы пытаетесь установить учетные данные git, я думаю, что вы хотите позвонить git credential approve скорее, чем git credential fill, как approve фактически отправит введенные вами значения помощнику для хранения, тогда как fill пытается заполнить дыры в предоставленных вами данных (я думаю; в git названия здесь и в других местах сбивают с толку).

Какой правильный путь предоставить?

Я не уверен, так как у моего одного перекрывающегося использования не было пути, но я бы предложил srv/gitosis/repositories/Matlab.git, поскольку ведущая косая черта подразумевает, что это путь.

Какое имя хоста?

Я подозреваю, что здесь происходит простое сопоставление строк на хосте в вашем удаленном имени, а не поиск домена, поэтому я бы предложил использовать host=10.10.10.102 для вашей ситуации.

Самый простой способ - использовать Git Bash для ввода команд вместо использования командной строки. Это решит проблему со стандартным вводом.

Я обнаружил, что это проблема с окончанием строк в командной оболочке Windows. Удерживая клавишу Alt, нажмите 1 и 0 на цифровой клавиатуре (другими словами, вставьте символ перевода строки), а затем нажмите Enter на клавиатуре, и у меня все заработало.

Другие вопросы по тегам