2

一部のプロジェクトでは、複数のプログラミング言語(たとえば、C#またはJavaアプリと通信するDelphi GUIアプリケーション)を処理する必要があります。Subversionリポジトリには、現在、言語ごとに1つずつ、合計3つの上位ブランチが含まれています。

これを変更して、次の例のようにプロジェクトのすべての部分をトランクにグループ化して、プロジェクトレベルでの分岐とタグ付けを簡単にする必要がありますか?

project1
  branches
  ...
  tags
  ... 
  trunk
    csharp_app
    delphi_app
    java_app
    ...
project2
...
4

4 に答える 4

9

これらの個別のサブプロジェクトが相互作用するため、それらはロックステップで移動する必要があり、C#/Java/その他のコンポーネントを一緒にタグ付け/ブランチ/リリースする必要があります。それらが無関係である場合、私は(おそらく)別々のリポジトリ、または同じリポジトリ内の別々のディレクトリを提唱します。ただし、ブランチやタグではありません。

ブランチは、同じコードベースで異なる開発ストリームを管理するために使用されます。タグは、プロジェクトの進化における特定のポイントを示すために使用されます。

プログラミング言語は無関係だと思います。リリース可能なものとは何か、そしてこれをどのように管理する必要があるかを自問してください。私は過去にJavaとC++を組み込んだプロジェクトでこれを成功させてきましたが、言語は問題ではありません。管理する必要のあるコンポーネントの同期を維持しています。

言語ごとに新しいトップレベルのディレクトリを作成する必要はありません。Javaコンポーネントが突然JNIレイヤーを必要とした場合はどうなりますか?実装がトップレベルのディレクトリ構造に反映されていることに気づきましたが、それは実際には問題ではありません。

于 2009-12-27T12:19:38.353 に答える
3

単一のプロジェクトを管理している場合、プログラミング言語は関係ありません。単一のモジュールはさまざまなプログラミング言語で記述できますが、それでも分離する価値がないほど緊密に結合されています。アプリケーションの各モジュール(同じ言語で記述されているかどうかに関係なく)が独立しているため、個別のプロジェクトと見なされる(したがって、個別にバージョン管理される)場合は、分離することをお勧めします。それ以外の場合は、それを行わないでください。

于 2009-12-27T11:46:49.077 に答える
1

理論的には、さまざまなコンポーネントが互換性を損なう可能性があり、同期が維持されない場合、最後に機能していた適切な構成に戻るのは難しいため、これは良い考えではないと思います。

于 2009-12-27T11:38:29.237 に答える
1

はい。基準は、アプリが相互に機能の何らかの形式の同期を必要とするかどうか、および通信プロトコル(API、共有コード、共有ライブラリ)が時間の経過とともに変化する可能性があるかどうかです。アプリが互いに関係がない場合は、リポジトリを分離します。リポジトリに複数の言語でアプリを作成することは関係ありません。

于 2009-12-27T12:00:25.333 に答える