0

私の開発チームは、TFSでの分岐とマージを実装している最中です。私たちのソフトウェアは1つのソリューションに含まれており、多くのプロジェクトがその中に組み込まれています。それらのプロジェクトの1つには、データベースのバージョン管理を維持するためのすべてのSQLスクリプトが含まれています。

マージ中にデータベースプロジェクトを処理する方法を理解するのに問題があります。たとえば、開発者がデータベースに変更を加える必要がある場合(ストアドプロシージャの追加/削除、テーブルの作成、インデックスの追加など)、スクリプトファイルを作成します。各ファイルにはバージョン番号が付けられます。たとえば、チェックインされた最後のスクリプトファイルの名前が4.1.0.1の場合、新しいスクリプトに4.1.0.2という名前を付けます。これらのファイル名を使用して、ソフトウェアのバージョンを、実行する必要のある対応するデータベースのバージョンと照合します。

新しい機能を実行するために、メインコードブランチからブランチを作成するとします。すべてのコーディングを行い、すべてのSQL変更を1つのスクリプトファイルに入れて、DBプロジェクトに追加します。明らかに、メインのコードブランチから新しいブランチにマージして、SQLスクリプトの最新のリストがあることを確認し、正しく名前を付けることができます。問題は、新しいスクリプトファイルが1日に数回追加されることであり、スクリプトの名前付けとのマージの競合が大量に発生すると思われます。

どういうわけかこれを自動化したいので、開発者はランダムな名前のスクリプトを追加するだけで、マージ中にメインコードベースに新しいファイルと正しい名前を付ける方法を把握するフックまたはイベントがあります開発者がそれについて心配する必要がないようにそれらのファイル。たとえば、「new_script.sql」という名前の新しいファイルを作成するだけで、それをメインのコードブランチにマージすると、4.1.0.2に名前が変更されます。

以前は、RoundHouseなどのツールを使用してすべてのSQLバージョン管理を処理していましたが、現在の仕事ではSybase SQL Anywhere 10を使用しており、Sybaseで動作するRoundHouseに似たものを追跡できませんでした。

TFSマージ中にタスクを自動化する方法について、誰かが私を正しい方向に向けることができますか?これはPowerShellを使用して実行できると思いますが、私の懸念は、開発チームのほとんどがPowerShellに慣れていないことであり、開発者がチームエクスプローラーウィンドウを離れることなくこのタスクを自動化できることを望んでいました。

どんな助けでも大歓迎です!

ありがとう!

4

1 に答える 1

0

この戦略を使い続けてブランチを導入すると、名前の競合が発生することは絶対に正しいと思います。

次の 2 つのオプションがあると思います。

  1. これらのファイルをブランチに追加するときは、ブランチ名のプレフィックスを付けて追加します。例えば。branch_0.1.sql と branch_0.2.sql です。次に、ブランチをトランクにマージするときに、これらの名前を正しい名前に変更する必要があります。これを行うプログラムを作成することができ、かなり簡単です。これを簡単にするために、ブランチごとに 1 つの SQL ファイルのみを作成し、その 1 つの SQL ファイルに追加し続けることができます。その後、マージしても非常に簡単なプロセスです。

  2. 自己バージョン管理されたファイルを捨てます。Tfs はバージョン管理です。ファイルを自分でバージョン管理する必要はあまりありません。データベースのバージョン管理に Visual Studio データベース プロジェクトを使用していますが、これはまったく問題なく機能します。これを変更した場合、展開戦略で何かを変更する必要があると思います。

これが役立つことを願っています。

于 2013-03-13T06:23:33.060 に答える