2008-09-25 3 views
60

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

p4 changes -l > p4changes.txt 

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

+0

Реальное решение будет состоять в том, чтобы p4d располагал полным текстовым индексом в описаниях списков изменений (и сами исходные файлы ...). Что-то странное, что еще не попало в продукт. – Jonesome 2016-08-19 17:53:55

ответ

55

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

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

17

Я использую p4sql и запускаю запрос в базе данных «изменения». Вот perforce database schema

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

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

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

+0

Это не сработало. По какой-то причине «like» ведет себя как «=». Предположим, что описание «foo bar». например, «foo» терпит неудачу, но как «foo bar» преуспевает. Что еще более важно, они не делают весь текст описания доступным, только первые 30 символов. – raven 2008-09-25 17:52:54

+0

@raven - Символы% важны для SQL, и это должно сделать запрос. Я также не думаю, что вы правы в описании - вы должны быть в состоянии добраться до всего этого. Можете ли вы разместить свой запрос? – 2008-09-25 19:01:22

+0

@Greg Whitfield: Вы правы, я не использовал% персонажей. Запросы работают, но не очень полезны. Я проверил, что он запрашивает и отображает первые 31 символа описания. – raven 2008-09-26 18:47:11

1

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

0

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

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

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

если это сработало нормально, вы могли integrate it into the p4win tools menu.

1

Эдди на Играх отправил его Perforce Поиск 0.1 Список изменений в http://www.eddiescholtz.com/blog/archives/130

Но я, как, используя мой любимый текстовый редактор с простым: p4 изменения -s представляется // прог/материал/главная/... > temp.txt

17

p4 changes -L | grep -B 3 searchstring

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

6

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

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

Почему переадресовать в файл, когда вы можете направить выход через less и использовать less ' поиск?

p4 changes -l | less 

А затем нажмите / для запроса строки поиска. Впоследствии n перейдет к следующему матчу, и Shift + n перейдет к предыдущему.

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

Смежные вопросы