如何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到一个文件,当你可以通过less
pipe道输出和使用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工具菜单中 。