1

私と友人のためにTeam Foundation Serviceをセットアップしています。これを使用して、いくつかの趣味のプロジェクトを作成します。

単一のチーム プロジェクトでセットアップしました。現在、ソース管理は次のように構成されています。

$\Projects\CommonLib

$\Projects\Project1

$\Projects\Project2

Project1 はゲーム、Project2 は win8 アプリ、commonlib は共通の再利用可能なコードで、Projec1 と Project2 の両方で参照されます。各プロジェクトは、複数のプロジェクトを含むソリューションで構成されます。

CommonLib を 2 つのプロジェクトに配布する必要があります。私の最初のアイデアは、CommonLib バイナリをソース管理フォルダーにチェックインし、それを他の 2 つのプロジェクトに分岐させ、何らかのカスタム チーム ビルド プロセスを使用して展開することでした。

しかし、問題があります。このように作業するのはかなり面倒です。特に開発の初期段階ではなおさらです。CommonLib にコードを迅速に追加できるようにしたいと考えています。コードベースが成熟し、頻繁に変更されない場合、上記のプロセスは問題ありませんが、何かが追加されるたびにこれらすべての手順を実行するのは面倒です。そこに (ビルド -> デプロイ -> マージ)。

反対に、CommonLib プロジェクトを含む Project1 などの開発ソリューションを作成することもできます。ただし、これは、誤って重大な変更を行った場合、Project2 に問題が発生する可能性があることを意味します。これは、上記のブランチ+マージ戦略でより適切に管理できます

私の質問は、開発プロセスの複雑さを最小限に抑えながら、制御を維持できるオプションが欠落していないかということです。これはよくある問題だと思います。

4

2 に答える 2

1

バイナリを製品のスペースにマージしなかった場合、役に立ちますか?

$\Projects\CommonLib\1.0\Source
$\Projects\CommonLib\1.0\Bin
$\Projects\CommonLib\Dev\Source
$\Projects\CommonLib\Dev\Bin

$\Projects\Project1

$\Projects\Project2

ビルドを共通に設定し、バイナリをBinフォルダーにチェックインしてから、Project1とProject2がそれらを共通に参照するようにします。ご覧のとおり、私は1.0 Branch of Dev in Commonも配置しました。これにより、Project1またはProject2がリリースの準備ができたときに、common devをバージョン管理されたフォルダーに分岐し、他のプロジェクトの変更からcommonに切り離すことができます。

于 2012-08-10T00:17:41.530 に答える
0

各開発者がプロ​​ジェクトの 1 つだけに関心がある場合でも、同じビルド ソリューションに両方のプロジェクトを含めることができない理由はありますか?

両方のプロジェクトが 1 つのソリューションにあり、共通プロジェクトが同じソリューションにある場合、いずれかが共通モジュールに変更を加えるたびに、すべてが一緒に構築されるため、依存プロジェクトのいずれかで何かが壊れているかどうかがすぐにわかります。次に、共通モジュールへの変更によって壊れた依存コードを更新するか、プロジェクト所有者と調整してそのコードを更新することができます。プロジェクトが成熟するにつれて、共通モジュールへの変更が少なくなることが予想されます。

すべてがクリーンにビルドされ、単体テストに合格するまで、重大な変更をチェックインしないでください。共通モジュールに重大な変更を加える場合は、依存するすべてのコードを修正する責任があります。これにより、キャラクターが構築され、公開されたインターフェイスやセマンティックを壊すことなくコアの変更を行うスキルに対する新たな評価が得られます。;>

明らかに、この「すべてを含める」アプローチは、大規模な開発チームや多数のプロジェクトには対応していません。ただし、大規模なチームで作業している場合は、自動化されたビルド/共有ビルド サーバー ワークフローに切り替える必要があります。依存プロジェクトは、依存する中間体のビルドを決定し、モジュールの新しいリリースにいつ「ロールアップ」するかを決定できます。依存 - 依存モジュールのリリースサイクルとは無関係。共通コードを使用する 2 つの開発者と 2 つのプロジェクトの場合、このレベルの依存関係管理は必要ありません。

于 2012-08-10T00:38:45.453 に答える