2つのテキストファイルを「マージ」する方法は?

2つのテキストファイルを「マージ」する方法は?

私は最近Ubuntu 12.04から12.10にアップグレードしましたが、ある時点でapache2.confマージオプションが提供されていないため、新しいファイルを拒否し、インストーラが新しいファイルをapache2.conf.dpkg-dist.

2つのファイルを比較すると、diff apache2.conf apache2.conf.dpkg-dist他の行だけを取得できます。しかし、SVNやgitでマージの競合を解決する方法のように、2つを手動でマージしたいと思います。どうすればいいですか?

答え1

使用vimdiffあなたが好きならvim。そうでなければ、diffuse効果もとても良いです。

答え2

バージョン管理には、競合の解決に使用できる詳細情報があります。自分のバージョンと他のすべての人のバージョンだけでなく、共通の祖先もあるので、次のようなことができます。三方向マージ。ここで共通の祖先は、リリースの構成ファイルの元のバージョン、または最後に変更とマージした公式バージョンです。

残念ながら、Ubuntuまたは私が知っている他の主要なディストリビューションのどれも、設定ファイルが更新されたときに完全にシームレスな3方向マージを実行しません。でも、近づくことができるところはマネージャーをお待ちくださいマネージャーを待っていますバージョン管理システム(Bazaar、Darcs、Git、Mercurial)で管理されているDebianおよびその派生製品で使用されるパッケージ管理ツールであるAPTのアドオンコンポーネントであり、/etcFedoraのYumを含む他のシステムに移植されました。私はetckeeperを使用することをお勧めします。これは変更を追跡する良い方法です/etc

一部のプログラムは構成ファイルを管理します。UCFしかし、これはユーザーとして制御できないことです。

より一般的に、祖先と2つのバージョンがある場合は、次のようにすることができます。mergeユーティリティが付属しています。RCSまたはdiff3 -m~から拡散剤

インタラクティブなdiffとmergeプログラムもたくさんあります。 EmacsとVimはどちらもほとんどのソフトウェアと同様に、対応するインターフェースを持っています。差別化された観客

答え3

私が個人的に好きなのはkdiff3- Ubuntuのバージョンがあるかどうかわかりません。 ~によるとホームページただ使うqt

このツールを使用すると、2つ(または3つ)のファイルを新しいファイルにマージできます。それぞれの違いに対して片側を選択するか、競合を手動で解決します。

関連情報