8

作業中のプロジェクトで Mercurial を評価したいと思います。しかし、私のプロジェクトのほとんどは、svn:externals のようなサポートの存在に大きく依存しています。私は StackOverflow を検索し、Mercurial で対応するサポートをグーグルで検索しました。私が見つけたのは Mercurial 1.3 で追加された subrepo 機能だけですが、この機能のページには次のように書かれていました:

subrepos は Mercurial 1.3 の実験的な機能です。したがって、ミッション クリティカルなリポジトリではこれを行わないでください。

不安定なものは使いたくない。

この機能の実際のステータスと、それを洗練/仕上げる計画、およびいつ「安定」と呼ばれ、ミッションクリティカルなリポジトリの準備が整うかについて、誰かが光を当てることができますか?

4

2 に答える 2

6

#mercurial IRC チャンネルでは、サブリポジトリは引き続き機能し、サポートは拡大するということです。たとえば、現在、「hg status」コマンドはサブレポに対応していません。動作しますが、再帰しないだけですが、将来的にはそうなるでしょう。ただし、現在の動作、ファイル形式 (.hgsub および .hgsubstate) は、下位互換性のある方法でのみ変更されます。

ですから、今はそれを当てにして、良くなっていくのを楽しみにしています。

PS mercurial 1.4.2 の時点で、サブリポジトリを subversion リポジトリにできるようになったため、mercurial の親と svn kid を使用できます。

于 2010-02-06T21:54:07.353 に答える
1

これまでのところ、(軽い)使用でこの機能に幸運がありました。次の 2 つの場所で便利です。

  1. hg pull単一のコマンドで無関係なリポジトリのツリーをバックアップします。
  2. プロジェクトをその依存関係の特定のバージョンと結び付けて、単一のhg cloneビルド可能なソース コードを取得します。svn:externalsこれは、通常の使用法に近いものです。

これまでに見た制限のいくつかを次に示します。

  1. 上記のケース #1 では、すべてのサブリポジトリを一度にコミットする必要があります。Mercurial は (他の DVCS と同様に) 頻繁にコミットすることを推奨しているため、これが煩わしいのはときどきです。
  2. 最も基本的な Mercurial コマンドのみがサブレポ対応です: clonepush/ pullupdate/ commit、およびおそらく他のいくつか。
  3. 拡張機能の作成者は、サブリポジトリを使用して拡張機能をリポジトリに対してテストする時間が必要になります。

Mercurial チームがこの機能を「実験的」と表現するとき、彼らは突然すべてのデータを消去することを決定するという意味ではありません。それらは、名前の競合などのすべてのエッジ ケースをコーディングしていないことを意味します (たとえば、ある開発者が というサブレポを追加しREADME、別の開発者が というテキスト ファイルを追加するREADMEなど)。

于 2010-02-06T21:35:08.217 に答える