【发布时间】:2012-06-05 23:29:12
【问题描述】:
我在 Windows 服务器上运行一个归档文件系统,它会自动进行异地复制,这使它成为托管 Mercurial 存储库并确保其安全性的理想场所。此文件系统仅适用于 Windows,因此我别无选择,只能使用 Windows 作为主机操作系统。
设置:
服务器('ungoliant',在我的网络内部):
- Windows 7 主存储库主机。
- Cygwin ssh 守护进程。
- 汞 1.9.3
- 使用“hg init”在 Windows 上创建了新的存储库“/cygdrive/j/mercurial/rcstudio”。
客户:
- Mac OSX 10.7.4 运行 hg 2.1.2
- 运行 hg 2.1.2 的 FreeBSD 8.3
客户端问题(在 Mac 和 FreeBSD 上相同):
$ hg clone ssh://cjp@ungoliant//cygdrive/j/mercurial/rcstudio
running ssh cjp@ungoliant 'hg -R /cygdrive/j/mercurial/rcstudio serve --stdio'
remote: abort: There is no Mercurial repository here (.hg not found)!
abort: no suitable response from remote hg!
我已确认路径和 URI 是正确的。 那里绝对有一个“.hg”目录:
$ ls -la
total 0
drwxr-xr-x 3 cjp staff 102 Jun 5 17:41 .
drwxr-xr-x 41 cjp staff 1394 Jun 5 16:30 ..
$ scp -r cjp@ungoliant:/cygdrive/j/mercurial/rcstudio/.hg .
$ ls -la
total 0
drwxr-xr-x 3 cjp staff 102 Jun 5 17:41 .
drwxr-xr-x 41 cjp staff 1394 Jun 5 16:30 ..
drwxr-xr-x 5 cjp staff 170 Jun 5 17:41 .hg
$ ls -la .hg
total 16
drwxr-xr-x 5 cjp staff 170 Jun 5 17:41 .
drwxr-xr-x 3 cjp staff 102 Jun 5 17:41 ..
-rw-r--r-- 1 cjp staff 57 Jun 5 17:41 00changelog.i
-rw-r--r-- 1 cjp staff 33 Jun 5 17:41 requires
drwxr-xr-x 2 cjp staff 68 Jun 5 17:41 store
我发现了很多 stackoverflow 问题,其中问题是 ssh URI 格式不正确......我的格式正确并描述了绝对路径。
我已确认以下所有内容:
- hg 命令在服务器上和通过 ssh 都可以正常运行。
- 如果我粘贴绝对路径,我可以通过 ssh 确认 .hg 目录的存在。
- 其他通过 ssh 手动发出的 hg 命令成功(例如:ssh cjp@ungoliant 'cd /cygdrive/j/mercurial/rcstudio; hg diff;')。
- 在主机上,我可以从同一绝对路径进行本地克隆。
我被难住了。 Mercurial 文档听起来像是 2.1.2 应该能够从 1.9.3 父级克隆,所以它似乎不是版本冲突。
非常感谢您的帮助!谢谢!
【问题讨论】:
-
当您通过 ssh 访问您的存储库时,使用哪个
hg二进制文件?也许那里有一个非cygwin二进制文件,它不能处理cygwin路径,而是期望j:\mercurial\rcstudio。 -
你说得对。我自己对远程 ssh 命令处理的无知导致了这个问题。如果我要 ssh 到机器,“which hg”会导致 cygwin 感知二进制文件“/usr/local/
-
你完全正确。我自己对远程 ssh 命令处理的无知导致了这个问题。如果我要 ssh 到机器,“which hg”会导致 cygwin 感知二进制文件“/usr/bin/hg”,但是如果我执行远程命令问题“ssh cjp@ungoliant 'which hg'”,它会返回我也在该机器上安装的 Windows 二进制文件的路径。
标签: windows macos mercurial clone freebsd