如何在Perforce中组合两个文件,以便保留两个文件的历史记录?

时间:2014-12-10 22:32:19

标签: perforce

我有一个perforce存储库,其中包含:

depot
 |-- wug.h
 |-- wug1.cpp
 |-- wug2.cpp
 |-- wug3.cpp

wug.h包含一个类声明,该类的定义通过其他三个文件传播。我想将所有文件合并到一个文件中,而不会丢失其perforce历史记录。我已经查看了大多数perforce命令的文档,并且不知道我是如何做到的。任何人都可以提出任何建议吗?

1 个答案:

答案 0 :(得分:4)

如果你想创建一个名为" wug.cpp"的新文件。包含所有其他内容,在元数据中留下这个记录,并在一个更改列表中完成所有操作,您可以这样做:

p4 merge wug1.cpp wug.cpp
p4 resolve (choose 'at', to branch the file)
p4 merge wug2.cpp wug.cpp
p4 resolve (choose 'm' to invoke perforce's merge tool, then 'ae' to accept)
p4 merge wug3.cpp wug.cpp
p4 resolve (choose 'm' to invoke perforce's merge tool, then 'ae' to accept)
p4 delete wug1.cpp wug2.cpp wug3.cpp
p4 submit

" p4 resolve"你需要进行毫无根据的合并来编辑所有文件,因为没有一个共同的基础可以用作实际合并它们的参考点。对于没有共同祖先的文件,Perforce的合并工具默认会以这种方式运行,并且应该(或多或少)提供由一个文件的内容组成的合并输出,后跟另一个文件的内容,这是更多 - 或者更不适合原样。

在最终解决之后,您可以进行编辑(首先使用p4 edit wug.cpp打开文件进行编辑),例如将include指令移到文件顶部,删除重复或无关的代码或注释等等清洁工作。

这具有保留文件内容历史记录的预期效果,以便命令
p4 annotate -I wug.cpp正确显示影响每一行的最新更改。