perforce合并文件分支到覆盖工作区

时间:2013-12-05 01:17:29

标签: merge perforce

假设我有这两个目录

/root/subdir1
/root/subdir2

和带有叠加层的perforce工作区,例如

Root:
  /root
View:
  //depot/project/...  //workspace/...
  +//depot/project/subdir2/... //workspace/subdir1

其中 subdir2 重叠在 subdir1 之上。

在某些时候,我将 subdir1 中的文件分支(集成)到 subdir2 ,并且这两个文件不断被更改并提交给perforce,在重叠的工作区上,因此在 subdir2 下或在另一个非重叠的工作区上,从而更改 subdir1 中的文件。

我现在如何合并(集成)文件,以便只存在非重叠工作空间上的文件?

如果我合并到非重叠工作区并从重叠的工作区中删除,则该文件不再显示在重叠的工作区中。如果我不删除它,合并前的版本将保留在重叠的工作区中。

2 个答案:

答案 0 :(得分:0)

对于这样的任务,使用在其视图映射中没有覆盖线的工作区会更容易。然后,哪个存储库文件对应于哪个本地文件并不那么令人困惑,您可以引用所有不同的存储库文件,而不处理叠加映射引入的文件名模糊。

另外,看看'p4 where';它为您提供了大量有关工作区中特定文件如何映射到其相应存储库位置的信息。

答案 1 :(得分:0)

这是在工作区视图规范中使用叠加层的一个缺点:顺序很重要。

如果您在应用叠加层时,已在此叠加层中删除了一个文件,在该文件所在的文件夹之上,则现有文件将永远不会显示。

你无能为力,因为这是填充文件夹的强制逻辑。

您可以尝试摆弄视图路径:

//depot/project/...  //workspace/...
+//depot/project/subdir2/... //workspace/subdir1
+//depot/project/subdir1/... //workspace/subdir1

您将看到您的集成文件。

叠加效果很好,但是移动/删除文件会使它们陷入困境。 请注意,如果在从目录移动文件时重命名该文件,则不会出现问题。即如果从以下位置移动/重命名文件:

//depot/project/subdir2/my_file_in_dir2 

//depot/project/subdir1/my_file_in_dir1

然后应用你的叠加层:

//depot/project/...  //workspace/...
+//depot/project/subdir2/... //workspace/subdir1

没关系,因为他们不再拥有相同的名字了。