Git, plink и cmd.exe: как настроить plink.exe быть многословным при использовании в качестве GIT_SSH
Как я могу настроить plink.exe быть многословным при запуске git?
Проблема: на окнах, используя команду git.cmd clone git+ssh://user@host/repo folder
когда GIT_SSH=plink.exe
периодически терпит неудачу через рабов сборки. Мне нужно найти основную причину и сделать соединения надежными, без повторных попыток.
Я сузил, что sshd работает и завершает свои процессы без ошибок. На сервере запущен gitosis, поэтому у меня есть только выход из командной строки. Когда происходит сбой, gitosis не вызывается (без распечатки gitosis), поэтому я подозреваю, что клиент windows ssh.
Я хочу соединиться с подробным ведением журнала, когда git вызывает plink.exe.
настройка GIT_SSH=plink.exe -v
результаты в:
ошибка: не удается запустить plink.exe -v: нет такого файла или каталога
Оказывается, GIT_SSH должен быть исполняемым или упаковочным скриптом.
Создание такой оболочки командного файла становится ближе: GIT_SSH=C:\path\to\plink.cmd
где plink cmd plink.exe -v %*
выводит на консоль ожидаемое подробное ведение журнала, но безуспешно завершает работу с кодом ошибки 128. Клонированная папка никогда не создается, и последний вывод на консоль:
Невозможно записать в стандартный вывод: канал закрыт.
Как я могу получить подробный журнал клиента во время сбоя от plink?
2 ответа
Вытащите исходный код из svn://svn.tartarus.org/sgt/putty
, создайте файлы Windows make из командной строки Visual Studio 2010 в корневом каталоге, используя perl mkfiles.pl
, а затем построить все с nmake -f Makefile.vc
,
Найдите хорошее место для локального редактирования в winplink.c
основная функция. Я поставил свой прямо перед циклом обработки arg.
flags |= FLAG_VERBOSE;
Ошибка "Plin" - это фактически первые 4 символа возвращенного сообщения об ошибке с сервера Git. Обычно имя учетной записи передается из 'echo %USERNAME%' при использовании plink.exe для предоставления пароля.
Мы обнаружили, что периодически возникающие ошибки связаны с непоследовательным отображением имен пользователей в список пользователей GIT. В итоге мы стандартизировали все имена пользователей Git в верхнем регистре. и проблема ушла.
Эта проблема затронула многих пользователей во многих ветвях Git.