3

チュートリアルを何度も読みましたが、まだ何かが足りないと感じています。具体的なシナリオを示してみます。私が間違っている場所を見つけるのを手伝ってください。

誰もが「中央」と見なすリポジトリがあるとします。これは、すべての新しい開発者がそこからクローンを作成し、プル/プッシュすることを意味します。Central には 3 つのフォルダーがあります。

  • Infra (共有コードになりそうなもの)
  • .hg
    • infra.txt
  • dev1
    • dev1.txt
    • .hgsub (行があるところ --> infra = (path of infra) )
    • インフラ (サブレポ)
      • .hg
      • infra.txt
  • dev2
    • dev2.txt
    • .hgsub (dev 1 と同じ - infra = (インフラへのパス) )
    • インフラ (サブレポ)
      • .hg
      • infra.txt

ここで、ある開発者が dev1 のクローンを作成し、別の開発者が dev2 のクローンを作成したとします。私が見ているのは、dev1 の開発者がインフラを変更し、その変更を中央のリポジトリにプッシュする場合、dev2 の開発者がインフラの変更を知る唯一の方法は、インフラで着信変更セットをサブとして手動で検索することです。リポジトリ。一般に、プロジェクトに多くのサブリポジトリ (それ自体にさらにサブリポジトリが含まれている可能性があります) がある場合、サブリポジトリを手動で調べる以外に変更について知る方法がないことを意味します。

それは仕事の仕方ではないと思います... 誰か助けてくれますか?

前もって感謝します、

エヤル

4

2 に答える 2

3

私はもっ​​と良いものを見つけたと思います。リポジトリ内の着信変更セットをチェックするときに、-subreposフラグを使用できます。

これにより、着信する変更セットが再帰的に検索され、変更セットをプルできるサブリポジトリが表示されます。

このようにして、どのサブリポジトリを変更するか、およびそれらのサブリポジトリで最新のファイルを取得するかどうかを制御できます。

于 2011-03-11T13:23:17.960 に答える
1

リポジトリごとにプルする必要があります。これは退屈だと思うかもしれませんが、Mercurialが変更をリポジトリにプルする決定を下す方法はありません。これは良いことです。

実行できるのは、各リポジトリに対して「hgpull」コマンドを実行する単純なバッチスクリプトを作成することです。これにより、少なくともプロセスが自動化されるため、すべてのリポジトリから実際にプルしたいときに面倒な作業が軽減されます。

すべてのサブリポジトリを1つのリポジトリに移動しました。これにより、すべてのライブラリの変更が必要な変更/新機能の管理がはるかに簡単になります。

私はサブリポジトリが好きですが、他の人が管理しているリポジトリ全体を取り込むのに最も適していると思います。多くの変更がある場合、手作業を最小限に抑えるために、多くの規律と一定量のスクリプトが必要です。

于 2011-03-11T11:52:30.880 に答える