2

SVN には、休止状態などを使用するすべてのデータベース ロジックを含むプロジェクトがあります。ただし、そのプロジェクトは、コードと一致する特定の状態にあるデータベース スキーマに依存します。

同様に、サーバー用の構成スクリプトも Config ディレクトリで実行されます。

これを克服するためにSVNでプロジェクト構造を適切に設定するにはどうすればよいですか?

構造は次のようになります。

--DBHibernateProject
------trunk
------branches
------tags
--DatabaseScriptsProject
------trunk
------branches
------tags
--ConfigProject
------trunk
------branches
------tags

しかし、データベース スクリプト プロジェクトを DBHibernateProject のリリース 1.0 に関連付けるにはどうすればよいでしょうか。hibernate プロジェクトには、maven リポジトリにデプロイ可能なアセット (jar) がありますが、db スクリプトにはありません。正しい db スクリプトがアプリケーションの正しいリリースに関連付けられていることを確認したいと考えています。

4

5 に答える 5

2

「プロジェクトが ... に依存する」とは、「DBHibernateProject のすべてのリビジョンに対して、DatabaseScriptsProject および ConfigProject の定義済みおよび固定リビジョンを使用する必要がある (DBHibernateProject ツリー内で使用/参照されている)」ことを意味する場合、常に純粋な Subversion 側を使用できます。解決策: PEG-revisions を使用した外観

ソースツリー構造についての知識がなければ、これ以上言うことはできません: 「依存している」と「構成スクリプトも持っている」は、(私の貧弱な再構築) のように、正式な依存関係に (簡単に) 変換できません。

DBHibernateProject の各リビジョンには、関連する DatabaseScriptsProject (このコードの正しいスキーマ用) と ConfigProject (DBHibernateProject で使用されるデータベース スキーマを生成するスクリプト用) が必要です。

私の再構築が正しい場合、Subversion スタイルで (Maven を使用しない場合、私のミスである可能性があります)、DBHibernateProject ツリーに 2 つのディレクトリ タイプの外部オブジェクトを作成します。これらは、それぞれ DatabaseScriptsProject ツリーと ConfigProject ツリーの「ある状態のツリー」を参照します。

于 2013-01-24T05:37:27.077 に答える
1

プロセスを介して行うか、1 つの SVN プロジェクトを作成します。

データベース関連のセットを完成させたら、それが動作するコードのタグと同じタグをタグ付けするというチームのルールを作ることができます。これは面倒かもしれませんが、変更が通常データベースとコードの間で同期している場合は実行可能です。

もう 1 つの方法は、SVN で単一のプロジェクトを作成し、1 つのトランクと 1 つのタグとブランチのセットを作成することです。次に、コード、スクリプト、および休止状態のものを保持するリポジトリの最上位にいくつかのフォルダーを配置することで、同じことを実現します。SVN リポジトリのアクセス許可を管理して、さまざまな人が特定のフォルダーへの書き込みアクセス許可を持つようにすることは可能ですが、分岐するたびにアクセス許可を変更し続けるためのコストが発生します (タグの変更を愚かに許可した場合はタグ付けする可能性があります)。

于 2013-01-23T21:08:55.403 に答える
0

次のようなデータベース プロジェクトの単一のプロジェクト レイアウトを作成できませんでした:

----DatabaseProject
-------trunk
--------DBHibernateProject
--------DatabaseScriptsProject
-------branches
-------tags

----OtherProject
-------trunk
-------branches
-------tags

----ConfigProject
-------trunk
-------branches
-------tags

構成プロジェクトが他のプロジェクトに関連付けられておらず、サーバー用のスクリプトのみである場合は、OtherProject と同じレイアウトにすることができると思います。

于 2013-01-25T15:12:44.463 に答える
0

データベースの移行を管理するには、 liquibaseを使用することを強くお勧めします。変更ファイルはクラスパスから読み取られます。つまり、一致する Hibernate クラス ファイルと一緒に同じ jar にデプロイできます。

私はそれを使ったことはありませんが、liquibase は休止状態をサポートしており、役立つかもしれません。

Maven の例については、以下を参照してください。

より理論的な読み物については、次をお勧めします。

公平を期すために、同じ機能空間に他のいくつかのツールがあります。

于 2013-01-23T23:54:10.537 に答える