如何在Perforce中搜索变更列表描述的文本?

如何在Perforce中搜索变更列表描述的文本?,perforce,Perforce,有时,我发现自己想在Perforce中搜索变更列表描述的文本。在P4V中似乎没有这样做的方法。我可以将changes命令的输出重定向到一个文件 p4 changes -l > p4changes.txt …(l开关告诉它转储变更列表描述的全文),然后搜索文件,但这相当麻烦。有人找到了更好的方法吗?我使用“更改”数据库并运行查询。这是我的建议 查询看起来像这样(未测试) 编辑:添加了P4选项以在说明中返回31个以上的字符。使用p4sql确实是有效执行所需操作的唯一方法。我不知道还有别的办法

有时,我发现自己想在Perforce中搜索变更列表描述的文本。在P4V中似乎没有这样做的方法。我可以将changes命令的输出重定向到一个文件

p4 changes -l > p4changes.txt
…(l开关告诉它转储变更列表描述的全文),然后搜索文件,但这相当麻烦。有人找到了更好的方法吗?

我使用“更改”数据库并运行查询。这是我的建议

查询看起来像这样(未测试)


编辑:添加了P4选项以在说明中返回31个以上的字符。

使用p4sql确实是有效执行所需操作的唯一方法。我不知道还有别的办法。当然,好处是您可以使用select语句来限制变更列表值的范围(通过日期、用户等)。您的方法会起作用,但在生成更多变更列表时会很快变得很麻烦。您可以限制changes命令的范围,但无法获得p4sql的灵活性

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

  • 将记录分隔符$/更改为 双换行符“\n\n”以便进行筛选 将数据输入到完整记录中 Ztaged p4输出
  • 扫描 “/^…”。。。desc/./'部分带有 args中的正则表达式
用法类似于'p4-ztag changes-l | yourperlfilter.pl searchterm1 searchterm2'


如果工作正常,您可以。

当提交的变更列表窗格具有焦点时,CTRL+F允许您执行任意文本搜索,其中包括变更列表描述


唯一的限制是它只搜索从服务器获取的变更列表,因此您可能需要增加检索到的编号。这是通过“一次获取的变更列表、作业、分支映射或标签的数量”设置完成的,可以通过导航到“编辑->首选项->服务器数据”找到该设置。

Eddie on Games将其Performce变更列表搜索0.1发布在

但是,我确实喜欢将我最喜欢的文本编辑器与简单的:
p4更改-已提交//prog/stuff/main/..>temp.txt

p4更改-L | grep-b3搜索字符串


-b3
表示在匹配字符串前显示3行,应该足以显示带有2行注释的更改id,但您可以根据需要进行更改。

以下是Paul“grep”答案的Powershell版本。同样,它在变更描述中搜索指定的字符串,并返回其前面的3行,以包括变更id:

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

当您可以通过
less
管道输出并使用
less
的搜索时,为什么要重定向到文件

p4 changes -l | less
然后按/以提示输入搜索字符串。之后,n将跳转到下一场比赛,Shift+n将跳转到上一场比赛


Windows的
less
实现作为。

的一部分提供,但不起作用。出于某种原因,“like”的行为类似于“=”。假设描述是“foobar”。像“foo”一样失败,但像“foobar”一样成功。更重要的是,它们不能提供描述的全部文本,只有前30个字符。@raven-%字符对SQL很重要,应该使查询工作。我也不认为你的描述是正确的-你应该能够了解所有这些。你能发布你的查询吗?@Greg Whitfield:你说得对,我没有使用%字符。查询工作正常,但没有多大用处。我确认它只查询并显示描述的前31个字符。@raven-更新了查询以包括p4options='longdesc'。这应该会返回完整的描述。不过,p4options会使查询速度稍慢。很好。尝试了这个,它会跳到选择每个匹配的变更列表。真的很方便。这真的帮了我的忙。谢谢!我希望我能再次投票。我忘了,今天又找到了这个答案,但我看到我已经投了更高的票。对我来说,当p4v没有包含这样有用的搜索时,情况很糟糕。让我们想象一下当您的CL非常陈旧时的情形(在高度开发的应用程序中大约两年多)。通过这种方式您将找不到它。0.2版也是如此。代码托管在google代码上:真正的解决方案是p4d在变更列表描述(以及源文件本身)上有一个全文索引,这有点奇怪,但还没有进入产品中。如果你已经没有那么多,这可能是最用户友好的选择。我已经用msys2安装了它,所以很容易安装。
p4 changes -l | less