Jak „scalić” dwa pliki tekstowe?

13

Niedawno zaktualizowałem system z Ubuntu 12.04 do 12.10 iw pewnym momencie napotkał konflikt pliku konfiguracyjnego Apache apache2.conf. W tym momencie nie dałem opcji scalania, więc po prostu odrzuciłem nowy plik i instalator zapisał nowy plik jako apache2.conf.dpkg-dist.

Mogę różnicować oba pliki diff apache2.conf apache2.conf.dpkg-disti uzyskać tylko te linie, które są różne. Chcę jednak ręcznie scalić dwa sposoby rozwiązywania konfliktów scalania w SVN lub git. Jak mogę to zrobić?

Steven
źródło
Bez odpowiedniego parsera można je scalić tylko ręcznie
stokrotka,

Odpowiedzi:

2

Kontrola wersji ma więcej informacji dostępnych przy rozwiązywaniu konfliktów: ma nie tylko twoją wersję i wersję drugiego faceta, ale także wspólnego przodka, a zatem może wykonać łączenie trójstronne . Tutaj wspólnym przodkiem jest oryginalna wersja pliku konfiguracyjnego w dystrybucji lub oficjalna wersja, którą ostatnio scaliłeś ze swoimi zmianami.

Niestety, ani Ubuntu, ani żadna inna znacząca dystrybucja, o której wiem, nie pozwala na całkowicie płynne wykonywanie połączeń trójstronnych po aktualizacji pliku konfiguracyjnego. Możesz się jednak zbliżyć dzięki etckeeper . Etckeeper to dodatek do APT, narzędzia do zarządzania pakietami używanego przez Debiana i pochodne, które zarządza /etcw systemie kontroli wersji (Bazaar, Darcs, Git, Mercurial); został przeniesiony do innych systemów, w tym Yum w Fedorze. Polecam korzystanie z etckeeper; to także świetny sposób na śledzenie wprowadzanych zmian /etc.

Niektóre programy zarządzają plikami konfiguracyjnymi za pomocą ucf , ale nie jest to coś, nad czym masz kontrolę jako użytkownik.

Mówiąc bardziej ogólnie, gdy masz przodka oraz dwie wersje, można zrobić trójdrożny połączyć się z mergenarzędziem dostarczanym z RCS lub diff3 -mz Diffutils .

Istnieje również wiele interaktywnych programów porównywania i łączenia. Emacs i Vim mają do tego interfejsy, podobnie jak większość przeglądarek różnic .

Gilles „SO- przestań być zły”
źródło
1

Moim osobistym faworytem jest kdiff3- nie wiem, czy jest dostępna wersja Ubuntu. Według strony głównej używa tylko qt .

Za pomocą tego narzędzia możesz połączyć dwa (lub trzy) pliki w nowy. Albo wybierając stronę dla każdej różnicy, albo ręcznie rozwiązując konflikt.

Nils
źródło
obecnie (15.04) ubuntu ma zarówno kdiff3ikdiff3-qt
mchid