# O Manual do &kdiff3;

Joachim
Eibl
joachim.eibl at gmx.de
Pedro
Morais

    morais@kde.org

Tradução
2002
2005
Joachim Eibl
&FDLNotice;
2005-01-30
0.9.87

&kdiff3; is a file and directory diff and merge tool which:

- compara e junta dois ou três ficheiros de texto ou pastas de entrada,

- mostra as diferenças linha-a-linha e carácter-a-carácter(!),

- oferece uma funcionalidade de junção automática,

- tem um editor para resolver confortavelmente os conflitos de junção,

- oferece a transparência de rede através do KIO,

- tem opções para realçar ou esconder as alterações nos espaços em branco ou comentários,

- supports Unicode, UTF-8 and other file encodings.

KDE
kdeextragear
kdiff3
diff
juntar
CVS
'diff' triplo
comparar
ficheiros
pastas
controlo de versões
junção-por-três-vias
diferenças-nas-linhas
sincronizar
kpart
kio
transparente na rede
editor
espaços em branco
comentários

## Introdução

### Outra Interface para o Diff?

Existem várias ferramentas de detecção de diferenças. Porquê escolher o &kdiff3;? Deixe que o autor diga porque o escreveu.

&kdiff3; started because I had to do a difficult merge. Merging is necessary when several people work on the same files in a project. A merge can be somewhat automated, when the merge-tool not only has the new modified files (called branches), but also the original file (called base). The merge tool will automatically choose any modification that was only done in one branch. When several contributors change the same lines, then the merge tool detects a conflict which must be solved manually.

"A junção foi então difícil porque um dos colaboradores alterou várias coisas e corrigiu a indentação em vários sítios. Outro também alterou bastante texto, o que resultou em vários conflitos de junção".

"A ferramenta que usei então só mostrava as linhas modificadas, mas não o que tinha sido alterado dentro dessas linhas. E não havia nenhuma informação sobre os locais em que só a indentação tinha sido alterada. A junção foi um pequeno pesadelo por isso".

"Daí, foi este o início. A primeira versão podia mostrar as diferenças dentro de uma linha e mostrava as diferenças de espaços em branco. Depois, muitas outras funcionalidades foram adicionada para aumentar a utilidade".

"Por exemplo, se você quiser comparar algum texto rapidamente, então poderá copiá-lo para a área de transferência e colá-lo noutra janela de diferenças".

"Uma funcionalidade que necessitou de um grande esforço foi a comparação de pastas e a funcionalidade de junção, o que transformou o programa quase num navegador de ficheiros completo".

Espero que o &kdiff3; funcione para si também. Divirta-se!

Joachim Eibl (2003)

### Imagens e Funcionalidades

Esta imagem mostra a diferença entre dois ficheiros de texto

(A usar uma versão anterior do &kdiff3;):

3-way-merging is fully supported. This is useful if two people change code independently.

The original file (the base) is used to help &kdiff3; to automatically select the correct changes.

The merge-editor below the diff-windows allows you to solve conflicts, while showing you the output you will get.

You can even edit the output.

This screenshot shows three input files being merged:

O &kdiff3; também o ajuda a comparar e a juntar pastas completas. Esta imagem mostra o &kdiff3; durante a junção de pastas:

### Mais Funcionalidades

#### Visualizador de Diferenças Linha-a-Linha e Carácter-a-Carácter

Usando as possibilidades de um ambiente gráfico a cores, o &kdiff3; mostra exactamente o que é a diferença. Quando tiver de fazer várias revisões de código, irá gostar disto.

#### Ver as Diferenças de Espaços em Branco de uma Vez

Os espaços e as tabulações que são diferentes aparecem visivelmente. Quando as linhas diferem apenas pelo número de espaços em branco, isto poderá ser visto num instante se olhar para a coluna do resumo do lado esquerdo. (Não há mais problemas quando as pessoas mudam a indentação).

#### Diferenças Triplas

Analise três ficheiros e veja no que eles diferem.

As janelas da esquerda/meio/direita são intituladas A/B/C e têm as cores azul/verde/magenta, respectivamente.

Se um dos ficheiros for igual e o outro for diferente numa linha, então a cor mostra qual o ficheiro que é diferente. A cor vermelha indica que ambos os ficheiros são diferentes.

#### Junção Confortável de Dois ou Três Ficheiros de Entrada

O &kdiff3; pode ser usado para juntar dois ou três ficheiros de entrada e junta automaticamente o máximo possível. O resultado é apresentado numa janela editável em que a maioria dos conflitos poderá ser resolvida com um simples 'click' do rato: Seleccione os botões A/B/C na barra de botões para seleccionar a origem que deverá ser usada. Dado que esta janela de resultado é um editor, até mesmo os conflitos que necessitem de mais correcções poderão ser resolvidos aqui sem necessitarem de outra ferramenta.

#### E ...

- Navegação rápida através de botões.

- Um 'click' do rato numa coluna de resumo sincroniza todas as janelas para mostrarem a mesma posição.

- Seleccionar e copiar de qualquer janela para colar na janela do resultado da junção.

- Uma coluna de visão geral que mostra onde estão as alterações e os conflitos.

- As cores são ajustáveis de acordo com as suas preferências específicas.

- Um tamanho de tabulação ajustável.

- Uma opção para inserir espaço em vez de tabulações.

- Abertura confortável dos ficheiros através de uma janela ou da linha de comandos.

- Search for strings in all text windows. Find (&Ctrl;F) and Find Next (F3)

- Mostrar os números de linha para cada linha.

- Colar o conteúdo da área de transferência e arrastar o texto para uma janela de introdução de diferenças.

- Transparência na rede através do KIO.

- Pode ser usado como visualizador de diferenças no KDevelop 3.

- Mudança de linha para as linhas compridas para as repartir.

- Suporte para o Unicode, UTF-8 e outras codificações.

- Suporte para as línguas escritas da direita-para-esquerda.

## Documentation of File Comparison And Merge

### Opções da Linha de Comandos

#### Comparar 2 ficheiros:

    kdiff3 ficheiro1 ficheiro2

#### Juntar 2 ficheiros:

    kdiff3 file1 file2 -m
    kdiff3 file1 file2 -o outputfile

#### Comparar 3 ficheiros:

    kdiff3 ficheiro1 ficheiro2 ficheiro3

#### Juntar 3 ficheiros:

    kdiff3 file1 file2 file3 -m
    kdiff3 file1 file2 file3 -o outputfile

Repare que o ficheiro1 será tratado como base para o ficheiro2 e o ficheiro3.

#### Caso especial: Ficheiros com o mesmo nome

If all files have the same name but are in different directories, you can reduce typework by specifying the filename only for the first file. &eg;:

    kdiff3 pasta1/ficheiro pasta2 pasta3

#### Linha de comandos para iniciar uma comparação ou junção de pastas:

É bastante semelhante, mas diz respeito agora apenas às pastas.

    kdiff3 dir1 dir2
    kdiff3 dir1 dir2 -o destdir
    kdiff3 dir1 dir2 dir3
    kdiff3 dir1 dir2 dir3 -o destdir

Para a comparação e junção de pastas, poderá continuar a ler aqui.

