Bagaimana cara "menggabungkan" dua file teks?

13

Saya baru saja memutakhirkan dari Ubuntu 12.04 menjadi 12.10 dan pada satu titik, ia mengalami konflik file konfigurasi Apache di apache2.conf. Saya tidak memberi saya opsi penggabungan pada saat itu, jadi saya hanya menolak file baru dan installer menyimpan file baru sebagai apache2.conf.dpkg-dist.

Saya dapat diff kedua file dengan diff apache2.conf apache2.conf.dpkg-distdan hanya mendapatkan garis yang berbeda. Tapi saya ingin menggabungkan kedua jenis seperti bagaimana saya menyelesaikan konflik gabungan di SVN atau git. Bagaimana saya bisa melakukan itu?

Steven
sumber
Tanpa parser yang tepat, Anda hanya dapat menggabungkannya secara manual
daisy

Jawaban:

2

Kontrol versi memiliki lebih banyak informasi yang tersedia ketika menyelesaikan konflik: tidak hanya versi Anda dan versi orang lain tetapi juga leluhur bersama, dan dengan demikian dapat melakukan penggabungan tiga arah . Di sini, leluhur umum adalah versi asli dari file konfigurasi dalam distribusi, atau versi resmi yang terakhir Anda gabungkan dengan perubahan Anda.

Sayangnya, baik Ubuntu maupun distribusi utama lainnya yang saya tahu membuatnya tidak sepenuhnya mulus untuk melakukan penggabungan tiga arah ketika file konfigurasi diperbarui. Anda bisa mendekati, bagaimanapun, dengan penjaga dll . Etckeeper adalah tambahan untuk APT, alat manajemen paket yang digunakan oleh Debian dan turunannya, yang mengelola /etcsistem kontrol versi (Bazaar, Darcs, Git, Mercurial); itu telah porting ke sistem lain, termasuk Yum di Fedora. Saya sarankan menggunakan etckeeper; itu juga cara yang bagus untuk melacak perubahan yang Anda lakukan /etc.

Beberapa program mengelola file konfigurasinya dengan ucf , tetapi itu bukan sesuatu yang Anda kendalikan sebagai pengguna.

Lebih umum, ketika Anda memiliki leluhur dan dua versi, Anda bisa melakukan penggabungan tiga arah dengan mergeutilitas yang dikirimkan dengan RCS atau dengan diff3 -mdari diffutils .

Ada juga banyak program interaktif dan penggabungan yang hebat. Emacs dan Vim memiliki antarmuka untuk itu, seperti halnya sebagian besar pemirsa berbeda .

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1

Favorit pribadi saya adalah kdiff3- Saya tidak tahu, apakah ada versi Ubuntu untuk itu. Menurut homepage itu hanya menggunakan qt .

Dengan alat itu Anda dapat menggabungkan dua (atau tiga) file menjadi yang baru. Baik dengan memilih sisi untuk setiap perbedaan, atau dengan menyelesaikan konflik secara manual.

Nils
sumber
saat ini (15,04) ubuntu memiliki kdiff3dankdiff3-qt
mchid