【问题标题】:How do you search the text of changelist descriptions in Perforce?您如何在 Perforce 中搜索更改列表描述的文本?
【发布时间】:2010-09-13 03:25:33
【问题描述】:

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

p4 changes -l > p4changes.txt

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

【问题讨论】:

  • 真正的解决方案是让 p4d 在更改列表描述(以及源文件本身......)上有一个全文索引,这有点奇怪,还没有进入产品。跨度>

标签: perforce


【解决方案1】:

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

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

【讨论】:

  • 不错。试过了,它会跳到选择每个匹配的更改列表。真的很方便。
  • 这真的帮助了我。非常感谢!
  • 我希望我能再次投票。我今天忘记并找到了这个答案,但看到我已经投票了。
  • 对我来说,当 p4v 不包含如此有用的搜索时,情况很糟糕。让我们想象一下您的 CL 非常老的情况(在高度开发的应用程序中超过两年)。这样你就找不到了。
【解决方案2】:

p4 changes -L | grep -B 3 searchstring

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

    • 那行不通。出于某种原因,“like”的行为类似于“=”。假设描述是“foo bar”。 like 'foo' 失败,但 like 'foo bar' 成功。更重要的是,它们不会提供描述的整个文本,只提供前 30 个字符。
    • @raven - % 字符对 SQL 很重要,并且应该使查询工作。我也不认为您的描述是正确的-您应该能够了解所有内容。您可以发布您的查询吗?
    • @Greg Whitfield:你说得对,我没有使用 % 字符。查询正在工作,但没有多大用处。我确认它只是查询和显示描述的前 31 个字符。
    • @raven - 更新了查询以包含 p4options='longdesc'。这应该返回完整的描述。
    • p4options 使查询速度有点慢。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      p4 changes -l | less
      

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

      less 的 Windows 实现作为 UnxUtils 的一部分提供。

      【讨论】:

      • 这可能是对用户最友好的选项,前提是您已经少了一些。我已经用 msys2 安装了它,所以很容易拉起来。
      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

        【解决方案8】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-12
          相关资源
          最近更新 更多