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 here
git 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 на клавиатуре, и у меня все заработало.