3

Mercurialでバージョン管理されたクローズドソースプロジェクトを開発しています。プロジェクトでは2つのライブラリを使用しています。

  • それらのライブラリの1つは、サードパーティによって開発されています。彼らはgitを使用しており、通常は週に1回、リポジトリからプルして最新の変更を取得します。

  • もう1つのライブラリは、独自に開発中であり、活発に開発されています。LGPLの下でライセンスされているため、独自のパブリックMercurialリポジトリに存在する必要があります。(これは、サードパーティのLGPLコンポーネントのフォークであり、当社のプラットフォームに移植されています)

だから私の質問は次のとおりです。次のことを確実にするために、ソースをどのように整理する必要がありますか。

  1. 私たちのチームの開発者は、1つの「クローン」コマンドですべてのソース(メインプロジェクト+ライブラリ)を取得できるはずです。

  2. ライブラリの1つがgitによって管理されている場合でも、ライブラリから最新の変更を簡単に取得できるはずです。

gitの下のライブラリにアクセスするためにhg-gitを使用して、Mercurialサブリポジトリ機能を使用する必要がありますか?TortoiseHgとBitBucketで十分にサポートされていますか?(長所:ライブラリの変更を簡単に取得/短所:うまく機能しますか?)

または、プロジェクトの下にあるライブラリのスナップショットのみを保持する必要がありますか?(したがって、ライブラリに新しいアップストリームの変更がある場合は、それらを別の場所にプルしてから、ソース全体をプロジェクトにコピーしますか?(長所:機能します/短所:お尻の痛み、特にライブラリの場合自分たちで開発しているので、日々変化します)

4

1 に答える 1

1

ええ、hg-gitでサブリポジトリを使用してください。簡単で、十分にサポートされ、効果的です。ファイル.hgsubstateにはサブリポジトリのスナップショットへのポインターが含まれ、そのファイルは制御されているため、いつでも、ライブラリXのどのバージョンに対してこれが機能していたかという質問に答えることができます。それは良いことです。

または、言語に応じてivyやmavenなどの依存関係マネージャーを使用できますが、回避できる場合は、それらのライブラリをリポジトリに含めないでください。コードのバージョンへのポインターの方が優れており、依存関係マネージャーまたはサブリポジトリが最もクリーンな方法です。

于 2010-06-13T19:08:55.640 に答える