Como abrir arquivos locais para diferenciar no Kompare da linha de comando?

2

Quando eu uso meld para obter o diff visual, eu posso simplesmente executar isso a partir da linha de comando:

$ meld file1.txt file2.txt

... e meld inicia, carrega cada arquivo em uma subjanela separada e mostra as diferenças lado a lado.

Estou tentando fazer o mesmo com o Kompare:

$ kompare file1.txt file2.txt

... mas recebo o erro: " Could not parse diff output. ". E o mesmo erro se aplica a:

$ kompare -c file1.txt file2.txt
$ kompare -c file:///path/to/file1.txt file:///path/to/file2.txt

Eu também tentei:

$ diff file1.txt file2.txt | kompare -o - 

... isso não gera um erro - mas mostra a pasta Origem / Destino como " unknown " (e, caso contrário, todo o resto está em branco)?!

É possível usar o Kompare como eu pretendia? Em caso afirmativo, como a linha de comando deve ser formatada?

Muito obrigado antecipadamente por qualquer resposta,
Felicidades!

Editar: há uma tonelada de bugs relacionados a isso:

... pode ser qualquer um desses, eu acho ..

Edit2: aproximando-se, eu acho; já que isso está no OpenSuse 11.2,

> kompare --version
Qt: 4.5.3
KDE: 4.3.1 (KDE 4.3.1) "release 6"
Kompare: 4.0.0
> diff --version
diff (GNU diffutils) 2.8.7-cvs

... tentei procurar alguns patches no sistema:

> find / -xdev -name "*.patch" 2>/dev/null
...
/etc/YaST2/policy.patch
/etc/YaST2/liveinstall.patch

... e tentei ver um desses:

kompare -o /etc/YaST2/policy.patch

... e esse, pelo menos, abre e mostra algumas diferenças em kompare , então, pelo menos, há um arquivo de diferenças de referência para comparar com ...

    
por sdaau 09.11.2011 / 14:27

2 respostas

1

Acho que entendi ...

Meu problema é que eu queria diferenciar arquivos VHDL; em VHDL, um comentário é dois sinais negativos; então diga que eu tive este comentário no arquivo file1.vhd :

...
-- my comment A
...

e eu substituí-lo para isso em file2.vhd

...
-- my comment B
...

Assim, agora, se eu executar um diff unificado nesses dois arquivos, recebo algo como:

--- path/to/file1.vhd   2011-11-09 11:15:46.800513032 +0000
+++ path/to/file2.vhd   2011-11-09 12:17:35.764027670 +0000
@@ -1,5 +1,5 @@
 ...
--- my comment A
+-- my comment B
 -- ...
 -- ...
 --

Observe isso? O - do diff (que significa "esta linha foi removida"), mesclado com o -- (que era conteúdo original: comentários no arquivo .vhd ) - para criar --- que em termos de diff é um identificador de um arquivo (veja a primeira linha do snippet acima)!

Assim, como o Kompare simplesmente não abre arquivos, mesmo através da GUI - mesmo que você especifique dois arquivos, primeiro o Kompare os executa através de um diff e então tenta analisar esse diff - aparentemente, primeiro por procurando +++ e --- para identificar os arquivos participantes; que faz com que a "linha de comentário VHDL" seja interpretada erroneamente. Para mostrar isso, eu simplesmente tive que inserir um espaço no arquivo diff:

- -- my comment A

... e depois pode carregar no Kompare.

Bem, isso aparentemente significa que agora precisaria recuar todos meus arquivos * .vhd, para que eles sejam compatíveis com diff->Kompare pipeline ...

    
por 09.11.2011 / 15:39
2

Tente

$ kompare -c file1.txt file2.txt

O motivo pelo qual o comando canalizado não funciona é que, por motivos históricos, diff não produz o formato de patch com o qual a maioria de nós está acostumada, com contexto e + e - . Você tem que usar diff -u para obter isso:

$ diff -u file1.txt file2.txt | kompare -o -
    
por 09.11.2011 / 15:11