Perforce如何处理合并/集成后但在提交之前所做的更改?

时间:2012-06-12 09:33:29

标签: merge perforce

我在Perforce中看到过无法解释的行为。我采取了行李箱的一个分支,并定期进行此更改,偶尔从行李箱合并到我的分支机构,以确保在重新集成时不会发生重大冲突。

完成此工作后,我使用Perforce Merge / Integrate选项将更改应用于主干。发送这些更改以进行代码审查后,我对主干进行了一些更改。此时,没有任何更改已提交到主干。

当我去提交所有这些更改时,差异显示文件完全如我所料。提交更改列表后,提交的更改与diff窗口中显示的更改不同。相反,我在Merge / Integrate之后所做的更改并不存在。在服务器和主干上的本地副本之间进行差异,在代码审查之后对相同文件进行了所有更改。因此,我不得不做第二次提交来修复破坏的构建。

我很困惑这是怎么发生的,因为我认为Perforce只保留了客户端上每个文件的一个本地副本?

即使有一个标志显示文件已被篡改,它提交的文件在哪里?它肯定在提交窗口中显示了主干路径,但我想它可以从分支中获取文件?

另一个问题是,在使用Perforce版本控制时,我应该如何最好地处理上述场景?

2 个答案:

答案 0 :(得分:4)

我们所犯的一个错误是(a)将文件从一个分支集成到另一个分支,(b)将其解析为“接受合并”,(c)在(d)提交之前对文件进行本地更改。如果在步骤(b)之后和步骤(c)之前未明确打开要编辑的文件,则服务器不知道您的本地更改。

答案 1 :(得分:0)

你第一次错误地直接在你的行李箱副本上编辑了东西。始终使用任务分支。它可能不会导致您看到的问题,但如果您搞砸了您的任务分支,它就不会破坏构建。查看当地的行李箱副本时,请确保已从库中刷新。如果你的中继文件的本地副本已经过时,你会得到一些黄色三角形,编辑并在你的主干副本上提交一个过时文件肯定会导致“奇怪”的行为。

  

我很困惑这是怎么发生的,因为我认为Perforce只保留了客户端上每个文件的一个本地副本?

一个中继副本,每个任务分支一个副本。