#### For more information on command line options use:

    kdiff3 --help
    Options:
      -m, --merge               Merge the input.
      -b, --base file           Explicit base file. For compatibility with certain tools.
      -o, --output file         Output file. Implies -m. E.g.: -o newfile.txt
      --out file                Output file, again. (For compatibility with certain tools.)
      --auto                    No GUI if all conflicts are auto-solvable. (Needs -o file)
      --qall                    Don't solve conflicts automatically. (For compatibility...)
      --L1 alias1               Visible name replacement for input file 1 (base).
      --L2 alias2               Visible name replacement for input file 2.
      --L3 alias3               Visible name replacement for input file 3.
      -L, --fname alias         Alternative visible name replacement. Supply this once for every input.
      -u                        Has no effect. For compatibility with certain tools.

### Janela de Abertura

Dado que é necessário seleccionar vários ficheiros, o programa tem uma janela de abertura especial:

The open dialog allows to edit the filenames by hand, selecting a file via the file-browser (File...) or allows to choose recent files from the drop-down lists. If you open the dialog again, then the current names still remain there. The third input file is not required. If the entry for C remains empty, then only a two file diff analysis will be done.

You can also select a directory via Dir.... If for A a directory is specified then a directory-comparison/merge starts. If A specifies a file but B, C or the output specify a directory, then &kdiff3; uses the filename from A in the specified directories.

If Merge is selected, then the Output line becomes editable. But it is not required to specify the output filename immediately. You can also postpone this until saving.

The Configure... button opens the options-dialog, so that you can set the options before running the analysis.

### Colar e Arrastar Dados

Sometimes you want to compare parts of a text that is not an own file. &kdiff3; also allows you to paste text from the clipboard into the diff input window that has the focus. The diff analysis happens immediately then. In the open dialog you need not specify files then, but just close it via Cancel.

O utilizador também poderá usar o 'drag and drop': Arraste um ficheiro de um gestor de ficheiros ou o texto seleccionado de um editor e arrastá-lo para uma janela de introdução de diferenças.

Qual é a ideia? Algumas vezes um ficheiro contém duas funções semelhantes, mas a verificação sobre as semelhanças entre elas é um grande esforço, se você precisar de criar primeiro dois ficheiros e depois carregá-los. Assim, poderá simplesmente copiar, colar e comparar as secções relevantes.

Currently you can't drag anything from &kdiff3;. Only dropping in the diff input is supported.

Some editors still interpret the drag and drop into another program like cut (instead of copy) and paste. Your original data might be lost then.

### Interpreting The Information In The Input Windows

At the top of each text window is its info line. The info lines of the input windows contain a letter A, B or C, the filename and the line number of the first visible line in the window. (Note that window C is optional.) Each info line appears in a different color. (If the paths are too long to fit, then you can move the mouse onto the info line and a tooltip will show the complete name.)

The three input windows are assigned the letters A, B and C. A has color blue, B has green and C has magenta. (These are the defaults, but can be changed in the Settings menu.)

When a difference is detected then the color shows which input file differs. When both other input files differ then the color used to express this is red by default (Conflict color in the settings). This colorscheme is especially useful in the case of three input files, which will be seen in the next section (Merging).

Left of each text is the summary column. If differences occurred on a line then the summary column shows the respective color. For a white-space-only difference the summary is chequered. For programming languages where white space is not so important this is useful to see at one glance if anything of importance was modified. (In C/C++ white space is only interesting within strings, comments, for the preprocessor, and some only very esoteric situations.)

A linha vertical que separa a coluna do resumo e o texto é interrompida (tracejada), se o ficheiro de entrada não tiver aí nenhuma linha. Quando a mudança de linha estiver activa, então esta linha vertical aparece ponteada para as linhas repartidas.

On the right side a overview column is visible left of the vertical scrollbar. It shows the compressed summary column of input A. All the differences and conflicts are visible at one glance. When only two input windows are used, then all differences appear red here because every difference is also a conflict. A black rectangle frames the visible part of the inputs. For very long input files, when the number of input lines is bigger than the height of the overview column in pixels, then several input lines share one overview line. A conflict then has top priority over simple differences, which have priority over no change, so that no difference or conflict is lost here. By clicking into this overview column the corresponding text will be shown.

### Juntar e a Janela do Editor do Resultado da Junção

The merge output editor window (below the diff input windows) also has an info line at the top showing Output:, the filename and [Modified] if you edited something. Usually it will contain some text through the automatic merge facilities, but often it will also contain conflicts.

Saving is disabled until all conflicts are resolved. (Use the Go to prev/next unsolved conflicts buttons to find the remaining conflicts.)

Com apenas dois ficheiros de entrada, todas as diferenças são também conflitos que necessitam de ser resolvidos manualmente.

Com três ficheiros de entrada, o primeiro ficheiro é tratado como a base, enquanto que o segundo e o terceiro contêm as modificações. Quando, em qualquer linha, só o ficheiro B ou o C tiverem sido alterados mas não ambos, então será seleccionada a origem alterada. Só quando o B e o C alteraram as mesmas linhas é que a ferramenta detecta um conflito que deverá ser resolvido manualmente. Quando o B e o C são iguais mas não são o mesmo que o A, é seleccionado o C.

The merge output editor window also has a summary column on the left. It shows the letter of the input from which a line was selected or nothing if all three sources where equal on a line. For conflicts it shows a questionmark ? and the line shows <Merge Conflict>, all in red. Because solving conflicts line by line would take very long, the lines are grouped into groups that have the same difference and conflict characteristics. But only-white-space-conflicts are separated from non-white-space-conflicts in order to ease the merging of files were the indentation changed for many lines.

When clicking into the summary column with the left mouse button in either window then the group belonging to that line will be selected in all windows and the beginning of that group will be shown. (This might involve an automatic position jump in the windows if the beginning of a group is not visible.) This group then becomes the current group. It is highlighted with the Current range (diff) background color and a black bar appears on the left side of the text.

Note the input selector buttons containing the letters A, B and C in the button bar below the menu bar. When clicking on either input selector button, the lines from that input will be added at the end of the selected group if that group didn't contain that source before. Otherwise the lines from that input will be removed.

Besides, you can directly edit any line. The summary column will show m for every line that was modified.

Sometimes, when a line is removed either by automatic merge or by editing and no other lines remain in that group, then the text `<No src line>` will appear in that line. This is just a placeholder for the group for when you might change your mind and select some source again. This text won't appear in the saved file or in any selections you want to copy and paste.

The text <Merge Conflict> will appear in the clipboard if you copy and paste some text containing such a line.

The normal merge will start by solving simple conflicts automatically. But the Merge menu provides some actions for other common needs. If you have to select the same source for most conflicts, then you can choose A, B or C everywhere, or only for the remaining unsolved conflicts, or for unsolved whitespace conflicts. If you want to decide every single delta yourself, you can Set deltas to conflicts. Or if you want to return to the automatic choices of &kdiff3; then select Automatically solve simple conflicts. &kdiff3; then restarts the merge. For actions that change your previous modifications KDiff3 will ask for your confirmation before proceeding.

When choosing either source for unsolved whitespace conflicts and the options Ignore Numbers or Ignore C/C++ Comments are used then changes in numbers or comments will be treated like whitespace too.

### Navegação e Edição

