关于 p4 覆盖映射的几个问题。
如果有一个覆盖客户端视图:
//depot/dir1/... //ws/build/...
+//depot/dir2/... //ws/build/...
是否可以禁止添加文件
//depot/dir2
?如何指定
p4 add
命令的目标是//depot/dir1
or//depot/dir2
?
关于 p4 覆盖映射的几个问题。
如果有一个覆盖客户端视图:
//depot/dir1/... //ws/build/...
+//depot/dir2/... //ws/build/...
是否可以禁止添加文件//depot/dir2
?
如何指定p4 add
命令的目标是//depot/dir1
or //depot/dir2
?
当覆盖导致多个库路径映射一个客户端路径时,a p4 add
(在客户端语法中)的默认值是最后一个映射。如果您指定库路径,则使用该路径:
C:\Perforce\test\depot>p4 where ...
//depot/dir1/... //classic/... c:\Perforce\test\depot\...
+//depot/dir2/... //classic/... c:\Perforce\test\depot\...
C:\Perforce\test\depot>p4 add -n foo
//depot/dir2/foo#1 - opened for add
C:\Perforce\test\depot>p4 add -n //depot/dir1/foo
//depot/dir1/foo#1 - opened for add
因此,只需翻转映射线的顺序可能会给您想要的效果(例如,您可以dir1
通过在映射中最后指定它来设置默认值)。仍然可以dir2
显式添加文件,但这不太可能是偶然发生的。
如果您想在客户端中指定dir2
只读路径并且无法向其中添加文件,则ChangeView
可以使用 (因为您在 ChangeView 中映射的任何内容都会自动设为只读):
C:\Perforce\test\depot>p4 client -o | tail -n3
ChangeView:
//depot/dir2/...@now
C:\Perforce\test\depot>p4 add -n //depot/dir2/foo
//classic/foo - can't add file that is restricted by client's ChangeView mapping
C:\Perforce\test\depot>p4 add -n //depot/dir1/foo
//depot/dir1/foo#1 - opened for add
在此示例中,我将@now
其用作修订版,ChangeView
因为我实际上并不想限制版本;我只想将路径的副作用限制为只读操作。
使路径只读的另一种方法是通过删除write
权限p4 protect
;如果您想让这成为所有用户的全球政策,那将是更好的解决方案。