Подтвердить что ты не робот

Как сделать "hg log --verbose" показывать файлы на нескольких строках?

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

Как сделать каждое показ файла в отдельной строке?

4b9b3361

Ответ 1

Реальный способ увидеть информацию об измененных файлах - использовать hg status. Это показывает файлы, которые были изменены в версии 100:

$ hg status -c 100

Но если вы хотите иметь также сообщения журнала, то hg log, конечно, является естественной отправной точкой. К сожалению, нет встроенного коммутатора, который будет отображать один файл на строку.

Однако вывод hg log контролируется системой шаблонов, и вы можете написать для него свои собственные стили. Стиль по умолчанию здесь, и вы можете настроить его на то, что вы хотите, изменив

file = ' {file}'

к

file = '{file}\n'

Затем сохраните новый стиль как my-default.style и добавьте

[ui]
style = ~/path/to/my-default.style

в файл конфигурации. Это дает вам один файл на строку и даже работает, когда в именах файлов есть пробелы.

Я знаю одну проблему: вы теряете цвета в выводе hg log. Оказывается, Mercurial обманывает здесь! На самом деле он не использует шаблон по умолчанию, который я вам показывал при генерации вывода журнала. Он вообще не использует какую-либо систему шаблонов, он просто генерирует вывод с использованием прямого кода, так как это быстрее. Проблема в том, что расширение цвета работает только с жестко закодированным шаблоном. Когда вы переключаетесь на пользовательский шаблон и тем самым вызывают механизм шаблона, вы теряете цветной вывод.

Однако вы можете восстановить цвета, вставив коды удаления ANSI непосредственно в ваш шаблон (в Unix-подобных системах). Изменение

changeset = 'changeset:   {rev}:{node|short}\n{branches}...

к

changeset = '\033[33mchangeset:   {rev}:{node|short}\033[0m\n{branches}...

делает трюк и жестко закодирует желтую строку заголовка для набора изменений. Откорректируйте линии changeset_verbose и changeset_quiet, и у вас будет цветной вывод с вашим собственным шаблоном.

Ответ 2

Файл hg template help содержит этот камень в своих примерах.

Списки форматов, например. файлов:

$ hg log -r 0 --template "files:\n{files % ' {file}\n'}"

Это работает на Windows без перевода.

Ответ 3

Я считаю, что для этого нет встроенного способа, но немного sed (также доступен для Windows: http://gnuwin32.sourceforge.net/packages/sed.htm) может помочь:

hg log --template "Rev: {rev}:{node}\nDate: {date|isodate}\nFiles: {files}\n\n" -l 10 | sed -e '/^Files:/s/ /\n  /g'

Вывод:

Rev: 1:2538bd4661c755ccab9b68e1d5e91144f6f97d33
Date: 2011-12-20 15:47 +0100
Files:
  test1.txt

Rev: 2:853a6f3c505308c9babff5a5a2f1e09303f1689c
Date: 2011-12-20 15:44 +0100
Files:
  test2.txt
  test3.txt

Объяснение sed -e '/^Files:/s/ /\n /g':

  • /^Files:/ ищет строки, начинающиеся с "Files:", и применяет следующий поиск и заменяет только те строки
  • s/ /\n /g заменяет все строки на новую строку, а затем пробелы.

Это решение не будет работать, если имена файлов содержат пробелы.

Ответ 4

  • hg log --style changelog

ИЛИ

  • hg log --template "Description: {desc}\n" - поддерживаются такие ключевые слова, как desc, files и т.д. здесь

Ответ 5

Чтобы просмотреть все файлы, которые были изменены в версии, используйте:

hg status --change REV