分支A和分支B拥有文件C,然后在分支A上删除C,然后整合到分支B上,然后B上的C也被删除,然后,分支A重新添加文件C,然后再次整合到分支B上但是C文件分支B仍然不存在,仍然被删除。
分支A和分支B拥有文件C,然后删除分支A上的C,然后集成到分支B,然后B上的C也被删除,然后,分支A重新添加文件C,然后再次集成到分支B但是C分支B的文件仍然不存在,仍然被删除。
为什么? 怎么解决?
让我们一步一步来:
分支A和分支B拥有文件C,
C:\Perforce\test\rb>p4 files ...
//stream/main/rb/A/C#1 - add change 515 (text)
//stream/main/rb/B/C#1 - branch change 516 (text)
然后删除分支A上的C,然后整合到分支B,
C:\Perforce\test\rb>p4 delete A/...
//stream/main/rb/A/C#1 - opened for delete
C:\Perforce\test\rb>p4 submit -d "delete"
Submitting change 517.
Locking 1 files ...
delete //stream/main/rb/A/C#2
Change 517 submitted.
C:\Perforce\test\rb>p4 integ A/... B/...
//stream/main/rb/B/C#1 - delete from //stream/main/rb/A/C#2
C:\Perforce\test\rb>p4 submit -d "integ delete"
Submitting change 518.
Locking 1 files ...
delete //stream/main/rb/B/C#2
Change 518 submitted.
然后B上的C也被删除了,
C:\Perforce\test\rb>p4 files ...
//stream/main/rb/A/C#2 - delete change 517 (text)
//stream/main/rb/B/C#2 - delete change 518 (text)
然后,分支A重新添加文件C,
C:\Perforce\test\rb>echo asdfasdfasdfasdf > A/C
C:\Perforce\test\rb>p4 add A/...
//stream/main/rb/A/C#2 - opened for add
C:\Perforce\test\rb>p4 submit -d readd
Submitting change 519.
Locking 1 files ...
add //stream/main/rb/A/C#3
Change 519 submitted.
然后再次整合到分支B,但是分支B的C文件仍然不存在,仍然被删除。
嗯,不:
C:\Perforce\test\rb>p4 integ -n A/... B/...
//stream/main/rb/B/C#2 - branch/sync from //stream/main/rb/A/C#3
我认为您在这一步所做的是使用
p4 merge
命令:
C:\Perforce\test\rb>p4 merge A/... B/...
//stream/main/rb/B/C#2 - sync/delete from //stream/main/rb/A/C#3
... must resolve branch from //stream/main/rb/A/C#3
当您
resolve
时,您有两个选择:
C:\Perforce\test\rb>p4 resolve
c:\Perforce\test\rb\B\C - resolving branch from //stream/main/rb/A/C#3
Branch resolve:
at: branch
ay: ignore
Accept(a) Skip(s) Help(?) at:
如果您选择
at
(默认选项),则会打开文件进行分支:
Accept(a) Skip(s) Help(?) at: at
//Samwise-dvcs-1509687817/rb/B/C - branch from //stream/main/rb/A/C
但是根据您的修订图屏幕截图,您选择了
ay
忽略分支:
Accept(a) Skip(s) Help(?) at: ay
//Samwise-dvcs-1509687817/rb/B/C - ignored //stream/main/rb/A/C
将文件保留为
delete
以记录您选择不对其进行分支(但希望将分支记录为已被忽略,这需要新的修订):
C:\Perforce\test\rb>p4 opened
//stream/main/rb/B/C#2 - delete default change (text)
C:\Perforce\test\rb>p4 resolved
c:\Perforce\test\rb\B\C - ignored //stream/main/rb/A/C#3
c:\Perforce\test\rb\B\C - resolved branch from //stream/main/rb/A/C#3
如果你想分支文件,那么当解析询问“
branch
或ignore
”时,你需要选择branch
,而不是ignore
。