2

当我右键单击我的 Hg 文件夹并选择TortoiseHg > Web Server时,我可以毫无问题地在端口 7999 上启动 Web 服务器。然后我关闭了那个对话框。如果我netstat -a -o从命令提示符下运行,我可以看到 的实例thgw.exe正在运行并正在侦听端口 7999(即使在关闭对话框之后)。具有讽刺意味的是,在任务管理器中,该thgw.exe过程被称为“Mercurial SCM 的 TortoiseHg GUI 工具”,即使没有运行 GUI。

问题

如果我通过TortoiseHg > WebServer再次打开该对话框,它会报告状态为“已停止”,并且启用了“开始”按钮。这是不正确的,因为端口仍在侦听。如果我单击开始按钮,我会在日志中收到此消息,如我所料:

abort: cannot start server at ':7999': 每个套接字地址(协议/网络地址/端口)通常只允许使用一次

问题

  1. 那么为什么 TortoiseHg 没有意识到现有thgw.exe的端口正在运行呢?

  2. 除了 netstat 和任务管理器之外,还有更好的方法来检查 TortoiseHg 是否正在侦听 Web 端口?并了解哪个端口代表哪个文件夹?

  3. 我无法停止网络服务器,那么你应该如何优雅地关闭 TortoiseHg 网络服务器而不从任务管理器中杀死它?这对我的生产源代码控制系统来说似乎是一件可怕的事情!

4

1 回答 1

4

单击“服务”窗口的“关闭”按钮时,窗口实际上并没有关闭,而是将自身最小化到通知区域中。请参阅下面屏幕截图中的地球图标:

通知区域中的服务窗口图标

如果单击该图标,则会出现原始的“服务”窗口,其中“开始”按钮实际上被禁用,而“停止”则被启用。您可以从那里停止服务器。

此行为已在 TortoiseHg 2.4、Windows 7 上进行了测试。

我在这里看到的唯一问题是,当您选择适当的菜单项时,原始窗口没有打开。

另请参阅TortoiseHg 错误跟踪器上的issue 1845 。

于 2012-06-02T18:00:14.103 回答