您的客户端视图定义了哪些 depot 文件映射到您的工作区,以及它们映射到的位置。如果您的客户端视图如下所示:
Root: C:\Perforce
View:
//apples/... //your-client/apples/...
//pears/... //your-client/pears/...
apples 和 pears depot 都映射到您的工作区,如下所示:
//apples -> C:\Perforce\apples
//pears -> C:\Perforce\pears
如果您尝试添加一个不在这两个位置的本地文件,您将收到错误消息:
C:\Perforce>p4 add gravenstein.jpg
gravenstein.jpg - file(s) not in client view.
这是因为根据您的观点,该文件不属于任何一个仓库。您需要将文件放在您已映射的位置,以便 Perforce 可以确定它进入哪个仓库(以及哪个目录)。
C:\Perforce>move gravenstein.jpg apples
1 file(s) moved.
C:\Perforce>p4 add apples\gravenstein.jpg
//apples/gravenstein.jpg#1 - opened for add
在您的评论中,您提到删除“多余的部分”。假设您将视图更改为:
Root: C:\Perforce
View:
//apples/... //your-client/apples/...
//pears/... //your-client/...
现在您的客户端根目录直接映射到pears depot,而apples depot 不再映射到任何地方!
C:\Perforce>p4 add pippin.jpg
//pears/pippin.jpg#1 - opened for add
C:\Perforce>p4 add apples\honeycrisp.jpg
//pears/apples/honeycrisp.jpg#1 - opened for add
这是因为后面的行总是优先。通过翻转视图行的顺序,您可以使 大部分 工作区映射到 pears,但本地 apples 目录有一个例外:
View:
//pears/... //your-client/...
//apples/... //your-client/apples/...
C:\Perforce>p4 add bartlett.jpg
//pears/bartlett.jpg#1 - opened for add
C:\Perforce>p4 add apples\granny_smith.jpg
//apples/granny_smith.jpg#1 - opened for add
但是,我通常建议将并行库路径(例如两个顶级库)由两个并行的本地目录(默认)表示,而不是将它们相互嵌套——这样更容易推理什么如果 depot 和工作空间尽可能相互镜像,则文件将放在哪里。请记住,您需要将本地文件放在要添加它们的软件仓库所在的目录中。