2

職場で Mercurial セットアップをインストールして、レガシー コードで評価しようとしています。私が現在使用している「サーバー」は、イントラネット上で Windows XP SP3 を実行している単なるデスクトップです。「クライアント」インストールはローカル デスクトップにあり、Windows XP SP3 も実行されています。(両方のマシンで TortoiseHG も使用しています。)

Web サーバーは で実行されてhttp://localhost:8000おり、ブラウザでリポジトリを表示できます。しかし、リポジトリへの発信変更を検出しようとすると、HTTP 404 エラーが発生します。リクエストがサーバーのログに表示されるのを確認できるので、正しい場所を指していますが、GET http://host:8000/reponame?cmd=capabilities HTTP/1.1 404. どの設定を変更しても、クライアントがリポジトリに対してコマンドを正常に実行できないようです。なぜこれがうまくいかないのか、誰にも分かりますか?

4

3 に答える 3

0

私も同様の設定をしていて、同様の問題がありました。

次のコマンドを使用してHGサーブを実行します(バッチファイルにあります)。

hg.exe serve --prefix mercurial --address 123.12.1.1 --port 8008 --web-conf hg-web.conf --accesslog hg-access.log --errorlog hg-error.log

hg-web.confには次のものがあります。

[web]
style = default
allow_push = *
push_ssl = false

[paths]
my-repo = c:\hg\my-repo

この設定では、URLにアクセスしてリポジトリにアクセスできますhttp://ip:port/mercurial/my-repo

問題なくプッシュできます。

この設定を試してみてください。問題の解決に役立つことを願っています。

于 2013-03-07T19:31:03.203 に答える
0

プッシュとは、変更セットをあるレポから別のレポに移動することを意味します。レポの 2 つの別々のクローンを作成してから、A から B にプッシュしようとしたとは述べていません。ですから、ここで混乱していると仮定して、その混乱について話しましょう。自分のリポジトリに対して実行されている hg サービス インスタンス。それは、自分に何かを伝えるために自分に電話をかけようとするようなものです。

次に、本当に A から B にプッシュしようとしていて、A に B に到達する必要がある変更がある場合、実際の問題はおそらく、リポジトリの URL を正しく入力していないことです。 GUIツールはTortoise HGだと思います。学習中に、コマンド ラインからもう一度試してください。エラーが発生した場合は、ここにエラーを投稿してください。hg push http://myserver:8000

私が Mercurial を初めて試したとき、Subversion を長い間使用してきたため、実際よりも「サーバー」コンポーネントが必要だと考えるようになりました。Subversion では、サーバーはコミットが行われる場所です。in mercurial では、コミットはローカルで行われ、リモート (おそらく中央) サーバーにプッシュすると、チームの他の人が変更を見ることができます。これが大きな違いです。コミットはローカルで行われるため、プッシュしようとしていると思います。コミットとプッシュの違いについて混乱している場合は、http://hginit.com/を参照することをお勧めします。

サーバーのセットアップに関しては、私が推奨できるかなり簡単なオプションが 3 つあります。

  1. 他の回答で示されているように、コマンドラインから「hg serve」。簡単で、一時的な使用のみ。学習に最適です。

  2. 完全な認証とおそらく暗号化を備えた永続的な Web サーバーのために、Apache 内に Mercurial をインストールします (IIS 内に Mercurial をインストールするよりも簡単です)。Mercurial wiki でhgwebdirの手順を使用すると、約 1 時間かかります。事前に構築されたソリューションを使用すると、所要時間が大幅に短縮されます。Windows 用の Bitnami のビルド済みソリューションを使用し、最近 5 分で 1 つを取得しました。Bitnami は、Python、Apache、Mercurial、およびその他のものを取得するインストーラーを利用可能にします。これらはすべてインストールされ、「スタック」と呼ばれるもの (既に機能するものの束) で連携して動作します。

  3. これが本当に素晴らしい解決策です。BitBucket.org の無料のプライベート Web リポジトリを使用します。パブリック (オープン ソース) およびプライベート (小規模なチームおよび個人) での使用は無料で、大規模なチームでは非常に安価です。あなたのための管理努力?ウェブサイトにログインするだけです。これで完了です。

于 2013-03-11T13:28:20.847 に答える
0

さて、TortoiseHG で内部サーバーを起動すると (単一リポジトリの場合、RepostoryワークStart Web-serverベンチのメイン メニューから)

  • サーバー ウィンドウには「Running on localhost:8000」と表示されますが、実際にはサーバーはすべてのインターフェイスをリッスンします (netstat -naを表示TCP 0.0.0.0:8000 0.0.0.0:0 LISTENING)
  • フォークの clone-edit-commit と送信のテスト (THG から直接) では、

% hg --repository Z:\clone outgoing http://10.1.14.94:8000/

comparing with http://10.1.14.94:8000/

searching for changes

changeset: 39:c57a9357ec55

tag: tip

user: I

date: Fri Mar 08 17:00:05 2013 +0600

summary: Test-change

少し前に、別のホストからこれらの Mercurial リポジトリにプル|プッシュもしました。サーバーの設定は簡単で、すべて TortoiseHG 設定内で行われました。

mercurial.ini の [web] セクション (それ以上のものはありません)

[web]
port = 8000
encoding = UTF-8
allow_archive = bz2, gz, zip
style = gitweb

(プッシュは無効になり、プル専用モードで動作します)

PS: Windows XP SP3 の TortoiseHg バージョン 2.7.1

于 2013-03-08T11:18:02.710 に答える