問題: コミットが遅いシーケンシャル データベース移行スクリプトを処理する方法 / gerrit。
セットアップは次のとおりです。
- データベース テーブルの継続的な開発は、連続した名前 (12.sql、13.sql、14.sql など) のファイルを追加することによって行われます。
- データベースにバージョン番号が設定されている
- 移行ツールはファイルに対してバージョンをチェックし、未処理のデータベース移行があるかどうかを確認します
このアプローチの主な問題 (それ以外の場合はうまく機能します) は、2 人の開発者が同時に移行スクリプトを追加すると、最後にコミットした開発者がマージの競合を起こすことです。Subversion (これまで使用してきました) では、これはツリーの競合であり、コミッターは最後のアクションとしてそのファイルを元に戻し、新しいファイル名で追加することで処理しました。私たちはトランクでこのような作業を行っていたので、彼らは通常、最後の迅速なアクションとしてファイル名を修正することができました.
git に移行しているため、代わりに競合がファイル内の差分として表示されるため、コミットされた 2 つのファイル (他のファイルと一緒に異なるコミット パッケージの一部である可能性があります) を分離するのが難しくなります。さらに、コード レビューに gerrit を使用しているため、ファイルをメインの git リポジトリにプッシュしてから取得するまでに遅延が発生し、時々このシナリオが発生します。
- 移行をプッシュする
- コード レビュー後に Gerrit が競合する
- ファイルの名前を変更して競合を修正し、新しいコミットをプッシュします (これは再度確認する必要があります)。
- これがコードレビューされる前に、誰かがなんとか新しい移行を取得したため、Gerrit は再び競合します。
- ファイルの名前を変更して競合を修正し、新しいコミットをプッシュします (これは再度確認する必要があります)。
- 運が良く、Gerrit が移行を正常に送信できるまで、4 から繰り返します。
この状況を解決する最善の方法は何ですか?