2

我在perforce提交的文件中遇到了奇怪的行为,之后p4 integrate

设想

Repo 包含C#代码和内置的DLL. 我希望将一个变更集从一个分支集成到另一个分支,所以我遵循我刚才讨论过的步骤

.cs文件没有抱怨。如果在 中存在解决冲突DLL,我会选择其中的一个Accept SourceAccept Target不太在意。DLL原因是,我总是在提交之前重建

问题

DLL本地工作空间中构建并反映在变更集中的内容是正确的。我在本地对其进行了测试并执行了p4 submit. 但令我惊讶的是,DLL提交的不是我建造的。而是提交了来自另一个分支的那个

混乱

我认为perforce,当在变更集中打开文件时,总是会提交最新的(本地)副本。这就是为什么如果报告有冲突,我不会太在意DLL

这不是正确的吗?

为什么提交的文件与我的工作区版本不同?

4

1 回答 1

1

当您“接受源”时,您正在记录您希望目标文件是源文件的精确副本;因此,如果您提交文件,它甚至不会从工作区传输(为了节省时间)——相反,它只是在服务器端复制。如果您篡改了工作区文件,这会导致您描述的工作区现在与软件仓库不一致的情况,就像您修改了未打开以供编辑的文件一样。

如果您使用-t标志提交(用于“篡改检查”),它将根据您选择的解决选项通过比较您的工作区中的内容与您的工作区中的内容来检查被篡改的文件:

C:\Perforce\test\integ>p4 integ source target
//depot/integ/target#2 - integrate from //depot/integ/source#3

C:\Perforce\test\integ>p4 resolve -at
c:\Perforce\test\integ\target - vs //depot/integ/source#3
//Samwise-dvcs-1509687817/integ/target - copy from //depot/integ/source

C:\Perforce\test\integ>echo tampertampertamper >> target

C:\Perforce\test\integ>p4 submit -t -d "submitting tampered file"
Submitting change 190.
Locking 1 files ...
integrate //depot/integ/target#3
//Samwise-dvcs-1509687817/integ/target tampered with after resolve - edit or revert.
Submit aborted -- fix problems then use 'p4 submit -c 190'.
Some file(s) could not be transferred from client.

如果您p4 edit是文件,它会从 pure 更改copyedit,并且将从工作区而不是源文件中读取:

C:\Perforce\test\integ>p4 edit target
//depot/integ/target#2 - reopened for edit

C:\Perforce\test\integ>p4 submit -c 190
Submitting change 190.
edit //depot/integ/target#3
Change 190 submitted.
于 2020-08-11T01:32:45.193 回答