当我右键单击我的 Hg 文件夹并选择 TortoiseHg> Web 服务器时,我可以毫无问题地在端口 7999 上启动 Web 服务器。然后我关闭了该对话框。如果我从命令提示符处运行 netstat -a -o
,我可以看到 thgw.exe
的实例正在运行并监听端口 7999(即使在关闭之后)对话框)。具有讽刺意味的是,在任务管理器中,thgw.exe
进程被称为“TortoiseHg GUI tools for Mercurial SCM”,即使没有运行任何 GUI。
问题
如果我通过 TortoiseHg> WebServer 再次打开该对话框,它会报告状态为“已停止”,并且开始按钮已启用。这是不正确的,因为端口仍在监听。如果我单击开始按钮,我会按照预期在日志中收到此消息:
abort: cannot start server at ':7999': Only one usage of each socket address (protocol/network address/port) is normally permitted
问题
那么为什么 TortoiseHg 没有意识到现有的
thgw.exe
正在端口上运行?除了 netstat 和任务管理器之外,还有更好的方法来检查 TortoiseHg 是否正在监听 Web 端口吗?还可以了解哪个端口代表哪个文件夹?
我无法停止 Web 服务器,那么如何在不从任务管理器中终止 TortoiseHg Web 服务器的情况下正常关闭它?这对我的生产源代码控制系统来说似乎是一件可怕的事情!
最佳答案
当单击服务窗口的关闭按钮时,窗口实际上并没有关闭,而是最小化到通知区域中。请参阅下面屏幕截图中的地球图标:
如果单击该图标,则会出现原始的服务窗口,其中开始按钮实际上已禁用,而停止按钮已启用。您可以从那里停止服务器。
此行为已在 TortoiseHg 2.4、Windows 7 上进行测试。
我在这里看到的唯一问题是,当您选择适当的菜单项时,原始窗口不会打开。
另请参阅issue 1845在 TortoiseHg 错误跟踪器上。
关于webserver - TortoiseHg Web 服务器说它已停止,尽管它仍在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858437/