CVS と Subversion はどちらも便利なマージ機能を備えているため、変更したソース ファイルを更新すると、他のユーザーが同じファイルに対して行った変更がマージされます。
ただし、自分の変更と他の変更に互換性がない場合 (通常、コードの同じ部分を両方とも変更した場合)、競合が発生します。ソース コードの両方のストレッチがマージされたファイルに含まれるため、保持する変更を手動で分類する必要があります。これまでのところすべて順調です。
私の問題は、私たちの何人かが異なる開発環境 (Netbeans と vi を知っておく必要があります) を使用しており、Netbeans にはコードを再インデントする自動インデント機能があることです。したがって、変更をマージすると、ほとんどがインデントの単純な変更によって引き起こされ、コードへの真の変更ではない大きな競合が発生することがあります。多くの場合、これらは手動で解決しなければならない数百行の明白な競合を作成しますが、通常、実際の変更は数行にまで及びます。誰かの編集者が unix を Windows の改行に、またはその逆に変更した場合にも、同様の状況が発生します。
では、2 つのバージョンを比較するときに、これらの「競合」を無視するようにマージを設定できますか? Diff には --ignore-space-change または -b オプションがあり、基本的に同じ機能を cvs または svn で利用できるようにしたいと考えています。私たちはそれぞれのツールをさまざまなプロジェクトで使用しているため、どちらかまたは両方について回答をいただければ幸いです。
最後に 2 つの注意事項:
- 明らかに、マージ プロセスでは、マージされたファイルで使用する空白のバージョンを任意に選択する必要があります。後でいつでも再フォーマットできます。
- より規律を守り、より頻繁にチェックインすることで、これの一部を回避できました-認められ、理解されました. しかし、私は完璧ではありません。