如何searchPerforce中变更列表描述的文本?

有时,我发现自己想要searchPerforce中更改列表描述的文本。 在P4V中似乎没有办法做到这一点。 我可以通过将更改命令的输出redirect到一个文件来完成…

p4 changes -l > p4changes.txt 

…(-l开关告诉它转储更改列表描述的完整文本),然后search文件,但这非常麻烦。 有没有人find更好的方法?

当提交的更改列表窗格具有焦点时,CTRL + F可让您执行任意的文本search,其中包含更改列表说明。

唯一的限制是,它只search从服务器获取的更改列表,因此您可能需要提取检索的数字。 这可以通过导航到“编辑” – >“首选项” – >“服务器数据”find的“更改列表,作业,分支映射或标签一次获取”的设置完成。

我使用p4sql并在“更改”数据库上运行查询。 这里是perforce数据库模式

查询看起来像这样(未经testing)

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

编辑:在描述中添加了p4options以返回超过31个字符。

p4 changes -L | grep -B 3 searchstring

-B 3表示在匹配的string之前显示3行,应该足以显示带有2行注释的更改ID,但可以根据需要更改它。

这是Paul的“grep”答案的Powershell版本。 再一次,它在变更描述中search指定的string,并返回前面的3行,以包含更改ID:

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

为什么redirect到一个文件,当你可以通过lesspipe道输出和使用less的search?

 p4 changes -l | less 

然后按/提示inputsearchstring。 之后, n将跳转到下一个匹配, Shift + n将跳转到前一个。

作为UnxUtils的一部分,可以使用less Windows的实现。

使用p4sql真的是有效地做你想要的唯一方法。 我不知道有任何其他的方式。 当然好处是你可以使用select语句来限制更改列表值的范围(通过date,用户等)。 你的方法会起作用,但是当你生成更多的变更表时,会很快变得麻烦。 您可以限制更改命令的范围,但不会获得p4sql的灵活性。

Eddie on Games在http://www.eddiescholtz.com/blog/archives/130发布了他的Perforce Changelist Search 0.1

但是,我喜欢使用我最喜欢的文本编辑器与简单:p4的变化-s提交/编/东西/主/ …> temp.txt

如果你仍然喜欢你的命令行,你可以写一个小的Perl脚本:

  • 将logging分隔符$ /更改为双倍换行符“\ n \ n”,以便将input过滤为ztagged p4输出的完整logging。
  • 使用args中的正则expression式扫描'/ ^ … desc /..//'部分。

用法会像'p4 -ztag changes -l | yourperlfilter.pl searchterm1 searchterm2'

如果工作正常,你可以将它集成到p4win工具菜单中 。