9

在工作中,我经常使用 Cygwin,因为它在广阔的 Windows 沙漠中为我提供了一片小绿洲。我不可避免地最终会通过 bash shell 运行一些非 Cygwin 程序,例如构建脚本(内部创建的批处理文件)和 Subversion CLI 二进制文件(我安装了 Windows 程序)。99% 的时间,我使用这个设置没有任何问题。然而,另外 1% 会导致一个奇怪的问题:

使用构建脚本和 SVN,大多数时候回车键被正确解释。例如,我将启动数据库创建脚本,它会提示我输入服务器名称。我输入“localhost”并回车。一切安好。然后它会结束,如果有错误,并使用more. 我按下的任何键都不被 识别more。我必须 Ctrl-C 退出它。

同样,如果我进行 Subversion 更新,通常一切都很好。但是,在发生交互式冲突解决的情况下,我通常会为“theirs-full”输入“tf”,然后按回车,但没有任何反应。我必须退出它并使用强制合并重新运行更新或在 Windows 中使用 TortoiseSVN 来执行此操作。

知道为什么 Cygwin 似乎随机不将回车键传递给程序吗?我认为这可能与 Unix 与 Windows 样式的行尾有关,所以我尝试手动输入这些字符,但这似乎没有什么区别。谢谢。

编辑:我刚刚再次发生这种情况,我意识到了一些事情。是 SVN 提示我输入密码。我输入了密码,它在屏幕上回显(错误),然后按回车...什么也没有。再按几次,光标移动,但没有任何反应。我按了 Ctrl-C,它把我转回 bash,然后它说“bash:[我的密码]:找不到命令”,然后是一些新的提示,等于我按 Enter 键的次数。所以发生的事情是输入从未进入 SVN,但在 SVN 退出后以某种方式被 bash 读取。我认为这可能会帮助某人弄清楚发生了什么。

4

2 回答 2

11

不幸的是,我认为您遇到了 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 cmd 提示符。这是因为 RXVT 意味着“tty”并且会破坏上面的#1。

3) 尝试为您遇到问题的 cmds 找到“本机”Cygwin 包,而不是使用 Windows cmds。(不过,我还没有为 cygwin 找到 1.6 svn 客户端。)

祝你好运!达斯汀

于 2008-12-02T17:41:30.580 回答
2

关于 mintty 项目的冗长讨论在这里 - http://code.google.com/p/mintty/issues/detail?id=56

在我的案例中提到的一种解决方案(输入本地颠覆的身份验证密码)是conin - http://code.google.com/p/mintty/downloads/detail?name=conin-0.0.2.zip&can=1&q=label %3AD发展

$ conin svn list https://{repo}
Password for 'user': ******
于 2012-06-15T07:13:40.720 回答