perforce是否跟踪变更集所特有的增量,还是只存储整个文件?

时间:2010-11-24 22:14:47

标签: perforce branching-and-merging

我尝试将开发人员在工作分支中所做的一些工作合并到一个稳定的分支。由于STABLE和HEAD分支的共同祖先是分开的,因此至少有十几个变更集更改了文件a,b和c。

我预计,由于这个开发人员在文件a,b和c的每一个中更改了五行,当我从HEAD集成到STABLE分支时,我会在我的待定changset中进行更改,然后我可以查看并提交。

相反,它似乎已经对文件A发生了每一次更改,因为它们已经分支,并应用了我同事工作副本中也存在的所有这些更改。

换句话说,perforce变更集中似乎没有记录,我的同事实际上发生了变化,而不是之前的文件。

如果我浏览提交的变更集,我可以看到我的同事的文件版本和前一版本之间的区别。但是,这似乎并不能决定合并的内容。

变更集是否意味着“在文件的rev X和修订版X + 1之间进行了一系列更改”? 任何人都可以帮助我理解“集成变更集”意味着什么,事实上,Perforce似乎不跟踪变化,它跟踪文件。

完全有可能我做错了什么,并且会欣赏任何关于如何在Perforce工作分支和稳定分支之间准确安全地合并的指针,没有你不想得到的东西整合到稳定的分支集成。似乎无论实际在产品中做出的变化有多么简单,合并对我来说实际上并不起作用。

2 个答案:

答案 0 :(得分:1)

Perforce text 文件的更改保存为增量(每次提交更改时,二进制文件都会全部保存)。听起来您在集成过程中没有正确限制修订范围。

你说工作分支已经“......由于...分支被分开了,至少已被十几个变更集改变了。”我们称他们为改变名单1-12。如果我理解正确,那么您正在尝试整合仅在其中一个更改列表中进行的修改,而不是全部修改。

在简单的集成操作期间,Perforce将假设您要集成自分支以来提交的所有更改。如果您只想要这些更改的子集,则必须指定修订范围。因此,如果您只想集成更改列表11和12之间发生的更改,则应指定屏幕截图中显示的修订范围。 (注意:修订范围是包含的,因此指定11-12的范围,就像我在此屏幕截图中所做的那样,实际上将包括更改列表11 12中的更改。如果您只想集成更改在更改列表12中,在修订范围的两个字段中输入12。)

请注意,出现的不可避免的冲突可能难以解决,具体取决于分支机构的分歧程度和变化的性质。

alt text

答案 1 :(得分:0)

您能否更具体地说明如何进行整合?我的猜测是,您可能已将所有更改集成到该更改列表中,而不仅仅是该更改列表。如果是这样,您只需要指定与集成的上限和下限相同的更改列表。

在可视化客户端中这很容易,但我不确定您需要使用的确切命令行开关。