如何在版本控制系统中连接两个文件

时间:2010-12-13 17:37:31

标签: version-control refactoring perforce

我正在对包含许多源文件的C ++项目进行重构。 当前的重构步骤包括将两个文件(例如,x.cppy.cpp)合并为一个较大的文件(例如,xy.cpp),其中一些代码被抛出,并添加了一些代码

我想告诉我的版本控制系统(Perforce,在我的情况下)生成的文件基于前两个文件,因此将来,当我查看xy.cpp的修订历史时,我也是查看对x.cppy.cpp所做的所有更改。

Perforce支持重命名文件,因此如果y.cpp不存在,我会知道该怎么做。 Perforce还支持合并,所以如果我有2个不同版本的xy.cpp,它可以从中创建一个版本。由此,我发现加入两个不同的文件是可能的(不确定);但是,我搜索了一些关于Perforce和其他源代码控制系统的文档,并没有找到任何有用的东西。

我正在努力做什么呢? 它是否有一个传统的名称(搜索“合并”或“加入”的文档是不成功的)?

3 个答案:

答案 0 :(得分:3)

您可以尝试与baseless merges(命令行上的-i)集成。如果我正确理解文档(我自己从未使用过它),这将强制集成两个文件。然后,您需要解决您选择的集成问题,从而产生与您想象的文件相近的内容。

执行此操作后,我假设Perforce历史记录将显示其集成历史记录中不相关文件的集成,允许您在需要时跟踪该文件。

答案 1 :(得分:1)

我不认为它可以在经典的VCS中完成 这些版本控制系统有两种版本(幻灯片50 + Getting git by Scott Chacon):

  • 基于增量的历史记录:您获取一个文件,并记录其增量。在这种情况下,作为文件的单位,您无法将其历史记录与另一个文件相关联。

  • 基于DAG的历史记录:您获取一个内容并记录其修补程序。在这种情况下,文件本身可以变化(可以随意重命名/移动),它可以是另外两个内容的结果(因此它接近你想要的结果)......但仍然在< em>一个文件(内容来自其DAG的不同分支)。

alt text

答案 2 :(得分:1)

简单的部分就是:

p4 edit x.cpp y.cpp
p4 move x.cpp xy.cpp
p4 move y.cpp xy.cpp

然后棘手的部分就会解决y.cpp的移动并进行重构。但这将告诉Perforce文件已合并。