Much navigation will be done with the scroll bars and the mouse but you can also navigate with the keys. If you click into either window then you can use the cursor buttons Left Arrow, Right Arrow, Up Arrow, Down Arrow, Page Up, Page Down, Home, End, &Ctrl;Home, &Ctrl;End as you would in other programs. The overview-column next to the vertical scroll bar of the input files can also be used for navigating by clicking into it.

You can also use a wheel mouse to scroll up and down.

In the merge output editor you can also use the other keys for editing. You can toggle between insert and overwrite mode with the Insert key. (Default is insert-mode.)

A &LMB; click into any summary column will synchronise all windows to show the beginning of the same group of lines (as explained in section "Merging").

The button bar also contains seven navigation buttons with which you can jump to the current/first/last difference, to the next/previous difference (&Ctrl;Down Arrow/&Ctrl;Up Arrow), to the next/previous conflict (&Ctrl;Page Down/&Ctrl;Page Up), or to the next/previous unsolved conflict. Note that for &kdiff3; a conflict that was not automatically solved at the start of the merge stays a conflict even if it is solved. Hence the necessity to distinguish unsolved conflicts.

There also is a button Automatically go to next unsolved conflict after source selection (Auto-Advance). If you enable this, then, when one source is selected, then &kdiff3; will jump to and select the next unsolved conflict automatically. This can help when you always want to choose one source only. When you need both sources, or you want to edit after selecting, then you probably want to switch this off. Before proceeding to the next unsolved conflict &kdiff3; shows you the effect of your choice for a short time. This delay is adjustable in the Diff & Merge Settings: You can specify the Auto-Advance delay in milli seconds between 0 and 2000.

Tired of many clicks? Use a small Auto-Advance-delay and the shortcuts &Ctrl;1, &Ctrl;2 and &Ctrl;3 to select files A, B or C for many conflicts.

### Seleccionar, Copiar e Colar

The input windows don't show a cursor, so selections must be made with the mouse by clicking with the &LMB; at the start, holding down the mousebutton and moving to the end, where you release the mouse button again. You can also select a word by double clicking it. In the merge output editor you can also select via the keyboard by holding the &Shift; button and navigation with the cursor keys.

To copy to the clipboard you must press the Copy button (&Ctrl;C or &Ctrl;Insert). But there exists an option Auto Copy Selection. If this is enabled, then whatever you select is copied immediately and you don't need to explicitly copy. But pay attention when using this because the contents of the clipboard might then be destroyed accidentally.

Cut (&Ctrl;X or &Shift;Delete) copies to the clipboard and deletes the selected text and Paste (&Ctrl;V or &Shift;Insert) inserts the text in the clipboard at the cursor position or over the current selection.

### Gravar

Saving will only be allowed, when all conflicts were solved. If the file already exists and the Backup files option is enabled then the existing file will be renamed with an `.orig` extension, but if such a file exists it will be deleted. When you exit or start another diff-analysis and data wasn't saved yet, then &kdiff3; will ask if you want to Save, Cancel or Proceed without saving. &kdiff3; does not catch any signals. So if you kill &kdiff3; then your data will be lost.)

Line endings are saved according to the normal method on the underlying operating system. For Unices each line ends with an linefeed-character `\n`, while for &Windows; based systems each line ends with a carriage-return + a linefeed `\r\n`. &kdiff3; does not preserve the line-endings of the input files, which also means that you shouldn't use &kdiff3; with binary files.

### Procurar Sequências de Texto

You can search for a string in any text-window of &kdiff3;. The Find ... command (&Ctrl;F) in the Edit menu opens a dialog that lets you specify the string to search for. You can also select the windows which should be searched. Searching will always start at the top. Use the Find Next command (F3) to proceed to the next occurence. If you select to search several windows then the first window will be searched from top to bottom before the search starts in the next window at the top again, &etc;

### Opções

Options and the recent-file-list will be saved when you exit the program, and reloaded when you start it. (Menu Settings Configure KDiff3 ...)

#### Tipo de Letra

Seleccione um tipo de letra monoespaçado. (Em alguns sistemas, esta janela irá também apresentar os tipos de letra de tamanho variável, mas você não os deverá usar.)

Texto Itálico para os Deltas:

  Se seleccionar isto, então as diferenças no texto serão escritas com a versão itálica do tipo de letra seleccionado. Se o tipo de letra não suportar caracteres itálicos, isto não fará nada.

#### Colors

Cor principal:

  Normalmente preto.

Cor de fundo:

  Normalmente branco.

Cor de Fundo das Diferenças:

  Normalmente a cinzento claro.

Cor A:

  Normalmente a azul escuro.

Cor B:

  Normalmente a verde escuro.

Cor C:

  Normalmente a magenta escuro.

Cor do Conflito:

  Normalmente a vermelho.

Cor de fundo do intervalo actual:

  Normalmente a amarelo claro.

Cor de fundo da diferença do intervalo actual:

  Normalmente a amarelo escuro.

On systems with only 16 or 256 colors some colors are not available in pure form. On such systems the Defaults button will choose a pure color.

#### Configuração do Editor

O Tab insere espaços:

  Se isto estiver desactivado e você carregar na tecla do tabulador, será inserido um carácter de tabulação, caso contrário serão inseridos os espaços com a quantidade apropriada.

Tamanho das tabulações:

  Poderá ser ajustado de acordo com as suas necessidades específicas. Por omissão é igual a 8.

Indentação automática:

  When pressing &Enter; or Return the indentation of the previous line is used for the new line.

Copiar automaticamente a selecção:

  Quando activo, qualquer selecção é posta automaticamente na área de transferência e não precisa de a copiar explicitamente.

Estilo de fim de linha:

  Ao gravar, o utilizador poderá seleccionar o estilo do fim de linha que prefere.O valor por omissão é a escolha comum para o sistema operativo usado.

Use locale encoding:

  For displaying foreign characters. Try changing this if some characters of your language aren't displayed correctly.

#### Diff & Merge Settings

Ao comparar os ficheiros, o &kdiff3; tenta primeiro corresponder as linhas iguais em todos os ficheiros de entrada. Só durante este passo é que poderá ignorar os espaços em branco. O segundo passo compara cada uma das linhas. Neste passo, os espaços em branco não serão ignorados. Também durante a junção os espaços em branco não serão ignorados.

Manter o 'Carriage Return':

  Some editors (on some systems) save carriage return `\r` and linefeed `\n` characters at the end of line, while others will only save the linefeed `\n`. Usually &kdiff3; ignores the carriage return, but then files that don't have equal sizes, look equal in side by side comparison. When this option is on, then the carriage return characters are made visible but are treated as white space. This option must be off during a merge. Default is off.

Ignorar os números:

  Default is off. Number characters (`0-9`, `.`, `-`) will be ignored in the first part of the analysis in which the line matching is done. In the result the differences will be shown nevertheless, but they are treated as white space.

Ignorar comentários de C/C++:

  Por omissão está desligado. As alterações nos comentários serão tratadas como as alterações nos espaços em branco.

Ignorar a capitalização:

  Default is off. Case-differences of characters (like `A` vs. `a`) will be treated like changes in white space.

Comando do pré-processador:

  Veja a próxima secção.

Comando do Pré-processador para a Correspondência de Linhas:

  Veja a próxima secção.

