1

私のチームは、Mercurial とその分岐機能を試してみようとしています (現在、Subversion を使用していますが、分岐などを備えた完全なバージョン管理システムではなく、主にコード ストレージとして使用されています)。ここに問題があります。私は一連の DLL を開発していますが、各ライブラリの実装は独自のフォルダーにあります。そして、これらのライブラリのインターフェイス ユニットと、他のチーム メイトからの共通ユニットを含む 1 つの場所 ("Common" フォルダー) があります。

次のようになります。

    \ソース  
        \MyLibrary1  
        \MyLibrary2  
        \MyLibrary3  
    \一般  
        MyLibrary1_Intf.h  
        MyLibrary2_Intf.h  
        MyLibrary3_Intf.h  

MyLibrary3 のブランチを作成したい場合はどうすればよいですか? OK、MyLibrary3 のブランチを作成していますが、MyLibrary3_Intf.h はどうですか? \Common にもブランチを作成する必要がありますか? 各プロジェクト (ライブラリ) は独自のリポジトリにあると想定されていることに注意してください。共通ファイルと同様。多くのライブラリがあるため、すべてのソース ツリーに対して 1 つのリポジトリを作成するという考えは好きではありません。質問: このような状況にどのように対処しますか?

4

3 に答える 3

1

おそらく、サブリポジトリを試してみる必要があります。

https://www.mercurial-scm.org/wiki/Subrepository

于 2013-02-19T12:29:12.980 に答える
0

まず第一に、SubversionとMercurialの少なくともいくつかの基本的な違いを知って理解する必要があります(CVCSとDVCSについてではありません)

  • Subversionでは、必要に応じて、サブツリーの任意の部分を分岐できます(実際にほとんどのレイアウトで使用できます)。Mercurialでは、リポジトリ全体を分岐します
  • Subversionでは、svn:externalsはディレクトリまたはディレクトリ内の単一ファイルを参照できます。Mercurial(サブ|ゲスト)では、リポジトリは外部リポジトリ全体のみをリンクできます(ある状態で)-つまり、リンクできません(簡単、トリックはまだ可能です) )MyLibrary1リポジトリMyLibrary1_Intf.hファイルでは、リポジトリのみ(MyLibrary1_Intf.hとは別に、またはすべてのCommonと共有)

あなたの問題について

(if)MyLibrary *とCommonが独立したリポジトリであり、スーパーリポジトリとサブリポジトリとしてリンクされている場合、MyLibrary *での分岐はCommonに影響しません(同じまたは異なるブランチにある可能性のあるサブリポジトリの/changeset/の状態で常にリンクしますsuperrepo /のさまざまなブランチの場合、superrepoの.hgsubstate)、したがって、ライブラリのブランチの変更の要件に応じて*.hファイルを変更する方法は自由に選択できます。

PS:すべての* .hに対して1つの共通リポジトリを使用するという約束されたトリックですが、サブリポジトリに1つの必要なファイルがあります

サブリポジトリ定義では、URL仕様に有効なものを使用できます。これらのいずれかはrepository#cset-id、changeset-idが任意の適用可能なID(およびブランチ名も)である場合があります。したがって、デフォルトのブランチ(すべてのファイルを含む)からMyLibraryごとに個別の名前付きブランチを作成し、特定のライブラリに関係のないこのブランチファイルごとに削除する場合、branch-idでsuprepoを定義すると、superrepoはファイルのみを認識します。 )このブランチで

于 2013-02-21T23:02:04.890 に答える
0

ライブラリを個別に「公開」する必要がない限り、個別のリポジトリを使用できます。それ以外の場合は、1 つのリポジトリを使用して、多くのリポジトリ管理とライブラリ同期の問題を回避することをお勧めします。

1 つのリポジトリを使用すると、実際のブランチを使用して、個々のライブラリのクリーンなリビジョン履歴を実現できます (それが目標である場合)。分岐モデルは次のようになります。

develop    
main branch  ----------o--o---------o---o--
                      /  /|        /   /
lib1 branch  --o--o--o----+-o---------o----
                       /  |      / 
lib2 branch  --o------o---+--o-------------
                          |    /    
lib3 branch  -o----o------+---o------o-----
                          ^
                         sync
于 2013-02-19T16:25:27.467 に答える