競合の種類
Diversion で作業していると、ワークフローを妨げるさまざまな種類の競合に遭遇することがあります。 これらの競合と解決方法を理解することは、スムーズな開発プロセスを維持するために重要です。マージ競合
これらの競合は主に、異なるブランチからの変更が同じファイルに影響を与えるブランチマージ時に発生します。 ただし、次のようなシナリオでは、ワークスペース内でもマージ競合が発生する可能性があります:- Auto-Update を有効にしていて、他のチームメンバーが同じブランチにコミットした場合。
- ワークスペースでブランチを切り替え、ワークスペースにコミットされていない変更が含まれていた、 またはターゲットブランチで変更をアンシェルブすることを選択した場合。
- 別のコミットをワークスペースにチェリーピックした場合。
同期競合
Diversion では、作業中のワークスペースはローカルとリモートの両方に保存されます。 通常、ファイルの更新はローカルワークスペースからリモートへ同期されますが、リモート ワークスペースがより新しい変更を持っており、それをローカルコピーに同期する必要がある場合もあります。 たとえば、ワークスペースで Auto-Update が有効(デフォルト)で、他のチームメンバーが同じブランチに コミットした場合に発生することがあります。もう1つの例は、別のブランチからの変更を現在のブランチにマージした場合です。 同期競合は、ローカルの変更がワークスペースのリモートミラーに同期される機会がないうちに、 リモート側でローカルで編集したのと同じファイルを変更する新しいコミットを受け取った場合に発生します。 ワークスペースの同期を一時停止していたり、しばらくオフラインだったりすると、同期競合に遭遇する可能性が高まります。 一方、ブランチで単独作業したり、Auto-Update を無効にすると、同期競合の可能性は減少します。 同期競合が発生すると、Diversion は自動的にローカル編集したファイルの.dv-conflict サフィックス付きの
バックアップを作成し、元のパスを受信した内容で上書きします。これにより、作業内容が失われないようにします。
.dv-conflict ファイル
これらのファイルは競合を示すためだけに作成され、リポジトリにコミットすることを意図していません。
そのため、Diversion によって追跡されず、コミットすることはできません。
ローカル競合がある場合、Diversion デスクトップアプリのワークスペースに警告が表示されます:
上記の例では、ファイル syncing.mdx(受信した変更を含む)が、バックアップファイル
syncing.dv-conflict.mdx(同期されていないユーザーのローカル変更を含む)と競合しています。
.dv-conflict ファイルの内容はアプリで表示可能ですが、履歴はありません。
.dv-conflict ファイルは安全に無視でき、競合の元となったファイルを含む他のファイルは通常どおり
作業とコミットを続けることができます。ただし、差分がマージしにくくなる前に、
できるだけ早く競合を解決することをお勧めします。
.dv-conflict ファイルは自動的に削除されないため、競合を解決したら自分で削除してください。
Diversion デスクトップアプリで1つずつ削除するか、ファイルエクスプローラーから一括で削除できます。
コンテキストメニューの Show in Explorer/Finder を使用すると、ファイルの場所をすばやく確認して削除できます。
同期競合の解決
Unreal Engine のリソース(uasset など)の場合、バックアップされたファイルのリダイレクタが壊れているため
(名前が変わっているため)、両方のバージョンをエディター内で開くことができません。
次の手順を実行してください:
- 元のファイルに変更がないことを確認します(ある場合は、競合を扱う前にコミットするかリセットしてください)。
- 元のファイルを
.dv-conflictバージョンで上書きします。 - ファイルを上書きした後、エディターで開いて2つのバージョンの違いを確認できます。
- 違いを解決したら、変更をコミットするか、必要でなければリセットできます。
.dv-conflictファイル(上書き時にコピーを残した場合)を削除してワークスペースを整理します。
- お好みのローカル差分ツール(Meld、WinMerge、VSCode など)を使用してバージョンを比較するか、ファイルを並べて開きます。
- 元のファイルパスに編集を適用し、準備ができたらコミットします。
.dv-conflictファイルを削除してワークスペースを整理します。
.dv-conflict ファイルをクリーンアップしないと、ワークスペースに残り、file.dv-conflict.txt、file.dv-conflict-1.txt、file.dv-conflict-2.txt などのように、いくつもの競合バックアップが蓄積される可能性があります。
