Как искать текст списков изменений в Perforce?

Иногда я нахожусь в поиске текста списков изменений в Perforce. В P4V не существует способа сделать это. Я могу сделать это, перенаправив вывод команды changes в файл...

p4 changes -l > p4changes.txt

... (ключ -l указывает, чтобы он выгружал полный текст описаний списка изменений), а затем искал файл, но это довольно громоздко. Кто-нибудь нашел лучший способ?

Ответ 1

Когда на панели с внесенными изменениями отображается фокус, CTRL + F позволяет выполнять произвольный текстовый поиск, который включает в себя описания списков изменений.

Единственное ограничение заключается в том, что он выполняет поиск только тех списков изменений, которые были получены с сервера, поэтому вам может понадобиться восстановить номер. Это делается с помощью параметра "Количество списков изменений, заданий, сопоставлений ветвей или меток для выборки за один раз", которые можно найти, перейдя по ссылке "Редактировать- > Настройки- > Данные сервера".

Ответ 2

Я использую p4sql и запускаю запрос в базе данных "changes". Здесь привязка схемы базы данных

Запрос выглядит примерно так (untested)

select change from changes where description like '%text%' and p4options = 'longdesc'

edit: добавлено p4options для возврата более 31 символов в описание.

Ответ 3

p4 changes -L | grep -B 3 searchstring

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

Ответ 4

Вот версия Powershell ответа Paul "grep". Опять же, он ищет указанную строку в описании изменения и возвращает перед ней 3 строки, чтобы включить идентификатор изменения:

p4 changes -L | select-string "search string" -Context (3,0)

Ответ 5

Зачем перенаправлять файл, если вы можете передать вывод через less и использовать less search?

p4 changes -l | less

И затем нажмите /, чтобы вызвать строку поиска. После этого n перейдет к следующему совпадению, а Shift + n перейдет к предыдущему.

Реализация less для Windows доступна как часть UnxUtils.

Ответ 6

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

Ответ 7

Эдди на Играх опубликовал свой Perforce Changelist Search 0.1 на http://www.eddiescholtz.com/blog/archives/130

Но мне нравится использовать мой любимый текстовый редактор с простым: p4 changes -s submit//prog/stuff/main/... > temp.txt

Ответ 8

Если вы все еще любите свою командную строку, вы можете написать небольшой perl script, который:

  • изменяет разделитель записей $/to double newline "\n\n", поэтому он фильтрует ввод в полные записи ztagged p4.
  • сканирует часть '/^... desc/..//' с регулярные выражения из args.

использование будет чем-то вроде "p4 -ztag changes -l | yourperlfilter.pl searchterm1 searchterm2 '

если это сработало нормально, вы можете интегрировать его в меню инструментов p4win.