O que significam os números na linha “@@” na saída do diff? [duplicado]

1

Aqui está um exemplo do programa Unix Shell diff , do controle de versão com o Git, por Loeliger, 2ed:

Let’slookatthediffindetail.

Intheheader,theoriginalfileisdenotedby---andthenewfileby+++.

The@@lineprovideslinenumbercontextforbothfileversions.

Oquesignificamosnúmerosnalinha"@@"?

    
por Tim 03.01.2016 / 00:31

2 respostas

3

Eles são números de linha dos arquivos antigos / novos para ajudar o programa patch (ou similar) a decodificar o unified-diff.

  • O número após a vírgula é o tamanho do fragmento (no arquivo antigo ou novo) e
  • o número antes da vírgula é o número da linha do início do bloco.
  • Os sinais + e - referem-se à adição e exclusão de linhas, respectivamente.

No seu exemplo, a linha

@@ -1,4 +1,5 @@

usa os sinais - e + como uma analogia para os sinais < e > usados na saída normal diff para os arquivos esquerdo / direito. Ambos os formatos tentam intercalar linhas de diferença. (Um diff de contexto mostra blocos antes e depois, sem intercalar).

O diff unificado é um formato particular do programa diff ; outros formatos amplamente suportados são discutidos na seção Formatos de saída do diferencial .

Leitura adicional:

por 03.01.2016 / 00:37
1

A documentação do GNU diff explica isso, na seção sobre Formato unificado :

Next come one or more hunks of differences; each hunk shows one area where the files differ. Unified format hunks look like this:

 @@ from-file-line-numbers to-file-line-numbers @@
  line-from-either-file
  line-from-either-file...

If a hunk contains just one line, only its start line number appears. Otherwise its line numbers look like ‘start,count’. An empty hunk is considered to start at the line that follows the hunk.

If a hunk and its context contain two or more lines, its line numbers look like ‘start,count’. Otherwise only its end line number appears. An empty hunk is considered to end at the line that precedes the hunk.

The lines common to both files begin with a space character. The lines that actually differ between the two files h ave one of the following indicator characters in the left print column:

‘+’
   A line was added here to the first file. 
‘-’
   A line was removed here from the first file.
    
por 03.01.2016 / 00:40

Tags