Tentar com Persistência:

  Tenta com mais afinco encontrar um delta ainda menor. (Por omissão está ligado). Isto irá ser efectivo provavelmente para os ficheiros grandes e complicados. Será também lento para os ficheiros muito grandes.

Atraso no Avanço Automático (ms):

  Quando estiver no modo de avanço automático esta opção indica o intervalo de tempo durante o qual mostrar o resultado da selecção antes de saltar para o próximo conflito não resolvido.

Predefinição da junção de espaço em branco com 2/3 ficheiros:

  Automatically solve all white-space conflict by choosing the specified file. (Default is manual choice.) Useful if white-space really isn't important in many files. If you need this only occasionally better use Choose A/B/C For All Unsolved Whitespace Conflicts in the Merge menu. Note that if you enable either Ignore numbers or Ignore C/C++ comments then this auto-choice also applies for conflicts in numbers or comments.

#### Junção de Pastas

Estas opções dizem respeito à análise da pasta e ao tratamento da junção: Veja em Comparação de Pastas/Juntar para mais detalhes.

Existe aqui ainda uma opção que também é relevante para gravar os ficheiros únicos:

Ficheiros de segurança:

  When a file is saved and an older version already exists, then the original version will be renamed with an `.orig` extension. If an old backup file with `.orig` extension already exists then this will be deleted without backup.

#### Opções Regionais e da Língua

Língua:

  Adjust the language of the user interface. Changing this option doesn't affect the running program. You have to exit and restart &kdiff3; so that the language is changed. (This option is not available in the &kde; version of &kdiff3; because the language is adjustable in the global &kde; settings.)

Utilizar a mesma codificação para tudo:

  As seguintes opções de codificação poderão ser ajustadas em separado para cada item ou, se esta opção for verdadeira, todos os valores irão usar o primeiro valor.

Codificação Local:

  Por cima dos selectores de codificação, aparece uma nota que lhe indica a sua codificação local. (Esta não é ajustável, mas está aqui apenas para o informar, no caso de não saber qual é a sua codificação local e tiver de a seleccionar).

Codificação do Ficheiro para o A/B/C:

  Ajuste a codificação do ficheiro para os ficheiros de entrada. Isto provoca algum efeito na forma como os caracteres especiais são interpretados. Dado que poderá ajustar cada codificação em separado, poderá até comparar e juntar ficheiros que foram gravados com codificações diferentes.

Codificação do Ficheiro para Junção de Resultado e Gravação:

  Quando tiver editado um ficheiro, poderá então ajustar a codificação que será usada ao gravar para o disco.

Codificação do Ficheiro dos Ficheiros de Pré-processador:

  Quando definir pré-processadores, este poderão não ser capazes de lidar com a sua codificação. (p.ex.: Os seus ficheiros estão em Unicode de 16 bits e o seu pré-processador só consegue lidar com ASCII de 8 bits). Com esta opção, poderá definir a codificação do resultado do pré-processador.

Língua da Esquerda-para-a-Direita:

  Some languages are written right to left. When this option is enabled, &kdiff3; draws the text from right to left in the diff input windows and in the merge output window. Note that if you start &kdiff3; with the command line option `--reverse` then all layouting will be done right to left too. (This is a feature provided by &Qt;.) This handbook was written assuming that Right To Left Language or reverse layout are disabled. So some references to left or right must be replaced by their respective counterpart if you use these options.

#### Diversos

These options and actions are available in menus or the buttonbar.

Mostrar os números de linha:

  O utilizador pode seleccionar se os números de linhas são mostrados para os ficheiros de entrada.

Mostrar as diferenças de espaços e tabulações:

  Algumas das vezes os espaços e tabulações visíveis são incómodos. Poderá com isto desactivar esta funcionalidade.

Mostrar os espaços em branco:

  Turn this off to suppress any highlighting of white-space-only changes in the text or overview-columns. (Note that this also applies to changes in numbers or comments if the options Ignore numbers or "Ignore C/C++ comments" are active.)

Opções da vista geral:

  These choices are only available when you compare three files. In normal mode all differences are shown in one color-coded overview-column. But sometimes you are especially interested in the differences between only two of these three files. Selecting A vs. B, A vs. C or B vs. C overview will show a second overview column with the required information next to the normal overview.

Quebrar linha nas janelas de diferenças:

  Reparte as linhas quando o seu tamanho exceder a largura de uma janela.

Mostrar a Janela A/B/C:

  Sometimes you want to use the space on the screen better for long lines. Hide the windows that are not important. (In the Windows menu.)

Comutar a Orientação da Repartição:

  Switch between diff windows shown next to each other (A left of B left of C) or above each other (A above B above C). This should also help for long lines. (In the Windows menu.)

Iniciar uma junção rapidamente:

  Sometimes you are viewing the deltas and decide to merge. Merge current file in the Directory menu also works if you only compare two files. A single click starts the merge and uses the filename of the last input-file as the default output filename. (When this is used to restart a merge, then the output filename will be preserved.)

#### Configurar os Atalhos de Teclado

Currently only the &kde; version supports user-configurable keyboard-shortcuts. (Settings Configure Shortcuts...)

### Comandos do Pré-processador

O &kdiff3; suporta duas opções do pré-processador.

Comando do pré-processador:

  When any file is read, it will be piped through this external command. The output of this command will be visible instead of the original file. You can write your own preprocessor that fulfills your specific needs. Use this to cut away disturbing parts of the file, or to automatically correct the indentation &etc;.

Comando do Pré-processador para a Correspondência de Linhas:

  Quando for lido qualquer ficheiro, ele será encaminhado através deste comando externo. Se um comando de pré-processador (ver acima) for também indicado, então o resultado do pré-processador é a entrada para o pré-processador de correspondência de linhas. O resultado só será usado durante a fase de correspondência de linhas da análise. O utilizador poderá escrever o seu próprio pré-processador que corresponda às suas necessidades específicas. Cada linha de entrada terá de ter uma linha de resultado correspondente.

A ideia é permitir ao utilizador uma maior flexibilidade ao configurar o resultado das diferenças. Mas isto necessita de um programa externo e muitos dos utilizadores não querem escrever um. As boas notícias é que, muitas das vezes, o `sed` ou o `perl` encarregar-se-ão disso.

Example: Simple testcase: Consider file `a.txt` (6 lines):

    aa
    ba
    ca
    da
    eafa

And file `b.txt` (3 lines):

    cg
    dg
    eg

Without a preprocessor the following lines would be placed next to each other:

    aa - cg
    ba - dg
    ca - eg
    da
    ea
    fa

This is probably not wanted since the first letter contains the actually interesting information. To help the matching algorithm to ignore the second letter we can use a line matching preprocessor command, that replaces `g` with `a`:

    sed 's/g/a/'

With this command the result of the comparison would be:

    aa
    ba
    ca - cg
    da - dg
    ea - eg
    fa

Internally the matching algorithm sees the files after running the line matching preprocessor, but on the screen the file is unchanged. (The normal preprocessor would change the data also on the screen.)

#### Bases do `sed`

