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

时间:2008-09-25 15:44:09

标签: perforce

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

p4 changes -l > p4changes.txt

...(-l开关告诉它转储更改列表描述的全文)然后搜索文件,但这很麻烦。有没有人找到更好的方法?

8 个答案:

答案 0 :(得分:61)

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

唯一的限制是它只搜索从服务器获取的更改列表,因此您可能需要更新检索到的数量。这是通过“更改列表,作业,分支映射或一次提取的标签”设置来完成的,可以通过导航到Edit-> Preferences-> Server Data找到。

答案 1 :(得分:18)

p4 changes -L | grep -B 3 searchstring

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

答案 2 :(得分:17)

我使用p4sql并对“更改”数据库运行查询。这是perforce database schema

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

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

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

答案 3 :(得分:7)

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

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

答案 4 :(得分:3)

为什么在通过less管道输出并使用less的搜索时重定向到文件?

p4 changes -l | less

然后按 / 以提示搜索字符串。之后, n 将跳转到下一个匹配, Shift + n 将跳转到上一个匹配。

Windows less的实施是UnxUtils的一部分。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

Eddie on Games在http://www.eddiescholtz.com/blog/archives/130

发布了他的Perforce Changelist Search 0.1

但是,我喜欢使用我最喜欢的文本编辑器: p4更改-s已提交// prog / stuff / main / ...> temp.txt

答案 7 :(得分:0)

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

  • 将记录分隔符$ /更改为 双换行“\ n \ n”所以它过滤 输入完整的记录 ztagged p4输出。
  • 扫描 '/ ^ ... desc /..//'部分用 来自args的正则表达式。

用法类似于'p4 -ztag changes -l | yourperlfilter.pl searchterm1 searchterm2'

如果可以,你可以integrate it into the p4win tools menu