展開スクリプトを変更してliquibaseを使用しますが、別の意見を持ちたい、またはその適切な解決策を知りたいという問題が発生し始めています。
私たちは Oracle を使用しており、パッケージ、関数、プロシージャ、トリガーなど、多くのレガシー コードがあります (ご覧のとおり、データベースには多くのロジックがあります)。
次の構造を使用しています。
.
..
packages
functions
triggers
baseline
S1301
S1302
S1312
xxx-changelog.xml
xx-changelog.xmlは次のようになります。
<include file="baseline/xxx-baseline-changelog.xml" relativeToChangelogFile="true" />
<!- Sprint change logs -->
<include file="S1304/xxx-s1304-changelog.xml" relativeToChangelogFile="true" />
<include file="S1308/xxx-s1308-changelog.xml" relativeToChangelogFile="true"/>
<include file="S1309/xxx-s1309-changelog.xml" relativeToChangelogFile="true"/>
<include file="S1310/xxx-s1310-changelog.xml" relativeToChangelogFile="true"/>
<include file="S1311/xxx-s1311-changelog.xml" relativeToChangelogFile="true"/>
毎回新しいフォルダーにファイルをコピーしたくないので、同じファイルを指しています。内容を変更しているので、 runOnChangeプロパティを設定する必要があります。これを行わないと失敗するからです。 .
問題は、私たちはアジャイルで作業しており、3 週間ごとに新しいコードを提供することです。1 つのスプリントで 1 つのパッケージを変更する必要があり、次のスプリントで同じパッケージを変更する必要がある場合があります。
私の状況は次のとおりです。
1) スプリントごとに新しい changeSet を追加し、たとえば runOnchange を使用して、packages フォルダー内のファイルを指すようにすると、内容が異なり、runOnchange であるため、これらのファイルを指すすべての changeSet が実行されます (私が欲しい)。しかし、スプリントの変化を知り、これを追跡する唯一の方法です。
xxx-s1311-changelog.xml
<changeSet id="XXX_SEND_TO_PP_PCK_S1311" author="e-ballo" runOnChange="true">
<sqlFile path="../packages/XXX_SEND_TO_PP_PCK.pkb" splitStatements="false" relativeToChangelogFile="true"/>
</changeSet>
xxx-s1312-changelog.xml
<changeSet id="XXX_SEND_TO_PP_PCK_S1312" author="e-ballo" runOnChange="true">
<sqlFile path="../packages/XXX_SEND_TO_PP_PCK.pkb" splitStatements="false" relativeToChangelogFile="true"/>
</changeSet>
2) パッケージ専用のファイル ( packages-changelog.xml ) を作成し、プロパティ runOnChange を使用してパッケージの changeSet を追加すると、ファイルが変更されるたびに実行されますが、いつ変更されるかを知ることができません。私たちはそれを変更します。
おそらく最善の解決策は、スプリントのフォルダーにファイル (パッケージ) をコピーすることですが、ファイルの履歴を SVN に保持し、変更ログでスプリントの新しい変更を明確に把握したいと考えています。 .
私の質問:
liquibase でハッシュマップを無効にする方法があるかどうか知っていますか? その後、すべてのスプリントに追加してトラックを持つことができます..そして、IDがすでにデータベースにある場合、再度実行するべきではありませんか?
前もって感謝します、