4

Mercurial リポジトリの下にいくつかのサードパーティのサブリポジトリをセットアップ中です。1 つのサブリポジトリは、Bitbucket でホストされている別の Mercurial リポジトリです。

これはパブリック リポジトリであり、私はその貢献者ではないため、プッシュバックしたくありません。ただし、親リポジトリを複製するときに、リポジトリを自動的に複製したいと考えています。1 つには、サブリポジトリの集合的な履歴にアクセスして、時間の経過とともに何が変更され、何が変更されていないかを確認できるようにしたいと考えています。

そこで、親リポジトリの.hgsubファイルに次のようにエントリを作成しました。

thesubrepo = https://bitbucket.org/user/repo

を使用してレポを複製しました

$ hg clone https://bitbucket.org/user/repo thesubrepo

サブレポの状態を記録するコミットを行いました。次に、親レポをサーバー (Kiln) にプッシュして戻そうとしましたが、サブレポを Bitbucket サーバーにプッシュしようとしていたことがわかりました。ただし、Bitbucket サブリポジトリへのプッシュは何もしていないように見えます。

.hgsubこのようなエントリを使用して、同じ方法で (Git ハブでホストされている) Git サブレポを作成したとき、この動作は観察されませんでした

abc = [git]git://github.com/xyz/abc

サブリポジトリを設定せずに、Mercurial にファイルをファイルとして保存させるだけでこれを行うのが最善でしょうか? または(できれば)このサブレポのコンテンツを実際にソースの場所にプッシュしないようにMercurialに指示するために使用できる設定がどこかにありますか?

これらのサブレポを手動でのみプッシュするように構成できるようにしたいので、誰かがこれに光を当てることができれば幸いです。

別のスタックオーバーフローの回答で参照を見つけましたcommitsubrepos = no。これは、サブリポジトリのプッシュではなく、コミットに関するものです。次に、サブレポのプッシュに関する設定への参照があるかもしれないことを期待して、Mercurial Web サイトでこれを調べましたが、...いいえ

4

1 に答える 1

4

(現在、バージョン2.0の時点で)Mercurialにサブリポジトリをプッシュしないように要求することはできません。

基本的な問題は、プッシュするときにMercurialがリモートリポジトリで一貫した状態を維持する必要があることです。Kilnにプッシュバックして、そこにないBitbucketのリビジョンを参照するチェンジセットをそこに置くことができれば安全ではありませんMercurialは、ローカルにあるチェンジセットが公開されているのか、それとも作成したのかを認識していません。そのため、プッシュする必要があります。

現在、フェーズと呼ばれる概念に取り組んでいます。これにより、Mercurialは、チェンジセットがローカルで作成されたか、すでに公開されているかを追跡し始めます。これはサブリポジトリにも使用できます。サブリポジトリの「公開」フェーズにチェンジセットしかない場合は、プッシュを試す必要はありません。

于 2012-01-20T09:49:20.020 に答える