Контроль версий имеет больше информации, когда он разрешает конфликты: у него есть не только ваша версия и версия другого парня, но и общий предок, и, следовательно, он может выполнять трехстороннее слияние . Здесь общим предком является исходная версия файла конфигурации в дистрибутиве или официальная версия, которую вы в последний раз объединили с вашими изменениями.
К сожалению, ни Ubuntu, ни какой-либо другой крупный дистрибутив, о котором я знаю, не позволяют полностью выполнить трехстороннее слияние при обновлении файла конфигурации. Вы можете подобраться, однако, с etckeeper . Etckeeper - это надстройка для APT, инструмента управления пакетами, используемого Debian и производными программами, который управляет /etc
системой контроля версий (Bazaar, Darcs, Git, Mercurial); он был перенесен на другие системы, включая Yum в Fedora. Я рекомендую использовать etckeeper; это также отличный способ отслеживать изменения, которые вы вносите /etc
.
Некоторые программы управляют своими файлами конфигурации с помощью ucf , но это не то, что вы можете контролировать как пользователь.
В более общем плане , когда у вас есть предка и две версии, вы можете сделать трехстороннее слияние с merge
утилитой поставляется с RCS или diff3 -m
из Diffutils .
Существует также множество интерактивных программ сравнения и слияния. Emacs и Vim имеют интерфейсы для этого, как и большинство diff зрителей .