This section only introduces some very basic features of `sed`. For more information see info:/sed or http://www.gnu.org/software/sed/manual/html_mono/sed.html. A precompiled version for &Windows; can be found at http://unxutils.sourceforge.net. Note that the following examples assume that the `sed` command is in some directory in the `PATH` environment variable. If this is not the case, you have to specify the full absolute path for the command. Also note that the following examples use the single quotation mark (`'`) which won't work for &Windows;. On &Windows; you should use the double quotation marks (`"`) instead.

In this context only the `sed` substitute command is used:

    sed 's/REGEXP/REPLACEMENT/FLAGS'

Before you use a new command within &kdiff3;, you should first test it in a console. Here the `echo`-command is useful. Example:

    echo abrakadabra | sed 's/a/o/'
    obrakadabra

This example shows a very simple sed-command that replaces the first occurance of a with o. If you want to replace all occurances then you need the `g` flag:

    echo abrakadabra | sed 's/a/o/g'
    obrokodobro

The `|` symbol is the pipe-command that transfers the output of the previous command to the input of the following command. If you want to test with a longer file then you can use `cat` on Unix-like systems or `type` on &Windows;-like systems. `sed` will do the substitution for each line.

    cat filename |sed options

#### Exemplos para a Utilização do `sed` no &kdiff3;

##### Ignorar Outros Tipos de Comentários

Currently &kdiff3; understands only C/C++ comments. Using the Line-Matching-Preprocessor-Command you can also ignore other types of comments, by converting them into C/C++-comments.

To ignore comments starting with `#`, you would like to convert them to `//`. Note that you also must enable the Ignore C/C++-Comments option to get an effect. An appropriate Line-Matching-Preprocessor-Command would be:

    sed 's/#/\/\//'

Since for `sed` the `/` character has a special meaning, it is necessary to place the `\` character before each `/` in the replacement string. Sometimes the `\` is required to add or remove a special meaning of certain characters. The single quotation marks (`'`) before and after the substitution-command are important now, because otherwise the shell will try to interpret some special characters like `#`, `$` or `\` before passing them to `sed`. Note that on &Windows; you will need the double quotation marks (`"`) here. &Windows; substitutes other characters like `%`, so you might have to experiment a little bit.

##### Diff sem Distinguir Capitalização

Use the following Line-Matching-Preprocessor-Command to convert all input to uppercase:

    sed 's/\(.*\)/\U\1/'

Here the `.*` is a regular expression that matches any string and in this context matches all characters in the line. The `\1` in the replacement string refers to the matched text within the first pair of `\(` and `\)`. The `\U` converts the inserted text to uppercase.

##### Ignorar as Palavras-Chave do Controlo de Versões

CVS and other version control systems use several keywords to insert automatically generated strings (info:/cvs/Keyword substitution). All of them follow the pattern `$KEYWORD generated text$`. We now need a Line-Matching-Preprocessor-Command that removes only the generated text:

    sed 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/'

