繁体   English   中英

“(.hg not found)”从cygwin托管的存储库通过ssh克隆到Mac和FreeBSD客户端时

[英]“(.hg not found)” when cloning from cygwin-hosted repository via ssh to Mac and FreeBSD clients

我在Windows服务器上运行存档文件系统,该服务器执行自动异地复制,这使其成为托管Mercurial存储库并确保其安全性的理想位置。 这个文件系统只有Windows,所以我别无选择,只能使用Windows作为主机操作系统。

建立:

服务器('ungoliant',我的网络内部):

  • Windows 7主存储库主机。
  • Cygwin ssh守护进程。
  • hg 1.9.3
  • 在Windows上使用“hg init”创建了新的存储库“/ cygdrive / j / mercurial / rcstudio”。

客户:

  • Mac OSX 10.7.4运行hg 2.1.2
  • FreeBSD 8.3运行hg 2.1.2

客户端问题(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命令处理的无知导致了误解。 如果我要ssh到机器,“哪个hg”导致cygwin感知二进制文件“/ usr / bin / hg”,但是如果我做了一个远程命令“ssh cjp @ ungoliant'hg'”,它返回了路径到Windows二进制文件我也安装在那台机器上。

我玩我的.bashrc文件,无法获得远程命令执行来优先处理cygwin二进制文件。 PATH甚至没有包含Windows PATH条目,所以我开始讨论这个问题并最终决定停止与它斗争。

我已经放弃了整个想法,因为我相信,即使我把它付诸实践,它也将是一个微妙的kludge,而且根本不值得我花在它上面。 我现在将我的存储库托管在BSD盒子上,并且我在Windows机器上有一个cron,它每24小时从该存储库拉到存档文件系统一次。 它很简单,就像一个零问题的魅力。

我有同样的问题,通过添加像这样的选项--remotecmd来解决它

hg clone --remotecmd /usr/bin/hg ssh://me@mywindowspc//cygdrive/m/hgrepo

当您尝试使用scp时,您将执行以下操作:

scp username@ipaddr:/cygdrive/d/test/foo.txt ./myDestFolder

不幸的是,hg不起作用。 而是尝试:

hg clone ssh://username@ipaddr/D:/testRepo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM