Intereting Posts

Что означают цифры в строке «@@» на выходе diff?

Вот пример Unix Shell diff , от Version Control от Git, от Loeliger, 2ed:

введите описание изображения здесь

Давайте подробно рассмотрим разницу.

В заголовке исходный файл обозначается – – – и новый файл – +++.

Строка @@ предоставляет контекст номера строки для обеих версий файлов.

Что означают цифры в строке «@@»?

Это номера строк для старых / новых файлов, которые помогают программе patch (или аналогичной) декодировать унифицированный-diff.

  • Число после запятой – это длина фрагмента (в старом или новом файле) и
  • номер перед запятой – номер строки для начала фрагмента.
  • Знаки + и - относятся к добавлению и удалению строк, соответственно.

В вашем примере строка

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

использует знаки - и + как аналогию для знаков < и > используемых в нормальном выходе diff для файлов влево / вправо. Оба этих формата пытаются чередовать различия. (Контекстный анализ показывает до и после кусков, а не чередование).

Унифицированный diff – это особый формат программы diff ; другие широко поддерживаемые форматы обсуждаются в разделе « Дифференциальные форматы ».

Дальнейшее чтение:

  • 2.2.2.2 Подробное описание унифицированного формата
  • Как читать патч или diff и понимать его структуру, чтобы применить его вручную
  • diff Форматы вывода
  • diff (POSIX)

В документации по GNU diff объясняется это, в разделе « Унифицированный формат :

Затем идут один или несколько разностей различий; каждый кусок показывает одну область, где файлы отличаются. Унифицированные форматы файлов выглядят следующим образом:

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

Если кусок содержит только одну строку, появляется только номер его начальной строки. В противном случае его номера строк выглядят как «start, count». Предполагается, что пустой кусок запускается на линии, которая следует за ломом.

Если ханк и его контекст содержат две или более строк, номера строк выглядят как «start, count». В противном случае появляется только номер его конечной линии. Предполагается, что пустой кусок заканчивается на линии, которая предшествует кушетке.

Линии, общие для обоих файлов, начинаются с символа пробела. Линии, которые фактически отличаются между двумя файлами, содержат один из следующих символов индикатора в левой колонке печати:

 '+' A line was added here to the first file. '-' A line was removed here from the first file.