The `\|` separates the possible keywords. You might want to modify this list according to your needs. The `\` before the `$` is necessary because otherwise the `$` matches the end of the line.

Ao experimentar com o `sed`, você poderá vir a compreender e até a gostar destas expressões regulares. Elas são úteis porque existem muitos outros programas que suportam algumas coisas desse género.

##### Ignorar os Números

Ignoring numbers actually is a built-in option. But as another example, this is how it would look as a Line-Matching-Preprocessor-command.

    sed 's/[0123456789.-]//g'

Any character within `[` and `]` is a match and will be replaced with nothing.

##### Ignorar Certas Colunas

Sometimes a text is very strictly formatted, and contains columns that you always want to ignore, while there are other columns you want to preserve for analysis. In the following example the first five columns (characters) are ignored, the next ten columns are preserved, then again five columns are ignored and the rest of the line is preserved.

    sed 's/.....\(..........\).....\(.*\)/\1\2/'

Each dot `.` matches any single character. The `\1` and `\2` in the replacement string refer to the matched text within the first and second pair of `\(` and `\)` denoting the text to be preserved.

##### Combinar Várias Substituições

Sometimes you want to apply several substitutions at once. You can then use the semicolon `;` to separate these from each other.

    echo abrakadabra | sed 's/a/o/g;s/\(.*\)/\U\1/'
    OBROKODOBRO

##### Usar o `perl` em vez do `sed`

Instead of `sed` you might want to use something else like `perl`.

    perl -p -e 's/REGEXP/REPLACEMENT/FLAGS'

But some details are different in `perl`. Note that where `sed` needed `\(` and `\)` `perl` requires the simpler `(` and `)` without preceding `\`.

    sed 's/\(.*\)/\U\1/'
    perl -p -e 's/(.*)/\U\1/'

#### Order de Execução de Pré-processadores

Os dados são encaminhados através de todos os pré-processadores internos e externos pela seguinte ordem:

- Pré-processador normal,

- Pré-processador de Correspondência de Linhas,

- Ignorar capitalização (conversão para maiúsculas),

- Detecção de Comentários de C/C++,

- Ignorar os números,

- Ignorar os espaços em branco

Os dados após o pré-processador normal serão preservados para a apresentação e para a junção. As outras operações só modificam os dados que o algoritmo para a correspondência de linhas nas diferenças vê.

Nos casos raros em que você usa um pré-processador normal, repare que o pré-processador da correspondência de linhas vê o resultado no pré-processador normal como dados de entrada.

#### Aviso

Os comandos do pré-processador são normalmente muito úteis, mas como acontece com qualquer opção que modifica os seus textos ou esconde algumas diferenças automaticamente, você poderá saltar por cima de certas diferenças e, no pior dos casos, destruir dados importantes.

For this reason during a merge if a normal preprocessor-command is being used &kdiff3; will tell you so and ask you if it should be disabled or not. But it won't warn you if a Line-Matching-Preprocessor-command is active. The merge will not complete until all conflicts are solved. If you disabled Show White Space then the differences that were removed with the Line-Matching-Preprocessor-command will also be invisible. If the Save-button remains disabled during a merge (because of remaining conflicts), make sure to enable Show White Space. If you don't wan't to merge these less important differences manually you can select Choose [A|B|C] For All Unsolved Whitespace Conflicts in the Merge menu.

## Comparação e Junção de Directorias com o &kdiff3;

### Introdução

Normalmente, os programadores precisam de modificar vários ficheiros numa pasta para atingir os seus fins. Para isso, o &kdiff3; também lhe permite comparar e juntar várias pastas de forma recursiva!

Even though comparing and merging directories seems to be quite obvious, there are several details that you should know about. Most important is of course the fact that now many files might be affected by each operation. If you don't have backups of your original data, then it can be very hard or even impossible to return to the original state. So before starting a merge, make sure that your data is safe, and going back is possible. If you make an archive or use some version control system is your decision, but even experienced programmers and integrators need the old sources now and then. And note that even though I (the author of &kdiff3;) try to do my best, I can't guarantee that there are no bugs. According to the GNU GPL there is NO WARRANTY whatsoever for this program. So be humble and always keep in mind:

> Errar é humano, mas para realmente baralhar as coisas é preciso um computador.

Por isso, este é o programa que poderá fazer isto por si: o &kdiff3; ...

- ... lê e compara duas ou três pastas recursivamente,

- ... tem um cuidado especial com as ligações simbólicas,

- ... permite-lhe navegar nos ficheiros com um duplo-click do rato,

- ... propõe para cada item uma operação de junção, a qual poderá alterar antes de iniciar a junção de pastas,

- ... permite-lhe simular a junção e lista as acções que iriam tomar lugar, sem fazer nada de facto,

- ... permite-lhe fazer realmente a junção, possibilitando também a você interagir nas situações em que é necessária uma interacção manual,

- ... lets you run the selected operation for all items (key F7) or the selected item (key F6),

- ... lets you continue the merge after manual interaction with key F7,

- ... optionally creates backups, with the `.orig` extension,

- ...

### Iniciar a Comparação ou Junção de Directoria

Isto é bastante semelhante à junção e comparação simples com ficheiros únicos. O utilizador apenas terá de indicar nomes de pastas na linha de comandos ou na janela de abertura de ficheiros.

#### Comparar/Juntar duas directorias:

    kdiff3 dir1 dir2
       kdiff3 dir1 dir2 -o destdir

Se não for indicada nenhuma pasta de destino, então o &kdiff3; irá usar a pasta2.

#### Comparar/Juntar estas pastas:

    kdiff3 dir1 dir2 dir3
       kdiff3 dir1 dir2 dir3 -o destdir

Quando forem reunidas três pastas, então a pasta1 será usada como a base para a junção. Se não for indicada nenhuma pasta de destino, então o &kdiff3; irá usar a pasta3 como pasta de destino para a junção.

Note that only the comparison starts automatically, not the merge. For this you first must select a menu entry or the key F7. (More details later.)

### Visible Information

Ao ler as pastas, aparece uma mensagem que o informa do progresso. Se você interromper a pesquisa das pastas, então só os ficheiros que tenham sido comparados até então serão listados.

Quando a pesquisa de pastas estiver completa, então o &kdiff3; irá mostrar uma lista com os resultados restantes, ...

... e os detalhes sobre o item seleccionado de momento à direita:

#### A Coluna do Nome

Cada ficheiro e pasta encontrado durante a pesquisa é aqui mostrado numa árvore. Você poderá seleccionar um item se carregar nele uma vez com o rato.

The directories are collapsed by default. You can expand and collapse them by clicking on the +/- or by double-clicking the item or by using the Left Arrow or Right Arrow keys. The Directory menu also contains two actions Fold all subdirs and Unfold all subdirs with which you can collapse or expand all directories at once.

Se fizer duplo-click num item de um ficheiro, então a comparação do ficheiro irá começar e irá aparecer a janela de diferenças do ficheiro.

The image in the name column reflects the file type in the first directory (A). It can be one of these:

- Ficheiro normal

- Pasta normal (imagem de pasta)

- Ligação para um ficheiro (imagem de ficheiro com uma seta de ligação)

- Ligação para uma pasta (imagem de pasta com uma seta de ligação)

Se o tipo de ficheiro for diferente nas outras pastas, então isso é visível nas colunas A/B/C e na janela que mostra os detalhes sobre o item seleccionado. Repare que, neste caso, não poderá ser seleccionada nenhuma operação de junção automaticamente. Ao iniciar a junção, então o utilizador será informado dos problemas desse tipo.

#### As Colunas A/B/C e o Esquema de Cores

Como pode ser visto na imagem acima, as cores vermelha, verde, amarela e preta são usadas nas colunas A/B/C.

- Preto: O item não existe nesta pasta.

- Verde: Item mais recente.

- Amarelo: Mais antigo que o verde, mais recente que o vermelho.

- Vermelho: O item mais antigo.

Contudo, para os itens que eram idênticos na comparação, a sua cor é também idêntica mesmo que a idade seja diferente.

As pastas são consideradas iguais se todos os itens que contêm forem idênticos. Nesse caso, elas terão a mesma cor. Porém, a idade de uma pasta não é tida em consideração de acordo com a sua cor.

A ideia do autor para este esquema de coloração veio do dirdiff. As cores lembram as cores de uma folha que é verde quando é nova, vai-se tornando amarela com o tempo e é vermelha quando é antiga.

#### A Coluna de Operação

After comparing the directories &kdiff3; also evaluates a proposal for a merge operation. This is shown in the Operation column. You can modify the operation by clicking on the operation you want to change. A small menu will popup and allows you to select an operation for that item. (You can also select the most needed operations via keyboard. Ctrl+1/2/3/4/Del will select A/B/C/Merge/Delete respectively if available.) This operation will be executed during the merge. It depends on the item and on the merge-mode you are in, what operations are available. The merge-mode is one of

- Three directory-merge (A is treated as older base of both).

- Junção de duas pastas.

- Two directory-sync-mode (activate via option Synchronize Directories).

Na junção de três pastas, a proposta de operação será: Se para um item ...

- all three directories are equal: Copy from C

- A and C are equal but B is not: Copy from B (or if B does not exist, delete the destination if exists)

- A and B are equal but C is not: Copy from C (or if C does not exist, delete the destination if exists)

- B and C are equal but A is not: Copy from C (or if C does not exist, delete the destination if exists)

- only A exists: Delete the destination (if exists)

- only B exists: Copy from B

- only C exists: Copy from C

- A, B and C are not equal: Merge

- A, B and C don't have the same file type (&eg; A is a directory, B is a file): Error: Conflicting File Types. While such items exist the directory merge cannot start.

Na junção de duas pastas, a proposta de operação será: Se para um item ...

- both directories are equal: Copy from B

- A exists, but not B: Copy from A

- B exists, but not A: Copy from B

- A and B exist but are not equal: Merge

- A and B don't have the same file type (&eg; A is a directory, B is a file): Error: Conflicting File Types. While such items exist the directory merge cannot start.

Sync-mode is active if only two directories and no explicit destination were specified and if the option Synchronize directories is active. &kdiff3; then selects a default operation so that both directories are the same afterwards. If for an item

- both directories are equal: Nothing will be done.

- A exists, but not B: Copy A to B

- B exists, but not A: Copy B to A

- A and B exist, but are not equal: Merge and store the result in both directories. (For the user the visible save-filename is B, but then &kdiff3; copies B also to A.)

- A and B don't have the same file type (&eg; A is a directory, B is a file): Error: Conflicting File Types. While such items exist the directory merge cannot start.

When two directories are merged and the option Copy newer instead of merging is selected, then &kdiff3; looks at the dates and proposes to choose the newer file. If the files are not equal but have equal dates, then the operation will contain Error: Dates are equal but files are not. While such items exist the directory merge cannot start.

#### A Coluna de Estado

During the merge one file after the other will be processed. The status column will show `Done` for items where the merge operation has succeeded, and other texts if something unexpected happened. When a merge is complete, then you should make a last check to see if the status for all items is agreeable.

#### Colunas de Estatísticas

When the file comparison mode Full Analysis is enabled in the options, then &kdiff3; will show extra columns containing the numbers of unsolved, solved, nonwhite and whitespace conflicts. (The solved-column will only show when comparing or merging three directories.)

### Doing A Merge

O utilizador tanto poderá reunir o item seleccionado de momento (ficheiro ou pasta) ou todos os itens. Quando tiver feito todas as suas opções de operação (em todas as subpastas também), aí então poderá iniciar a junção.

Be aware that if you didn't specify a destination directory explicitely, then the destination will be C in three directory mode, B in two directory merge mode, and in sync-mode it will be A and/or B.

Se tiver indicado uma pasta de destino, verifique também que todos os itens que deverão estar no resultado, estão na árvore respectiva. Existem algumas opções que fazem com que certos itens sejam omitidos na comparação e junção de pastas. Assinale estas opções para evitar surpresas desagradáveis:

- Recursive Directories: If this is off, then items in subdirectories will not be found.

- Pattern/Anti-Pattern: Include/exclude items that match

- Exclude Hidden Files

- List only Deltas: Files that match in all directories don't appear in the tree, and hence also not in the destination.

(In the current version, you must do a rescan via menu Directory Rescan yourself, after changing options affecting the directory scan.)

Se estiver satisfeito até agora, o resto é simples.

To merge all items: Select Start/Continue directory merge in the Directory menu or press F7 (which is the shortcut). To merge only the current item: Select Run Operation For Current Item or press F6.

Se, devido à existência de tipos de ficheiro em conflito, ainda permanecerem alguns itens com operações inválidas, então irá aparecer uma mensagem onde serão evidenciados esses itens, para que possa seleccionar uma operação válida para cada item.

If you merge all items a dialog will appear giving you the options Do it, Simulate it and Cancel.

- Select Simulate it if you want to see what would be done without actually doing it. A verbose list of all operations will be shown.

- Otherwise select Do it to really start merging.

Nesse caso, o &kdiff3; irá executar a operação indicada para todos os itens. Se for necessária alguma intervenção manual (na junção de ficheiros simples), então irá aparecer uma janela de junção (ver a imagem grande).

When you have finished with a file, again select Start/Continue directory merge or the key F7. If you haven't saved yet, a dialog will ask you to do so. Then &kdiff3; will continue with the next item.

When &kdiff3; encounters an error, it will tell you so and will show the verbose-status-information. At the bottom of this list, there will be some error messages which should help you to understand the cause of the problem. When you continue merging (F7 key) &kdiff3; will give you the choice to retry or skip the item that caused the problem. This means that before continuing you can choose another operation or solve the problem by other means.

Quando a junção estiver completa, o &kdiff3; informá-lo-á então com uma mensagem.

If some items were merged individually then &kdiff3; remembers this (while this merge-session goes on), and doesn't merge them again when later the merge for all items is run. Even when the merge was skipped or nothing was saved these items count as completed. Only when you change the merge operation the item will be merged again.

### Opções para Comparar e Juntar Pastas

The &kdiff3; preferences (menu Settings Configure KDiff3) now has a section called Directory Merge with these options:

Directorias Recursivas:

  Indica se você deseja pesquisar as pastas de forma recursiva.

Padrões de Ficheiros:

  Only files that match any pattern here will be put in the tree. More than one pattern may be specified here via using the semicolon `;` as separator. Valid wildcards: `*` and `?`. (&eg; `*.cpp;*.h`). Default is `*`. Directories need not match this pattern.

Anti-Pattern(s):

  Files and directories that match this pattern will be excluded from the tree. More than one pattern may be specified here via using the semicolon `;` as separator. Valid wildcards: `*` and `?`. Default is `*.orig;*.o`.

Usar CVS-Ignore:

  Ignore files and directories that would also be ignored by CVS. Many automatically generated files are ignored by CVS. The big advantage is that this can be directory specific via a local `.cvsignore` file. (See info:/cvs/cvsignore.)

Procurar os Ficheiros e Directorias Escondidos:

  On some filesystems files have an Hidden attribute. On other systems a filename starting with a dot (`.`) causes it to be hidden. This option allows you to decide whether to include these files in the tree or not. Default is on.

Seguir as Ligações de Ficheiros:

  Para as ligações aos ficheiros: Quando a opção estiver desactivada, as ligações simbólicas serão comparadas. Caso contrário, serão compilados os ficheiros para os quais apontam as ligações. Por omissão, a opção está desligada.

Seguir as Ligações de Directorias:

  For links to directories: When disabled, then the symbolic links will be compared. When enabled then the link will be treated like a directory and it will be scanned recursively. (Note that the program doesn't check if the link is recursive. So for example a directory that contains a link to the directory would cause an infinite loop, and after some time when the stack overflows or all memory is used up, crash the program.) Default is off.

List only deltas:

  Only items that are not equal in all input directories will be listed and only the changed files are visible. Hence files that are equal in all directories won't be copied during a merge and if the destination dir does not contain the files before the merge, you might miss some files later. (This option is likely to be changed in a later version.) Default is off.

Modo de Comparação de Ficheiros:

  Comparação Binária:

    Este é o modo de comparação de ficheiros por omissão.

  Análise Completa:

    Faz uma análise completa de cada ficheiro e mostra os resultados nas colunas de informação das estatísticas. (O número de conflitos resolvidos, por resolver, devido a espaços em branco ou a outros casos). A análise completa é mais lenta que uma simples comparação binária e é muito mais lenta se for usada em ficheiros que não contenham texto. (Indique os tipos de anti-padrões necessários.)

  Confiar na data de modificação:

    Se comparar pastas grandes numa rede lenta, poderá ser mais rápido comparar somente as datas de modificação e os tamanhos dos ficheiros. Porém, este melhoramento de velocidade traz alguma incerteza. Use esta opção com cuidado. Por omissão, está desligada.

  Confiar no tamanho:

    É semelhante à comparação da data de modificação. Não ocorre nenhuma comparação em si. Dois ficheiros quaisquer são considerados iguais se os seus tamanhos de ficheiros forem iguais. Isto é útil quando a operação de cópia de ficheiros não preservar a data de modificação. Use esta opção com cuidado. Por omissão, está desligada.

Sincronizar as Directorias:

  Activa o "Modo de Sincronização" em que duas pastas são comparadas e não foi indicada nenhuma pasta de destino. Neste modo, as operações propostas serão escolhidas de modo a que ambas as pastas de origem fiquem iguais no fim. Do mesmo modo, o resultado da junção será gravado em ambas as pastas. Por omissão, esta opção está desligada.

Copiar o mais recente em vez de juntar:

  Instead of merging the proposed operation will copy the newer source if changes happened. (Considered unsafe, because it implies that the knowledge, that the other file hasn't been edited too. Check to make sure in every case.) Default is off.

Ficheiros de segurança:

  If a file or complete directory is replaced by another or is deleted then the original version will be renamed with an `.orig` extension. If an old backup file with `.orig` extension already exists then this will be deleted without backup. This also affects the normal merging of single files, not only in directory-merge mode. Default is on.

### Other Functions

#### Modo de Ecrã Repartido/Completo

Usually the directory merge list view remains visible while a single file is compared or merged. With the mouse you can move the the splitter bar that separates the file list from the text-diff windows. If you don't want this, you can disable Split Screen View in the Directory menu. Then you can use Toggle View in the Directory menu to switch between the file list and the text-diff view that then occupy the full screen.

#### Comparar ou Juntar um Único Ficheiro

Probably you will prefer a simple double mouse click on a file in order to compare it. Nevertheless there also exists an entry in the Directory menu. You can also directly merge a single file, without starting the directory merge via the Merge single file in the Directory Menu. On saving the result, the status will be set to done, and the file will not be merged again if a directory merge is started.

But note that this status information will be lost when you rerun a directory scan: Directory Rescan

## Tópicos Diversos

### Network Transparency via KIO

#### KIO-Slaves

&kde; supports networktransparency via KIO-slaves. &kdiff3; uses this for reading input files and for scanning directories. This means that you can specify files and directories on local and remote resources via &URL;s.

Exemplo:

    kdiff3 teste.cpp  ftp://ftp.longe.org/teste.cpp
       kdiff3 tar:/home/eu/pacote.tar.gz/pasta ./pasta

The first line compares a local file with a file on an &FTP; server. The second line compares a directory within an compressed archive with a local directory.

Outros 'KIO-slaves' que serão interessantes:

- Ficheiros da WWW (http:),

- Ficheiros de FTP (ftp:),

- Transferência de ficheiros cifrada (fish:, sftp:),

- Windows-resources (smb:),

- Ficheiros locais (file:),

Outras coisas que são possíveis, mas provavelmente serão menos interessantes:

- Páginas do 'man' (man:),

- Páginas do 'info' (info:),

#### How To Write &URL;s

A &URL; has a different syntax compared with paths for local files and directories. Some things should be considered:

- A path can be relative and can contain `.` or `..`. This is not possible for &URL;s which are always absolute.

- Special characters must be written with escaping. (# becomes %23, spaces become %20 and so on.) &eg; A file with the name /#foo# would have the &URL; `file:///%23foo%23`.

