J'ai récemment mis à niveau Ubuntu 12.04 vers 12.10 et à un moment donné, il a rencontré un conflit de fichier de configuration Apache dans apache2.conf
. Je n'ai pas donné d'option de fusion à ce stade, j'ai donc simplement rejeté le nouveau fichier et le programme d'installation a enregistré le nouveau fichier sous apache2.conf.dpkg-dist
.
Je peux différencier les deux fichiers avec diff apache2.conf apache2.conf.dpkg-dist
et obtenir uniquement les lignes qui sont différentes. Mais je veux fusionner manuellement les deux sortes de la façon dont je résous les conflits de fusion dans SVN ou git. Comment puis je faire ça?
Réponses:
Utilisez
vimdiff
si vous le souhaitezvim
. Sinon, çadiffuse
marche aussi très bien.la source
Le contrôle de version a plus d'informations disponibles lorsqu'il résout les conflits: il a non seulement votre version et la version de l'autre, mais aussi l'ancêtre commun, et il peut donc effectuer une fusion à trois . Ici, l'ancêtre commun est la version d'origine du fichier de configuration dans la distribution, ou la version officielle que vous avez fusionnée pour la dernière fois avec vos modifications.
Malheureusement, ni Ubuntu ni aucune autre distribution majeure que je connais ne rend complètement transparente la fusion à trois quand un fichier de configuration est mis à jour. Vous pouvez cependant vous rapprocher avec etckeeper . Etckeeper est un module complémentaire pour APT, l'outil de gestion de paquets utilisé par Debian et ses dérivés, qui gère
/etc
dans un système de contrôle de version (Bazaar, Darcs, Git, Mercurial); il a été porté sur d'autres systèmes, y compris Yum dans Fedora. Je recommande d'utiliser etckeeper; c'est aussi un excellent moyen de suivre les modifications que vous apportez/etc
.Certains programmes gèrent leurs fichiers de configuration avec ucf , mais ce n'est pas quelque chose que vous contrôlez en tant qu'utilisateur.
De manière plus générale, lorsque vous avez l'ancêtre et deux versions, vous pouvez faire une fusion à trois avec l'
merge
utilitaire fourni avec RCS oudiff3 -m
de diffutils .Il existe également un grand nombre de programmes de diff et de fusion interactifs. Emacs et Vim ont des interfaces pour cela, comme la plupart des téléspectateurs diff .
la source
Mon préféré est
kdiff3
- je ne sais pas, s'il existe une version Ubuntu pour cela. Selon la page d'accueil, il utilise simplement qt .Avec cet outil, vous pouvez fusionner deux (ou trois) fichiers dans un nouveau. Soit en choisissant un côté pour chaque différence, soit en résolvant manuellement le conflit.
la source
kdiff3
etkdiff3-qt