Perforce 流如何处理与父路径具有不同访问权限的子路径?

How do Perforce streams handle subpaths with different access than parent path?

对于 Perforce 中的流配置,存在五种访问类型(根据 documentation,按包容性从多到少的顺序):shareisolateimport/import+, exclude。它们被逐行放置在配置中,像这样:

share folder1/...
isolate folder2/...

是否可以覆盖对子文件夹的访问权限?像这样:

share folder/...
isolate folder/subfolder1/...

这样一来,folder/subfolder1/... 将是 isolate-d,但 folder/subfolder2/... 和所有其他人将是 share-d?否则,包含所有单独的子文件夹似乎需要大量手动工作,尤其是在开发过程中添加它们时。

如果这可行,规则是什么?后面的行是否覆盖前面的行?

还是限制性更强的访问线路覆盖限制性更小的线路(即可以 share 父文件夹,isolate 子文件夹,但不是其他方式)?例如。有点像

exclude folder/...
share folder/subfolder1/...

也可以吗?

我们来试试吧。如果我将流路径更改为:

Paths:
        share folder/...
        isolate folder/subfolder1/...

这是我尝试合并独立文件夹内外的路径时得到的结果:

C:\Perforce\test>p4 merge -n folder/subfolder1/...
folder/subfolder1/... - no target file(s) in branch view.

C:\Perforce\test>p4 merge -n folder/subfolder2/...
No such file(s).

这告诉我 subfolder1 确实是 isolated 是正确的。 “分支视图中没有目标文件”错误告诉我路径被排除在分支视图之外(这是 isolate 的功能),而“没有这样的文件”让我知道唯一的原因没有什么可以合并的,因为我没有费心去那里实际添加任何文件。

让我们试试另一个例子,看看它是如何工作的。将我的路径更改为:

Paths:
        exclude folder/...
        share folder/subfolder1/...

我可以用p4 sync做一个类似的实验:

C:\Perforce\test>p4 sync -n folder/subfolder1/...
folder/subfolder1/... - no such file(s).

C:\Perforce\test>p4 sync -n folder/subfolder2/...
folder/subfolder2/... - file(s) not in client view.

这也像我预期的那样工作(基本上与经典客户端视图的工作方式相同)——后面更具体的行覆盖了前面更一般的行,所以 subfolder1shared 而 subfolder2excluded.