我正在尝试将一个分支与多个已移动的文件集成。它们没有在目标分支中修改,但显示为冲突。单击“接受源”时,文件会从冲突对话框中静默消失,但仍然在更改列表中标记为冲突。我可以解决此问题的一种方法是添加 -Di 标志,但这对我的团队来说是一个很大的禁忌。我还尝试通过命令行进行 p4 解析,结果相同(没有错误或任何问题,但没有解决任何问题)。
发生了什么事以及如何解决保留移动历史记录?
做:
p4 resolve -as
Run Code Online (Sandbox Code Playgroud)
从命令行。在绝大多数情况下,这就是您需要做的全部;它告诉解析接受相对于基础的更改(这意味着在目标未更改的情况下接受源)。
(更新以包含评论中的附加信息)
如果执行此操作后出现如下错误:
无法移动(打开以删除);必须接受其他解析或忽略
这意味着该文件已在源中移动(这意味着通常 aresolve -as
会移动工作区文件以匹配它),但工作区中的文件无法移动,因为它已经打开以供删除(您无法移动已删除的文件)。如果您移动文件、删除文件,然后尝试独立解决这两个操作(但中间不提交),则这种情况非常罕见。在这种情况下,您可能想通过执行以下操作来专门“忽略”移动解析(如错误消息所示):
p4 resolve -ay
Run Code Online (Sandbox Code Playgroud)
如果您以某种方式使工作文件进入不良状态(也许您在设置集成之前运行了随机命令,并且工作区未处于干净状态),并且无法弄清楚您是如何到达这里的或没有当您只想进行基本集成并忘记之前正在做的事情时,有兴趣进行取证,您总是可以像这样重新开始:
p4 revert FILE
p4 integrate -b BRANCH FILE
p4 resolve -as
Run Code Online (Sandbox Code Playgroud)
如果您有一个文件在源中被移动然后被删除,则这两个操作不可能在目标中的单个更改列表中表示,因此默认情况是忽略移动并接受删除(理论上)由于文件无论如何都会被删除,因此删除位置并不特别重要):
C:\Perforce\test\movedel>p4 integ A/... B/...
//stream/main/movedel/B/foo#1 - integrate from //stream/main/movedel/A/bar#1,#2 (remapped from //stream/main/movedel/B/bar)
C:\Perforce\test\movedel>p4 resolve -as
c:\Perforce\test\movedel\B\foo - resolving move to //stream/main/movedel/B/bar
//Samwise-dvcs-1509687817/movedel/B/foo - ignored //stream/main/movedel/B/bar
c:\Perforce\test\movedel\B\foo - resolving delete from //stream/main/movedel/A/bar#1,#2
//Samwise-dvcs-1509687817/movedel/B/foo - delete from //stream/main/movedel/A/bar
Run Code Online (Sandbox Code Playgroud)
请注意,在resolving move
我们看到 a后ignored
和在resolving delete
我们看到delete
. 另请注意, 的历史记录B/foo
链接到A/bar
,其中包含移动的历史记录,因此历史记录不会“丢失”,只是不会重复。
如果您确实想要将移动历史记录从源复制到目标(以便独立于源查看的目标将文件显示为已移动然后删除),则需要在多个提交中进行集成:
C:\Perforce\test\movedel>p4 revert ...
//stream/main/movedel/B/foo#1 - was delete, reverted
C:\Perforce\test\movedel>p4 changes A/...
Change 316 on 2022/12/08 by Samwise@Samwise-dvcs-1509687817 'delete bar'
Change 315 on 2022/12/08 by Samwise@Samwise-dvcs-1509687817 'move foo to bar'
Change 313 on 2022/12/08 by Samwise@Samwise-dvcs-1509687817 'add foo'
C:\Perforce\test\movedel>p4 integ A/...@315 B/...
//stream/main/movedel/B/foo#1 - integrate from //stream/main/movedel/A/bar#1 (remapped from //stream/main/movedel/B/bar)
C:\Perforce\test\movedel>p4 resolve -as
c:\Perforce\test\movedel\B\foo - merging //stream/main/movedel/A/bar#1
Diff chunks: 0 yours + 0 theirs + 0 both + 0 conflicting
//Samwise-dvcs-1509687817/movedel/B/foo - copy from //stream/main/movedel/A/bar
c:\Perforce\test\movedel\B\foo - resolving move to //stream/main/movedel/B/bar
//stream/main/movedel/B/bar - moved from //stream/main/movedel/B/foo
C:\Perforce\test\movedel>p4 submit -d "integrate @315"
Submitting change 317.
Locking 2 files ...
move/add //stream/main/movedel/B/bar#1
move/delete //stream/main/movedel/B/foo#2
Change 317 submitted.
C:\Perforce\test\movedel>p4 integ A/... B/...
//stream/main/movedel/B/bar#1 - delete from //stream/main/movedel/A/bar#2
C:\Perforce\test\movedel>p4 submit -d "integrate #head"
Submitting change 318.
Locking 1 files ...
delete //stream/main/movedel/B/bar#2
Change 318 submitted.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5707 次 |
最近记录: |