Como abrir arquivos locais para diferenciar no Kompare a partir 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 eu recebo 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 Source / Destination como " unknown "(e de outra forma, tudo o mais 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!

Edit: há uma tonelada de bugs relacionados a isso, verifica-se:

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

Edit2: chegando mais perto, 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 então eu tentei ver um destes:

kompare -o /etc/YaST2/policy.patch

... e que pelo menos abre e mostra algumas diferenças kompare, pelo menos, há um arquivo de comparação de diferenças para comparar com ...

Respostas:


2

Experimentar

$ kompare -c file1.txt file2.txt

A razão pela qual o comando canalizado não funciona é que, por razões históricas, diff não produz o formato de patch que a maioria de nós está acostumado, com contexto e + e -. Você tem que usar diff -u para conseguir esta:

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

Obrigado por isso, @stharward - foi observado no OP que kompare -C falha; Eu apenas tentei diff -u e aquele também falha :( Pelo menos eu consegui encontrar patches de sistema padrão que Faz aberto na Kompare, então eu posso usá-los para comparação ... Felicidades!
sdaau

1
@sdaau: Você também pode tentar usar o kdiff3 em vez do kompare, que também fará o 2-diffs bem. Eu realmente prefiro o kdiff3 porque sua navegação pelo teclado é melhor.
stharward

1

Eu acho que entendi ...

Meu problema é que queria diferenciar arquivos VHDL; em VHDL, um comentário é dois sinais negativos; então diga que eu tive esse 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, eu teria 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
 -- ...
 -- ...
 --

Notar que? o - de diff (significando "esta linha removida"), fundida com o -- (que eram conteúdos originais: comentários no .vhd arquivo) - para criar --- que em termos de diff é um identificador para um arquivo (veja a primeira linha no snippet acima)!

Assim, como o Kompare simplesmente não abre arquivos, mesmo através da GUI - mesmo que você especifique dois arquivos, o Kompare primeiro os executa através de um diff, e então tenta analisar esse diff - aparentemente, primeiro procurando +++ e --- 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 então poderia carregar no Kompare.

Bem, isso aparentemente significa que agora eu teria que recuar todos dos meus arquivos * .vhd, para tê-los compatíveis com diff->Kompare gasoduto ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.