5

私はビットバケットリポジトリを持っているプロジェクトを持っています、そしてそれは私がサブリポジトリとして組み込む別のプロジェクトに依存しています。現在、サブリポジトリへのプッシュアクセスはありません。また、必要も必要もありません。これはプルのみの関係です。

メインリポジトリをプッシュすると、サブリポジトリもプッシュしようとすることを理解しています。それができないので、メインリポジトリのディレクトリと同じレベルで、依存プロジェクトのローカルコピーをプルしました。本質的に、私は次のレイアウトを持っています:

Main/           ; pushes to https://mine.org/Main
  .hg/
  .hgsub
  Lib/
    SubRepo/    ; clone of Main/../SubRepo/
      .hg/

SubRepo/        ; local copy of https://forbidden.org/SubRepo
  .hg/

の内容は.hgsub

Lib/SubRepo = ../SubRepo

それから私はクローンを作りました、

~/path/to/Main $ hg clone ../SubRepo/ Lib/SubRepo

ここまでは順調ですね。問題は、これをすべて設定して変更をコミットした後、Main Mercurialをプッシュしようとすると、存在しないhttps://mine.org/SubRepoにSubRepoをプッシュしようとするため、プッシュ操作全体が失敗することです。

足りないものはありますか?

4

2 に答える 2

4

https://mine.org/SubRepoを作成しないのはなぜですか。アドバタイズしたくない場合は、ファイルhide[web]セクションでいつでもオンにでき.hg/hgrcます。これは私が慣れ親しんだパターンであり、メインリポジトリとすべてのサブリポジトリを使用する各場所(開発ボックスとWeb向けhgwebインストールの両方)で同じレイアウトに複製します。

または、次のような[subpaths]セクションを使用することもできます。Main/.hg/hgrc

[subpaths]
https://mine.org/SubRepo = https://forbidden.org/SubRepo

これにより、プッシュの派生ターゲットをインターセプトし、プッシュできない場所にターゲットを向けることができます。これにより、何も変更されていないことがわかり、プッシュを続行できます。

于 2011-02-24T05:13:28.660 に答える
1

Mercurialが行っていることは正当なようです。.hgsubにリストされているパスを使用して、Mainから1レベル上にある「SubRepo」というディレクトリにプッシュしようとしています。これは明らかにあなたが望むものではないので、おそらくここでいくつかの魔法を働かせる必要があります。私は2つのオプションを考えることができます:

  1. これをサポートできる場合は、forbidden.orgのリポジトリのローカルコピーをC:/Forbidden/Subrepoそのような場所に配置し、この絶対パスを.hgsubで使用します。Mercurialこれを推し進めることができ、機能するはずです。

  2. このリポジトリに変更を加えなければ、実際のforbidden.orgURLをサブリポジトリアドレスとして含めても問題はありません。サブリポジトリに変更がない場合、プッシュは成功するはずです。もちろん、これはかなり手動のオプションであり、大規模なチームでは強制することは不可能です。誤ってサブリポジトリに変更を加えた場合は、histeditまたはMQueuesを使用してサブリポジトリを引き出す必要がありますが、これはサブリポジトリでは扱いにくい場合があります。

于 2011-02-24T02:36:57.700 に答える