当我右键单击我的 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': 每个套接字地址(协议/网络地址/端口)通常只允许使用一次
问题
那么为什么 TortoiseHg 没有意识到现有
thgw.exe
的端口正在运行呢?除了 netstat 和任务管理器之外,还有更好的方法来检查 TortoiseHg 是否正在侦听 Web 端口?并了解哪个端口代表哪个文件夹?
我无法停止网络服务器,那么你应该如何优雅地关闭 TortoiseHg 网络服务器而不从任务管理器中杀死它?这对我的生产源代码控制系统来说似乎是一件可怕的事情!