2つのテキストファイルを「マージ」するにはどうすればよいですか?


13

私は最近Ubuntu 12.04から12.10にアップグレードしましたが、ある時点で、Apache構成ファイルの競合が発生しましたapache2.conf。その時点でマージオプションを指定しなかったため、新しいファイルを拒否し、インストーラーは新しいファイルをとして保存しましたapache2.conf.dpkg-dist

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


適切なパーサーがなければ、手動でしかマージできません
デイジー

回答:



2

バージョン管理では、競合を解決する際により多くの情報を利用できます。バージョンと相手のバージョンだけでなく、共通の祖先もあるため、3者間マージを実行できます。ここで、共通の祖先は、ディストリビューションの構成ファイルの元のバージョン、または最後に変更とマージした公式バージョンです。

残念ながら、Ubuntuも私が知っている他の主要なディストリビューションも、構成ファイルの更新時に3者間マージを完全にシームレスにすることはありません。ただし、etckeeperを使用して親しくすることができます。Etckeeperは、/etcバージョン管理システム(Bazaar、Darcs、Git、Mercurial)で管理するDebianおよび派生物で使用されるパッケージ管理ツールであるAPTのアドオンです。FedoraのYumを含む他のシステムに移植されています。etckeeperの使用をお勧めします。で行った変更を追跡する優れた方法でもあります/etc

一部のプログラムはucfを使用して構成ファイルを管理しますが、ユーザーとして制御できるものではありません。

より一般的には、祖先と2つのバージョンがある場合、3方向のマージを行うことができます。 mergeに同梱のユーティリティRCSたりとdiff3 -mからdiffutils

また、非常に多くのインタラクティブなdiffおよびmergeプログラムがあります。EmacsとVimには、ほとんどの場合と同様に、そのためのインターフェイスがあります diffビューア


1

私の個人的なお気に入りはkdiff3-Ubuntuバージョンがあるかどうかはわかりません。ホームページによるとに単にqtを使用します。

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


現在(15.04)ubuntuの両方kdiff3kdiff3-qt
mchid
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.