İki metin dosyasını nasıl “birleştiririm”?


13

Son zamanlarda Ubuntu 12.04'ten 12.10'a yükseltme yaptım ve bir noktada, bir Apache yapılandırma dosyası çakışmasıyla karşılaştı apache2.conf. Bu noktada bana birleştirme seçeneği vermedim, bu yüzden yeni dosyayı reddettim ve yükleyici yeni dosyayı olarak kaydetti apache2.conf.dpkg-dist.

İki dosyayı diff apache2.conf apache2.conf.dpkg-distfarklı ve sadece farklı satırları alabilirsiniz. Ancak, SVN veya git'deki birleştirme çakışmalarını nasıl çözdüğüm gibi iki tür birleştirmek istiyorum. Bunu nasıl yapabilirim?


Düzgün bir ayrıştırıcı olmadan, bunları yalnızca manuel olarak birleştirebilirsiniz
daisy

Yanıtlar:



2

Sürüm kontrolü, çakışmaları çözdüğünde daha fazla bilgiye sahiptir: sadece sürümünüz ve diğer adamın sürümü değil, aynı zamanda ortak atası da vardır ve böylece üç yönlü birleştirme yapabilir . Burada ortak ata, dağıtımdaki yapılandırma dosyasının orijinal sürümü veya değişikliklerinizle en son birleştirdiğiniz resmi sürümdür.

Ne yazık ki ne Ubuntu ne de bildiğim diğer büyük dağıtımlar, bir yapılandırma dosyası güncellendiğinde üç yönlü birleştirme işlemini tamamen sorunsuz hale getirmiyor. Ancak etckeeper ile yakınlaşabilirsiniz . Etckeeper , Debian ve türevleri tarafından kullanılan ve /etcbir sürüm kontrol sisteminde (Bazaar, Darcs, Git, Mercurial) yönetilen paket yönetim aracı APT için bir eklentidir ; Fedora'daki Yum da dahil olmak üzere diğer sistemlere taşındı. Etckeeper kullanmanızı öneririm; ayrıca yaptığınız değişiklikleri takip etmenin harika bir yoludur /etc.

Bazı programlar yapılandırma dosyalarını ucf ile yönetir , ancak bu kullanıcı olarak kontrol ettiğiniz bir şey değildir.

Daha genel olarak, atalarınız ve iki sürümünüz olduğunda, RCS ile birlikte gelen mergeyardımcı programla veya diffutillerden üç yönlü birleştirme yapabilirsiniz .diff3 -m

Ayrıca çok sayıda etkileşimli fark ve birleştirme programı vardır. Emacs ve Vim'in çoğu farklı görüntüleyicide olduğu gibi arayüzleri vardır .


1

Benim kişisel favorim kdiff3- bunun için bir Ubuntu sürümü olup olmadığını bilmiyorum. Ana sayfaya göre sadece qt kullanır .

Bu araçla iki (veya üç) dosyayı yenisiyle birleştirebilirsiniz. Her fark için bir taraf seçerek veya çatışmayı manuel olarak çözerek.


şu anda (15.04) ubuntu hem vardır kdiff3vekdiff3-qt
mchid
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.