Как сделать вывод vc-diff более компактным

Я делаю Cx v = для проверки текущих различий файла под управлением RCS (то есть, у него есть связанный файл с ,v суффикс). Однако вывод едва читаем, потому что я изменил каждую, скажем, 12-ю строку. Таким образом, я получаю эти гигантские куски различий, где я не могу легко определить, какая линия была изменена на другую.

Есть ли способ сделать этот diff-вывод более читаемым и все еще применимым (чтобы я мог быстро перейти к источнику)?

(Я мог бы

  1. Cx v l, чтобы увидеть старые версии, затем
  2. сделайте f на последнем, чтобы проверить это.
  3. Mx редактировать файлы

но это не очень удобно)

2 ответа

Решение

При беге vc-diff для файла в RCS по умолчанию вывод diff является "diff контекста". Это означает, что старые и новые чанки отображаются один над другим с выделением различий. Более современные системы контроля версий производят "унифицированные различия", где старая и новая версии каждой группы измененных строк являются смежными.

Diff-режим Emacs может конвертировать diff из одного формата в другой. Введите Cc Cu, чтобы преобразовать контекстный diff в унифицированный diff, и Cc Cd, чтобы сделать обратное.

Например, этот контекст diff:

*** bar.txt 2013/11/19 14:00:03 1.1
--- bar.txt 2013/11/19 14:00:11 1.2
***************
*** 1,5 ****
  one
  two
! tree
  four
  five
--- 1,5 ----
  one
  two
! three
  four
  five

будет преобразован в этот унифицированный diff:

--- bar.txt 2013/11/19 14:00:03 1.1
+++ bar.txt 2013/11/19 14:00:11 1.2
@@ -1,5 +1,5 @@
 one
 two
-tree
+three
 four
 five

Независимо от того, в каком формате в данный момент находится diff, вы можете перейти к соответствующей строке исходного файла с помощью Cc Cc. Если он не находит правильный файл, используйте Mx diff-tell-file-name,

Вы можете попробовать и установить

(setq diff-switches '("-u"))

так что ваши разногласия выходят в унифицированном формате, который немного более компактен. Если этого недостаточно, вы можете попробовать передать дополнительные флаги, чтобы уменьшить размер "контекста" (по умолчанию 3 строки до и 3 строки после).

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