私はファイルの 3 つのバージョンを持っています。オリジナル、私の変更、および他の人の変更です。3 方向マージを実行して、両方の変更セットを組み込んだバージョンを作成したいと考えています (または、これが不可能な場合は失敗します)。svn や git などのリビジョン管理システムについて質問しているわけではないことに注意してください。3 つのファイルを入力として取り、マージを標準出力に書き込む最小限のコマンドライン ツールを作成したいと考えています。
1 つの方法は次のとおりです。Unix の diff ツールと patch ツールを使用します。3 つのファイルの名前が orig、my、other であると仮定します。
% diff -u orig my | パッチ -o - その他
またはその逆を行うと、
% 差分 -u 元の他の | パッチ -o - 私
しかし、差分とマージを行うには 2 つの方法があるという事実は、コードの匂いのようなものです。確かに、3 つのファイルすべてを入力として受け取るマージ ツールの方が、より適切に機能する可能性があります。
明らかに、空の svn リポジトリを初期化し、orig をチェックインし、別のブランチで my と other をチェックインしてから、マージを実行できます。または、別のバージョン管理システムでの同等の操作。しかし、それは重くて扱いにくいようで、すぐに破棄されるリポジトリを作成します。
コマンド ラインからスタンドアロンで実行できる適切な 3 方向マージ ツールはありますか?