1

关于 p4 覆盖映射的几个问题。

如果有一个覆盖客户端视图:

  //depot/dir1/...  //ws/build/...
  +//depot/dir2/... //ws/build/...
  1. 是否可以禁止添加文件//depot/dir2

  2. 如何指定p4 add命令的目标是//depot/dir1or //depot/dir2

4

1 回答 1

1

当覆盖导致多个库路径映射一个客户端路径时,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;如果您想让这成为所有用户的全球政策,那将是更好的解决方案。

于 2019-09-22T15:24:57.067 回答