
私は最近Ubuntu 12.04から12.10にアップグレードしましたが、ある時点でapache2.conf
マージオプションが提供されていないため、新しいファイルを拒否し、インストーラが新しいファイルをapache2.conf.dpkg-dist
.
2つのファイルを比較すると、diff apache2.conf apache2.conf.dpkg-dist
他の行だけを取得できます。しかし、SVNやgitでマージの競合を解決する方法のように、2つを手動でマージしたいと思います。どうすればいいですか?
答え1
答え2
バージョン管理には、競合の解決に使用できる詳細情報があります。自分のバージョンと他のすべての人のバージョンだけでなく、共通の祖先もあるので、次のようなことができます。三方向マージ。ここで共通の祖先は、リリースの構成ファイルの元のバージョン、または最後に変更とマージした公式バージョンです。
残念ながら、Ubuntuまたは私が知っている他の主要なディストリビューションのどれも、設定ファイルが更新されたときに完全にシームレスな3方向マージを実行しません。でも、近づくことができるところはマネージャーをお待ちください。マネージャーを待っていますバージョン管理システム(Bazaar、Darcs、Git、Mercurial)で管理されているDebianおよびその派生製品で使用されるパッケージ管理ツールであるAPTのアドオンコンポーネントであり、/etc
FedoraのYumを含む他のシステムに移植されました。私はetckeeperを使用することをお勧めします。これは変更を追跡する良い方法です/etc
。
一部のプログラムは構成ファイルを管理します。UCFしかし、これはユーザーとして制御できないことです。
より一般的に、祖先と2つのバージョンがある場合は、次のようにすることができます。merge
ユーティリティが付属しています。RCSまたはdiff3 -m
~から拡散剤。
インタラクティブなdiffとmergeプログラムもたくさんあります。 EmacsとVimはどちらもほとんどのソフトウェアと同様に、対応するインターフェースを持っています。差別化された観客。
答え3
私が個人的に好きなのはkdiff3
- Ubuntuのバージョンがあるかどうかわかりません。 ~によるとホームページただ使うqt。
このツールを使用すると、2つ(または3つ)のファイルを新しいファイルにマージできます。それぞれの違いに対して片側を選択するか、競合を手動で解決します。