Что такое синтаксис файла Diff - PullRequest
9 голосов
/ 31 октября 2010

В настоящее время я играю с разбором diff-файлов, но мне еще не приходилось искать надежную документацию по diff-файлам.

Меня особенно интересуют технические характеристики. Например. Я не совсем понимаю строки, которые выглядят так (в начале каждого измененного блока кода):

@@ -296,7 +296,8 @@

Я знаю, что они имеют отношение к номерам строк и тому, сколько строк изменилось, но я до сих пор не смог выяснить детали.

Каков синтаксис выходных diff файлов (хотя бы основных частей)?

Ответы [ 2 ]

7 голосов
/ 31 октября 2010

Ознакомьтесь с документацией для GNU diffutils.Там вы найдете этот раздел:

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

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

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

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

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

'+' Здесь была добавлена ​​строка в первый файл.

'-' Здесь была удалена строка из первого файла.

6 голосов
/ 31 октября 2010

Страница Википедии в утилите diff описывает формат довольно хорошо.

...