Как искать текст списков изменений в 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.