2012-09-01 60 views
1

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

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

如果我们现在发出命令:

'p4的变化//库/网络/ ...'

然后变更列表将显示在结果中。那么Perforce如何管理这些信息呢?它打破了路径和存储?或者它执行在线子字符串查询吗?

我看到有在Perforce的数据库架构字段, “公共路径”,在这种情况下,该值应为:

'//库/ ......'

所以在这种情况下,Perforce如何获取信息?

+0

对我来说这似乎是一个很好的问题。为什么downvote? – user1054341

回答

2

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

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

该信息被'p4 describe'等命令用于查找正确的一组文件。

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

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

+0

仍然不清楚:“p4 changes”命令使用的是“公共路径”(a.k.a. db.change [x]中的“root”)吗? – user1054341

+0

感谢您的输入。如果使用“公共路径”,那么对于所有具有“路径”参数且其前缀为“公共路径”的“p4变更”查询,首先必须找到具有该“公共路径”的所有“可能” ,然后遍历它们来检查受更改列表影响的文件路径是否位于作为参数提供的路径中。这应该会显着降低性能。大多数优化是以这种方式发生的吗? –

+0

我相信,根据提供给'p4变更'的参数的细节,有各种优化。多年来优化一直在扩展和调整,所以如果您担心特定评论的表现,最好的办法就是与Perforce支持部门联系以协助优化您的查询。 –

相关问题