【问题标题】:How Perforce command ''P4 changes" workPerforce 命令“P4 更改”如何工作
【发布时间】:2012-09-01 04:45:30
【问题描述】:

我正在开发一个应该与 Perforce 集成的应用程序。在基本 Perforce 命令的学习阶段,我有一个关于“p4 更改”如何工作的问题。一旦更改列表被提交,比如说,影响文件在

  1. '//depot/Web/content/main.css'
  2. '//depot/Tool/app/init.py'

如果我们现在发出命令:

'p4 更改 //depot/Web/...'

然后更改列表将显示在结果中。那么 Perforce 是如何管理这些信息的呢?它会分解路径并存储吗?还是做在线子串查询?

我看到 Perforce 数据库模式中有一个“公共路径”字段,在这种情况下,值应该是:

'//仓库/...'

那么在这种情况下,Perforce 是如何获取信息的呢?

【问题讨论】:

  • 对我来说似乎是个好问题。为什么投反对票?

标签: perforce changelist


【解决方案1】:

对于每个更改,Perforce 服务器都会记录哪些文件受到该更改的影响。

这是记录在服务器数据库中的关于更改列表的许多元数据之一。

“p4 describe”等命令使用该信息来查找正确的文件集。

Perforce 服务器包含一个复杂的模式匹配引擎,它可以快速搜索数据库以定位影响特定文件集的更改集,如文件模式所述。

这是服务器的核心操作,因此针对此行为进行了高度优化。

【讨论】:

  • 仍不清楚:“p4 更改”命令是否使用“公共路径”(在 db.change[x] 中也称为“root”)?
  • 感谢您的意见。如果使用“公共路径”,那么对于所有带有前缀为“公共路径”的“路径”参数的“p4更改”查询,它必须首先找到所有“可能的”更改列表与“公共路径” ,并遍历它们以检查受该更改列表影响的任何文件路径是否在作为参数提供的路径中。这应该会显着降低性能。这是大多数优化以这种方式发生的地方吗?
  • 我相信有多种优化方法,具体取决于赋予“p4 更改”的参数的详细信息。多年来,优化已经得到扩展和调整,因此如果您担心特定评论的性能,最好联系 Perforce 支持以帮助优化您的查询。
  • 公共路径用于p4更改命令,但主要是出于安全目的,而不是用于搜索。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多