- When &URL;s don't work as expected, try to open them in &konqueror; first.

#### Capacidades dos 'KIO-Slaves'

Network transparency has one drawback: Not all ressources have the same capabilities.

Sometimes this is due to the filesystem of the server, sometimes due to the protocol. Here is a short list of restrictions:

- Em alguns casos não existe o suporte para ligações simbólicas.

- Ou não existe forma de distinguir se uma ligação aponta para um ficheiro ou uma pasta; é assumido sempre um ficheiro. (ftp:, sftp:).

- Não é sempre possível determinar o tamanho do ficheiro.

- Existe um suporte de permissões limitado.

- Não existe a possibilidade de modificar as permissões ou a data de modificação, como tal as permissões ou a data de uma cópia poderão ser diferentes do original. (Veja a opção "Confiar no tamanho".) (A modificação de permissões ou das datas só é possível para os ficheiros locais.)

### Usar o &kdiff3; como uma KPart

&kdiff3; is a KPart. Currently it implements the KParts::ReadOnlyPart interface.

It's main use is as difference-viewer in KDevelop. Kdevelop always starts the internal difference viewer first. To invoke &kdiff3; press the &RMB; on the difference viewer window and select Show in KDiff3Part from the contextmenu.

O &kdiff3; necessita normalmente de dois ficheiros completos como entrada. Se for usado como componente KPart, o &kdiff3; irá assumir que o ficheiro de entrada é um ficheiro de 'patch' no formato unificado. O &kdiff3; irá então obter os nomes dos ficheiros originais do ficheiro de 'patch'. Pelo menos um dos dois ficheiros terá de estar disponível. O &kdiff3; irá então invocar o `patch` para criar de novo o segundo ficheiro.

