Perforce 流如何处理与父路径具有不同访问权限的子路径?
How do Perforce streams handle subpaths with different access than parent path?
对于 Perforce 中的流配置,存在五种访问类型(根据 documentation,按包容性从多到少的顺序):share
、isolate
、import
/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
确实是 isolate
d 是正确的。 “分支视图中没有目标文件”错误告诉我路径被排除在分支视图之外(这是 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.
这也像我预期的那样工作(基本上与经典客户端视图的工作方式相同)——后面更具体的行覆盖了前面更一般的行,所以 subfolder1
是 share
d 而 subfolder2
是 exclude
d.
对于 Perforce 中的流配置,存在五种访问类型(根据 documentation,按包容性从多到少的顺序):share
、isolate
、import
/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
确实是 isolate
d 是正确的。 “分支视图中没有目标文件”错误告诉我路径被排除在分支视图之外(这是 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.
这也像我预期的那样工作(基本上与经典客户端视图的工作方式相同)——后面更具体的行覆盖了前面更一般的行,所以 subfolder1
是 share
d 而 subfolder2
是 exclude
d.