0

我在 Perforce 中看到了我无法解释的行为。我采用了主干的一个分支,并定期提交我的更改并偶尔从主干合并到我的分支,以确保在我重新集成时不会发生重大冲突。

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

当我提交所有这些更改时,差异显示的文件完全符合我的预期。提交更改列表后,提交的更改与差异窗口中显示的不同。相反,自合并/集成以来我所做的更改不存在。在服务器和我在主干上的本地副本之间进行比较,在代码审查后对相同文件进行了所有更改。因此,我不得不进行第二次提交来修复损坏的构建。

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

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

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

4

2 回答 2

4

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

于 2012-06-12T13:43:44.147 回答
0

您在主干副本上直接编辑内容时犯了第一个错误。始终使用任务分支。它可能不会导致您看到的问题,但如果您弄乱了任务分支,它不会破坏构建。查看本地主干副本时,请确保已从仓库刷新它。如果您的主干文件的本地副本已过期,您将获得黄色的小三角形,在您的主干副本上编辑和提交过期文件必然会导致“奇怪”行为。

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

主干一份,每个任务分支一份。

于 2012-06-12T09:41:51.820 回答