In &konqueror; you can select a patch file and select Preview in KDiff3Part from the contextmenu. Be aware that this won't work if none of the original files are available, and it is not reliable if the original file(s) have changed since the patch-file was generated.

When run as a part &kdiff3; only provides the a two file diff, a very small toolbar and menu. Merging or directory comparison are not supported.

## Perguntas e Respostas

&reporting.bugs; &updating.documentation;

Why is it called &kdiff3;?

Tools named KDiff and KDiff2 (now called &kompare;) already exist. Also &kdiff3; should suggest that it can merge like the `diff3` tool in the Diff-Tool collection.

Why did I release it under GPL?

I'm using GPL programs for a very long time now and learned very much by having a look at many of the sources. Hence this is my Thank You to all programmers that also did so or will do the same.

Faltam alguns botões e funções. O que é que se passa?

You compiled from source but you probably didn't specify the correct &kde; prefix with `configure`. By default configure wants to install in `/usr/local` but then &kde; can't find the user interface ressource file (&ie; `kdiff3ui.rc`). The `README` file contains more information about the correct prefix.

Muitas das vezes as linhas que são semelhantes mas não idênticas aparecem umas ao lado das outras mas noutros casos não. Porquê?

Lines where only the amount of white space characters is different are treated as equalat first, while just one different non-white character causes the lines to be different. If similar lines appear next to each other, this actually is coincidence but this fortunately is often the case.

Porque é que todos os conflitos deverão ser resolvidos para que o resultado da gravação possa ser gravado?

Para cada secção igual ou diferente, o editor na janela do resultado da junção recorda onde é que esta começa ou termina. Isto é necessário para que os conflitos possam ser resolvidos manualmente ao seleccionar simplesmente o botão da origem (A, B ou C). Esta informação é perdida durante a gravação como texto e corresponde a demasiado esforço criar um formato de ficheiro especial que suporte a gravação e a reposição de toda a informação necessária.

Why does the editor in the merge result window not have an undo function?

Isso era demasiado difícil até agora. Você poderá sempre repor uma versão de uma origem (A, B ou C) se carregar no botão respectivo. Para uma edição extensa, recomenda-se a utilização de outro editor, de qualquer forma.

When I removed some text, then suddenly <No src line> appeared and can't be deleted. What does that mean and how can one remove this?

For each equal or different section the editor in the merge result window remembers where it begins or ends. <No src line> means that there is nothing left in a section, not even a new line character. This can happen either while merging automatically or by editing. This is no problem, since this hint won't appear in the saved file. If you want the orignal source back just select the section (click on the left summary column) and then click the source button with the needed contents (A/B or C).

Porque é que o &kdiff3; não suporta o realce de sintaxe?

O &kdiff3; já usa demasiadas cores para o realce das diferenças. Se suportasse o realce de sintaxe, tornar-se-ia confuso. Use outro editor para esse efeito.

Existe demasiada informação aqui, mas a sua dúvida ainda não foi respondida?

Por favor envie ao autor a sua dúvida. Agradece-se qualquer comentário.

## Créditos e Licença

&kdiff3; - Ferramenta de Comparação e Junção de Ficheiros e Pastas

Program copyright 2002-2005 Joachim Eibl joachim.eibl@gmx.de

Vieram várias ideias giras e relatórios de erros dos colegas do autor e de pessoas da Wild Wild Web. Muito obrigado!

Documentação Copyright © 2002-2005 Joachim Eibl joachim.eibl at gmx.de

Tradução de Pedro Morais morais@kde.org

&underFDL; &underGPL;

## Instalação

### Como obter o &kdiff3;

Você poderá obter a última versão do &kdiff3; na sua página pessoal em http://kdiff3.sourceforge.net.

O &kdiff3; está também disponível para outras plataformas. Veja a página pessoal para mais detalhes.

### Requisitos

In order to successfully use all features of &kdiff3;, you need &kde; 3.1 or greater.

For information about how to run &kdiff3; on other platforms without &kde; please see the homepage.

You can find a list of changes at http://kdiff3.sourceforge.net/ChangeLog or in the `ChangeLog` file of the source package.

### Compilação e Instalação

&install.compile.documentation;

&documentation.index;