Як "об'єднати" два текстові файли?


13

Нещодавно я оновив з Ubuntu 12.04 до 12.10, і в один момент він зіткнувся з конфліктом файлів конфігурації Apache в apache2.conf. У той момент я не дав мені можливості злиття, тому я просто відхилив новий файл, і інсталятор зберег новий файл як apache2.conf.dpkg-dist.

Я можу diff apache2.conf apache2.conf.dpkg-distрозрізняти два файли і отримувати лише ті рядки, які відрізняються. Але я хочу вручну об'єднати два типи, як, наприклад, як я вирішую конфлікти злиття у SVN чи git. Як я можу це зробити?


Без належного аналізатора ви можете з’єднати їх лише вручну
ромашка

Відповіді:



2

Контроль версій має більше інформації, коли він вирішує конфлікти: він має не тільки вашу версію та версію іншого хлопця, але й загальний пращур, і, таким чином, він може робити тристоронній злиття . Тут загальним предком є ​​оригінальна версія файлу конфігурації в дистрибутиві або офіційна версія, яку ви востаннє об'єднали зі своїми змінами.

На жаль, ні Ubuntu, ні будь-який інший великий дистрибутив, про який я знаю, не робить абсолютно безпроблемним тристоронні злиття, коли файл конфігурації оновлюється. Однак ви можете наблизитися до etckeeper . Etckeeper - надбудова для APT, інструменту управління пакетами, який використовується Debian та похідних, який управляє /etcв системі управління версіями (Bazaar, Darcs, Git, Mercurial); його переносили на інші системи, включаючи Yum у Fedora. Я рекомендую використовувати etckeeper; це також чудовий спосіб слідкувати за внесеними вами змінами /etc.

Деякі програми управляють своїми файлами конфігурації за допомогою ucf , але це не те, що ви маєте під контролем як користувач.

У більш загальному плані , коли у вас є предка і дві версії, ви можете зробити тристоронню злиття з mergeутилітою поставляється з RCS або diff3 -mз Diffutils .

Існує також велика кількість інтерактивних програм для розлиття та злиття. Emacs і Vim для цього мають інтерфейси, як і більшість глядачів .


1

Мій особистий фаворит kdiff3- я не знаю, чи є для нього Ubuntu-версія. Відповідно до домашньої сторінки, він просто використовує qt .

За допомогою цього інструменту ви можете об'єднати два (або три) файли в новий. Або шляхом вибору сторони для кожної різниці, або шляхом ручного вирішення конфлікту.


В даний час (15.04) ubuntu має і те, kdiff3іkdiff3-qt
mchid
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.