Come si "uniscono" due file di testo?


13

Di recente ho eseguito l'aggiornamento da Ubuntu 12.04 a 12.10 e ad un certo punto si è verificato un conflitto tra i file di configurazione di Apache apache2.conf. Non mi ho dato un'opzione di unione a quel punto, quindi ho semplicemente rifiutato il nuovo file e il programma di installazione ha salvato il nuovo file come apache2.conf.dpkg-dist.

Riesco a diffondere i due file con diff apache2.conf apache2.conf.dpkg-diste ottenere solo le linee che sono diverse. Ma voglio unire manualmente il tipo di come risolvo i conflitti di unione in SVN o git. Come posso fare ciò?


Senza un parser adeguato, puoi solo unirli manualmente
daisy

Risposte:



2

Il controllo di versione ha più informazioni disponibili quando risolve i conflitti: ha non solo la tua versione e quella dell'altro ragazzo, ma anche l'antenato comune, e quindi può fare una fusione a tre . Qui, l'antenato comune è la versione originale del file di configurazione nella distribuzione o la versione ufficiale che è stata unita l'ultima volta con le modifiche.

Sfortunatamente né Ubuntu né qualsiasi altra grande distribuzione di cui sia a conoscenza rende completamente perfetto eseguire fusioni a tre vie quando viene aggiornato un file di configurazione. Puoi avvicinarti, tuttavia, con etckeeper . Etckeeper è un componente aggiuntivo per APT, lo strumento di gestione dei pacchetti utilizzato da Debian e derivati, che gestisce /etcin un sistema di controllo della versione (Bazaar, Darcs, Git, Mercurial); è stato portato su altri sistemi, incluso Yum in Fedora. Consiglio di usare etckeeper; è anche un ottimo modo per tenere traccia delle modifiche apportate /etc.

Alcuni programmi gestiscono i loro file di configurazione con ucf , ma non è qualcosa di cui hai il controllo come utente.

Più in generale, quando si ha l'antenato e due versioni, si può fare una fusione a tre vie con l' mergeutility fornita con RCS o diff3 -mda Diffutils .

Esistono anche molti programmi interattivi di diffusione e fusione. Emacs e Vim hanno interfacce per questo, così come la maggior parte dei visualizzatori diff .


1

Il mio preferito è kdiff3: non so se esiste una versione di Ubuntu. Secondo la homepage utilizza solo qt .

Con quello strumento puoi unire due (o tre) file in uno nuovo. O scegliendo un lato per ogni differenza o risolvendo manualmente il conflitto.


attualmente (15.04) ubuntu ha entrambi kdiff3ekdiff3-qt
mchid il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.