введите ключ иногда не распознается в приложениях Windows под Cygwin - PullRequest
9 голосов
/ 14 октября 2008

На работе я часто пользуюсь Cygwin, потому что он предлагает мне маленький оазис в бескрайней пустыне Windows. Я неизбежно заканчиваю тем, что запускаю некоторые не-Cygwin программы через оболочку bash, такие как сценарии сборки (пакетные файлы, созданные внутри компании) и исполняемые файлы Subversion CLI (у меня установлены Windows). В 99% случаев у меня нет проблем с этой настройкой. Однако другой 1% вызывает странную проблему:

Как для сценариев сборки, так и для SVN большую часть времени клавиша ввода интерпретируется правильно. Например, я запустил скрипт создания базы данных, и он запросит у меня имя сервера. Я набираю "localhost" и нажимаю ввод. Все в порядке. Затем он доходит до конца, если есть ошибки, и печатает вещи, используя more. Никакая клавиша, которую я нажимаю, не распознается more. Я должен Ctrl-C из этого.

Аналогично, если я делаю обновление Subversion, обычно все в порядке. Однако в случае интерактивного разрешения конфликта я обычно набираю «tf» для «их полного» и нажимаю ввод, но ничего не происходит. Я должен нажать Ctrl-C и заново запустить обновление с принудительным слиянием или использовать TortoiseSVN в Windows, чтобы сделать это.

Есть идеи, почему Cygwin случайно не передает ключ ввода в программы? Я считал, что это может быть связано с окончаниями строк в стиле Unix против Windows, поэтому я попытался ввести эти символы вручную, но, похоже, это не имеет значения. Спасибо.

Редактировать : Я только что повторил это со мной, и я кое-что понял. Это был SVN, запрашивающий у меня пароль. Я набрал пароль, который он отображал на экране (плохо), и нажал ввод ... ничего. Нажмите ввод еще несколько раз, курсор перемещается, но ничего не происходит. Я нажимаю Ctrl-C, и он возвращает меня обратно в bash, который затем говорит: «bash: [мой пароль]: команда не найдена», а затем количество новых запросов, равное числу раз, когда я нажимаю клавишу ввода. Так что произошло то, что ввод никогда не поступал в SVN, но каким-то образом был прочитан bash после выхода из SVN. Я подумал, что это может помочь кому-то понять, что происходит.

Ответы [ 2 ]

11 голосов
/ 02 декабря 2008

К сожалению, я думаю, что вы столкнулись с одной из проблем консольных приложений Cygwin и windows / dos. См. «Консольные программы» на http://www.cygwin.com/cygwin-ug-net/using-effectively.html.

Это просто ограничение для консольных приложений Windows. Такое поведение является обычным для клиента windows myqsl cmd и клиента svn, например.

Вот некоторые вещи, на которые следует обратить внимание - я успешно использовал этот подход как с Windows MySQL, так и с Windows SVN-клиентами:

1) Постарайтесь убедиться, что в вашей переменной окружения CYGWIN нет «tty», и посмотрите, помогает ли это (снимите это значение в «Мой компьютер» -> «Свойства» -> «Дополнительно» -> «Переменные среды» и закройте / перезапустите все запросы cygwin bash) .

2) Не используйте RXVT - вместо этого используйте основную командную строку Cygwin. Это потому, что RXVT подразумевает "tty" и сломает # 1 выше.

3) Попробуйте использовать «родной» пакет Cygwin для команд, с которыми у вас возникают проблемы, вместо использования команд Windows. (Я пока не нашел клиента 1.6 svn для cygwin.)

Удачи! Dustin

2 голосов
/ 15 июня 2012

Продолжительное обсуждение мятного проекта здесь - http://code.google.com/p/mintty/issues/detail?id=56

Одно упомянутое решение, которое работало в моем случае (ввод паролей аутентификации для нативной Subversion): conin - http://code.google.com/p/mintty/downloads/detail?name=conin-0.0.2.zip&can=1&q=label%3ADevelopment

$ conin svn list https://{repo}
Password for 'user': ******
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...