Как читать bzr diff

оригинал:

if __name__ == "__main__":
    myparams = {"server":"mpilgrim", \
                    "database":"master", \
                    "uid":"sa", \
                    "pwd":"secret" \
                    }

разрезание bzr diff:

 if __name__ == "__main__":
     myparams = {"server":"mpilgrim", \
@@ -15,4 +22,6 @@
                     "pwd":"secret" \
                     }

Что означает «@@ -15,4 +22,6 @@» часть bzr diff и почему он перезаписывает две строки?

"database":"master", \
"uid":"sa", \
3
задан 14 November 2011 в 01:13

1 ответ

Вы предоставили выдержки из контекста diff, который показывает обе строки, которые одинаковы в обоих файлах и строках, которые были изменены. Однако выбранные выдержки не показывают никаких измененных строк. (Этим будут предшествовать символы - или + в зависимости от того, удаляются или добавляются они.)

@@ -15,4 +22,6 @@ означает, что 4 линии, начинающиеся с строки 15 в старый файл изменен (или не изменен, но показан как контекст) и соответствует строкам 6, начинающимся с строки 22 в новом файле. (Самый простой и наиболее распространенный способ для этого - количество строк, добавленных в новый файл, превышает количество строк, удаленных в новом файле, на 7, так что начало работы в строке 15 в старом файле начинается в строке 22 в новом файле, до применения изменений, которые должны быть указаны.)

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

Предположительно присутствуют следующие строки в контексте в diff, поскольку произошли изменения незадолго до них (так что они представлены в контексте context diff a change):

if __name__ == "__main__": myparams = {"server":"mpilgrim", \

В то время как эти строки предположительно присутствуют, как контекст, в diff, потому что вскоре произойдет изменение после них (поэтому они представляют собой контекст, предоставленный перед изменением):

"pwd":"secret" \ }

Эти строки, по-видимому, недостаточно близки к перед изменением , указанным в diff, который будет включен как контекст:

"database":"master", \ "uid":"sa", \

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

(я говорю, not не потому, что существует большая вероятность того, что это не то, что происходит, а потому, что, пока утилита diff создаст diff с указанными числами before и , включит контекстные строки , вы можете, если вам нужно было вручную создать или изменить diff, чтобы в некоторых местах было больше или меньше линий контекста, чем в других, и это все равно было бы действительным различием при условии, что при необходимости номера в @@ линиях, где они были изменены match.)

Для получения дополнительной информации о diff (утилиты diff, patch, diff3 и sdiff, а также формат diff / patch), см. документацию по GNU diff. В частности, вас может заинтересовать раздел, посвященный унифицированному формату.

3
ответ дан 25 May 2018 в 16:54
  • 1
    Большое спасибо. Я новичок в bzr и пробовал всевозможные вещи. Страница справки bzr действительно огромна и содержит много полезной информации, но не ту часть информации, которая позволяет пользователю полностью понять выход. – Paradiesstaub 14 November 2011 в 03:30

Другие вопросы по тегам:

Похожие вопросы: