4

リモート サーバーにプッシュすることにしたローカル リポジトリがあります (たとえば、mercurial リポジトリを許可するホストがあり、bitbucket にもプッシュしようとしています)。リポジトリには多くのファイルがあり、200MB 強です。ローカルでは、問題なくリポジトリをクローンできます。

現在、このリポジトリには多くの変更が加えられており、リモート サーバーにリポジトリのクローンを作成させる方法を見つけようとして、数日を無駄にしました。hg serveLANの外で仕事をすることができません。私はすべてを試しました。その代わりに、リモート サーバー (ホストと bitbucket の両方) に新しいリポジトリを作成し、そこには何も入れませんでした。現在、ローカルにある完全なリポジトリをこれらのリモートの場所にプッシュしています。プッシュ操作がスタックしてsearching for changesおり、他の有用な出力が得られないため、これまでのところ成功していません。1時間ほど放置しましたが変化なし。

今私の質問は、関係する限り、私は何を間違っているのhg serveですか? ローカルではアクセスできますが、リモートではアクセスできません(DynDnsを介して-適切に構成し、ルーターがポートを正しく転送します)。これにより、サーバーにリポジトリを初めて複製させ、その後プッシュします。2 番目の質問は、サーバーでのクローンが機能しないと仮定すると (たとえば、現在のリポジトリを bitbucket にプッシュする場合)、サーバーで空のリポジトリを作成してから、ローカル リポジトリを新しいリモート リポジトリにプッシュすることですか? それがsearching for changes問題の原因ですか?

この点で何か助けていただければ幸いです。

4

5 に答える 5

4

hgserveに関する限り、私は何を間違っているのですか?

言うのは難しいhg serveですが、通常、サードパーティのサービスでリモートクローンを作成する方法ではありません。私にとっては、必要がなければファイアウォールに穴を開けることはありません。

サーバーに空のリポジトリを作成してから、ローカルリポジトリを新しいリモートリポジトリにプッシュしますか?

はい。これが私がキルンでリモートクローンを作成する方法です。Kilnで新しい空のリポジトリを作成し、新しいリポジトリのURLを取得して、コンピューターからそのリポジトリにプッシュします。

それが変更の検索の問題の原因ですか?

確かではありませんが、このレポートは、非常に大きなプッシュが問題になる可能性があることを示唆しています。彼らは、より小さなチャックを押し込むことを提案しています(例えば、一度に数回転)。もう1つの考慮事項は、リビジョン履歴なしで生活できるかどうかです(現在のバージョンのファイルから新しいリポジトリを作成し、そのリポジトリをプッシュしても大丈夫ですか。レポートは、認証がいくつかの問題の原因であったことも示唆しています(しかし、それは別のエラーメッセージ)。

それ以外の場合は、問題をこの特定のリポジトリ、リモートへの接続、またはリモートリポジトリに切り分けようとするために、さらにデバッグを行う必要があります。いくつかの考え:

  1. すでに別のホストを試したようですが、おそらくもう1つ試してみてください。
  2. 空のリポジトリまたは別のリポジトリをマシンからリモートにプッシュできますか?
  3. ターゲットリポジトリまたはテストリポジトリをプッシュすることを試みることができる別のマシン/ネットワーク(たとえば、ラップトップと無料のWi-Fiを備えたローカルコーヒーハウス)からアクセスできますか?
于 2010-12-30T12:06:43.150 に答える
2

はい、問題なく空のリポジトリにプッシュできます。プッシュまたはプルすると、Mercurial はソース リポジトリと宛先リポジトリが相互に関連しているかどうかを確認します。これにより、たとえば OpenOffice に関連する変更セットを Mozilla Firefox のクローンに取り込むことができなくなります。

新しい空のリポジトリはすべてのリポジトリに関連付けられているため、いつでも空のリポジトリを作成して変更セットをそこにプッシュ/プルできます。

実際、あなたがするとき

hg clone http://example.net/my-repository

それはするのと同じです

hg init my-repository
cd my-repository
hg pull http://example.net/my-repository

ただし、デフォルトのパス設定はありません。その方法については、barjak のコメントを参照してください。

于 2010-12-30T12:00:38.317 に答える
1

受け入れられた回答が言うように、新しいレポを初期化してそれにプッシュするだけで、人々はそれをうまく(そして最も簡単に)知る必要があります。

ただし、サーバーが ssh にアクセスできる場合の別のオプションは、Windows ローカルでパテを使用してクイック リバース トンネルを作成することです。ファイアウォールを変更する必要はありません。

putty で ssh を探します >> メニューをトンネルし、リバース トンネルのリモート ボタンを選択します。

または、次のようなLinuxローカルで:

ssh -fnNTR <any port you want to forward to your remote>:localhost:<port for local hg serv> <and then here type what you would normally to ssh to your remote ssh sever>

これでファイアウォールをバイパスし、クローンを作成できます!

RをL(ローカル)に変更し、必要に応じてポート番号を変更するだけで、プッシュするための通常のフォワードトンネルを実行できることを付け加えておきます。

于 2012-04-25T02:00:41.730 に答える
0

変更セットのセットをプッシュしてみることができます。これは、メモリに問題がある場合に役立ちます。また、問題の原因となっている変更セットを特定するのにも役立ちます。

于 2012-01-31T18:40:31.293 に答える