Хорошо, это странно. Во-первых, это mintty, работающий на современном Cygwin, с git, извлеченным из setup.exe cygwin. Я бегу Zsh.
$ git clone https://<user>@<domain>/<repository>/ ~/src/project/dev
Initialized empty Git repository in /cygdrive/c/src/project/dev/.git/
Password: <actual password in plain text appears>
# Nothing happens...
^C
$ <password text that I just typed>
zsh: command not found: <same password text>
Что здесь происходит? Это проблема терминала, проблема оболочки, проблема с git или проблема с cygwin?
Обновление: Да, я использую версию Cygwin git, а не версию Windows:
$ which git
/usr/bin/git
$ git --version
git version 1.7.1
$ /cygdrive/c/Program\ Files\ \(x86\)/Git/bin/git.exe --version
git version 1.7.0.2.msysgit.0
^C
предполагает, что символы не отображаются. t отправляется на стандартный ввод процесса git. Но я не знаю, какая конкретно проблема может быть.Ответы:
ОК, я думаю, что нашел определенное решение.
Проблема заключается в том, что независимо от используемого терминала (puttycyg, mintty, cmd.exe), Git по умолчанию, при отсутствии более настроенных альтернатив, пытается использовать «простое приглашение пароля» (как вы можете прочитать в описании
core.askpass
опция конфигурации ).Простая подсказка пароля, очевидно, работает только в реальной UNIX, но не в Cygwin.
Решение состоит в том, чтобы установить SSH_ASKPASS-совместимую программу для Windows и настроить Git для ее использования.
То, что я сделал, было:
git config --global core.askpass "C:/win_ssh_askpass.exe"
. Обратите внимание, что в имени файла EXE подчеркивание, а не знак минус.https://<user>@<domain>/<repository>
). В противном случае Git запросит логин, прежде чем запрашивать пароль, используя ту же утилиту askpass. Вы можете неосознанно ввести свой пароль в качестве логина, который будет отправлен на веб-сервер и зарегистрирован в журнале доступа в виде простого текста!Теперь Git запрашивает пароль, используя элегантное окно графического интерфейса, и работает независимо от используемого терминала :)
источник
У меня возникла та же проблема - однако в моем случае я являюсь SSH-сервером на сервере Cygwin, поэтому очевидно, что Askpass Win32 не работает.
Вместо этого я написал этот простой скрипт для выполнения askpass. Я думал, что его можно использовать и из обычных приглашений, получая tty-устройство,
/bin/tty.exe
но это не сработало по неизвестной причине (не стесняйтесь tty самостоятельно или ищите другое решение, чтобы получить tty, возможно, я просто как-то ошибся )./bin/askpass.sh:
Убедитесь, что этот скрипт исполняемый, и используйте его в качестве настройки вашего git core.askpass. Поскольку этот скрипт использует переменную $ SSH_TTY, он обычно работает только из SSH. Однако вы можете установить $ SSH_TTY в
.bashrc
или,.bash_profile
если не установлено; таким образом, он должен работать даже с консоли. Следующая строка в вашем скрипте rc должна сделать это:источник
вышеуказанные решения не работают для меня, но я нашел другое.
Вы должны запустить агент SSH
просто добавьте в ~ / .bashrc и перезапустите консоль
PS Chrome и Opera используют перенос строки, который не совместим с bash - просто используйте другой браузер для копирования вставки
источник
Возможно, у вас есть метасимвол, например
&
, в URL. Это приведет к тому, что git будет работать в фоновом режиме, и в системе Unix он будет остановлен, как только он попытается прочитать из stdin. A;
также завершает выполнение команды на полпути через строку, аCtrl-C
остальная часть строки (отдельная команда) прерывается.Интересно, что
git
инициализация репозитория происходит,/cygdrive/c/src/project/dev/.git/
даже если вы сказали ему использовать~/src/project/dev
(если у вас нет домашнего каталога в странном месте). Это говорит о том , чтоgit
команда не видит остальную часть командной строки, которая является то , что случилось бы , если бы был паразитный&
или;
в URL.(У меня была эта проблема много раз
wget
, хотя не сgit
.)Попробуйте использовать
git clone
другой репозиторий или использовать другой транспорт из того же репо, чтобы посмотреть,git
не испорчен ли он вообще или только для этого репо. Вы также можете попробовать поместить одинарные кавычки вокруг URL.источник
~/src
символическая ссылка на/cygdrive/c/src
(C:\src
). Там нет&
в URL. Я попытаюсь клонировать публичный репозиторий git, но обычно у них не будет пароля ...Взгляните на следующую проблему - теперь я уверен, что это всего лишь ограничение мятежности и совместимости с Windows.
Выпуск 56 - мятный
У меня также были проблемы с запуском mysql и т.п. от mintty, поэтому ответ таков: это проблема эмуляции терминала.
источник
На вопрос уже был дан ответ ... Я просто хотел бы добавить, как я исправил:
Проверяя Windows
Git Bash
, я мог видеть этотgit
набор следующимSSH_ASKPASS
Итак, на Cygwin я добавил ту же переменную
.bashrc
или
При этом git открывает SSH_ASKPASS из Git ... Мне не нужно было устанавливать дополнительные SW или создавать дополнительные скрипты.
Надеюсь, что это может помочь!
источник
Несколько лет назад я помню, что у меня были проблемы с CVS-аутентификацией Cygwin ... это было связано с тем, установили ли вы Cygwin с окончаниями линий в стиле DOS или Unix (CRLF против просто LF); это один из параметров в диалоговом окне установщика. Если вы выбрали неправильный вариант (я думаю, что DOS был тем, который работал), пароль в конечном итоге был искажен или имел поддельный символ или что-то в этом роде.
В любом случае, возможно, стоит попробовать другой вариант.
источник
У меня такая же проблема, и, вопреки эту тему , проблема возникает с Cygwin GIT во всех возможных терминалах -
puttycyg
,mintty
а классическая для Windowscmd.exe
.Я все еще ищу правильное решение, но есть обходной путь - хотя это очень небезопасно, вы можете попробовать поместить пароль в URL репозитория, например:
Работает ли обходной путь для вас?
источник
Если вы часто используете репозиторий, проще всего создать файл ~ / .netrc с
Очевидно, вы должны установить драконовские права доступа к файлу.
источник
Просто уточнение к комментарию № 2
Там в Cygwin SSH-аск проход (неофициальный) здесь
Просто скачайте tar.bz2 и распакуйте в вашу папку cygwin. Работает без установки Borland Delphi Runtime.
источник