4

私は、自動オフサイトレプリケーションを実行するWindowsサーバーでアーカイブファイルシステムを実行しています。これにより、Mercurialリポジトリをホストし、それらの安全性を確保するのに理想的な場所になります。このファイルシステムはWindows専用なので、ホストOSとしてWindowsを使用するしかありません。

設定:

サーバー(「ウンゴリアント」、ネットワーク内部):

  • Windows7マスターリポジトリホストマシン。
  • Cygwinsshデーモン。
  • hg 1.9.3
  • 「hginit」を使用して、Windows上に新しいリポジトリ「/ cygdrive / j / mercurial/rcstudio」を作成しました。

クライアント:

  • hg2.1.2を実行しているMacOSX10.7.4
  • hg2.1.2を実行しているFreeBSD8.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

問題が不適切にフォーマットされたsshURIであるスタックオーバーフローの質問をたくさん見つけました...私のものは正しくフォーマットされており、絶対パスを記述しています。

私は次のすべてを確認しました:

  • hgコマンドは、サーバーとsshの両方で正常に実行されます。
  • 絶対パスを貼り付けると、sshを介して.hgディレクトリの存在を確認できます。
  • sshを介して手動で発行された他のhgコマンドは成功します(例:ssh cjp @ ungoliant'cd / cygdrive / j / mercurial / rcstudio; hg diff;')。
  • ホストマシンでは、同じ絶対パスからローカルにクローンを作成できます。

私はここで困惑しています。Mercurialのドキュメントでは、2.1.2は1.9.3の親からクローンを作成できるはずなので、バージョンの競合ではないようです。

よろしくお願いします!ありがとう!

4

3 に答える 3

4

私が最終的に得たのは回避策であり、答えではありません。

私自身のリモートsshコマンド処理の無知は、誤解を招きます。マシンにSSHで接続すると、「which hg」は、cygwin対応のバイナリ「/ usr / bin / hg」になりますが、リモートコマンド「ssh cjp @ ungoliant'which hg'」を実行すると、パスが返されます。私もそのマシンにインストールしたWindowsバイナリに。

.bashrcファイルで遊んだのですが、cygwinバイナリを優先するためのリモートコマンド実行を取得できませんでした。PATHにはWindowsPATHエントリすら含まれていないので、私は問題をハッキングし始め、最終的にはそれとの戦いをやめることにしました。

それ以来、私はそれを機能させたとしても、それは繊細な恨みであり、私がそれに費やした時間の価値がまったくないと確信しているので、アイデア全体を放棄しました。現在、リポジトリをBSDボックスでホストしており、Windowsマシンにcronがあり、そのリポジトリからアーカイブファイルシステムに24時間ごとにプルします。それはシンプルで、問題のない魅力のように機能しました。

于 2012-06-10T19:04:02.330 に答える
1

私は同じ問題を抱えていました、このようなオプション--remotecmdを追加することによってそれを解決しました

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

于 2013-10-25T09:02:23.897 に答える
0

scpを試行するときは、次のようにします。

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

残念ながら、動作しないhgの場合。代わりに試してください:

hg clone ssh://username@ipaddr/D:/testRepo
于 2014-03-21T10:06:03.350 に答える