2010-03-23 84 views
2

我在Perforce中有一个很大的源文件,该文件已被拆分为分支中的几个较小的文件。我想创建一个可以处理这个问题的分支视图,但perforce(2009.1)只能看到多个文件中的最后一个。例如,我创建:已拆分为多个文件的文件的分支视图

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 

后来我分裂大文件成更小:

p4 integrate //depot/new/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_three.c 

然后每个那些(包括//depot/new/huge_file.c)编辑和提交。

现在我修改//depot/original/huge_file.c,我想这些更改集成到//depot/new。如果我手动这样做,它工作正常:

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_three.c 

但我不想这样做每次我整合 - 这种事情属于分支视图。

不幸的是,如果分支视图多次包含相同的源文件,则后续行将覆盖较早的行。我怎样才能创建一个分支观点是这样的:

//depot/original/huge_file.c //depot/new/huge_file.c 
//depot/original/huge_file.c //depot/new/small_file_one.c 
//depot/original/huge_file.c //depot/new/small_file_two.c 
//depot/original/huge_file.c //depot/new/small_file_three.c 

当我使用集成这个分支规范,我只得到small_file_three.c集成。

回答

3

我会建议你使用一个overlay mapping(一种手段,迫使待处理的规范的所有行),但网页的快速细读把对胡说:

覆盖映射只能在 客户端视图上进行,并且不能与 分支视图一起使用。

它看起来像你必须脚本它。 This page有一些可能对您有用的更多信息(并强调这一点无法完成,“Perforce不支持1:多文件映射”,)。

+0

另一个可能的解决方案是我用Perforce完成的,它有多个分支视图来指定每个不同的新文件。这很笨拙,但是当我做了很多与此类似的分割时,结果工作得很好,因为您可以在不同的源文件中重复使用相同的分支规格。 – 2010-03-30 16:34:34

0

只是为了利益的问题,但为什么呢?

为什么不huge_file.c不Perforce公司,然后改变你的构建系统组装出来的三个小,源控制,源文件。如果你想要真正的简单,甚至只要#include它们。

换句话说,我想知道如果your're试图使用你想要做任务了错误的工具?

+0

源文件huge_file.c已经在Perforce中,并且已经成为几个独立事物的聚合体,这些独立事物确实属于不同的编译单元。我将它分解为一种清理源代码的方式。现在每个源文件都更小,更易于管理。 – ScottJ 2010-03-25 17:23:02

+0

我还应该解释一下// depot/original是该产品的旧版本,并且该分支上没有新的开发,只有错误修复。新的开发是在// depot/new。因此需要在P4中整合两者。 – ScottJ 2010-03-25 17:26:20