微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将perforce变更列表中的已修改代码推送到另一个分支?

如何解决如何将perforce变更列表中的已修改代码推送到另一个分支?

基本上,我有main和UnityVersion_Testing分支。团队都在使用p4v,但这是一场艰苦的战斗。我们的项目在旧版本的Unity上,我想通过在新引擎中运行旧项目来运行自动升级,然后将其推送到我们专门为Perforce而设的分支。

我认为我应该做的是运行升级,那些被修改文件现在位于新的暂挂变更列表中,我搁置了这些文件,将流切换到UnityVersion_Testing,然后我认为我可以搁置这些文件在那里。没有运气。搁置的文件似乎属于另一个工作空间。然后,我尝试取消搁置文件。我不能,因为它们仍然被检出,而且我似乎无法使他们进入接受被搁置的状态。

我该如何从main获取最新信息,在新版本的Unity中升级资产,然后推送到我们现有的UnityVersion_Testing分支,以便在通过这些更改后将它们合并回main回归测试?

解决方法

可以使用架子将待处理的工作从一个流移动到另一个流,但是使用p4 switch -r会更容易。

C:\Perforce\test>p4 edit foo
//stream/main/foo#4 - opened for edit

C:\Perforce\test>echo upgrade >> foo

C:\Perforce\test>p4 switch -r test

C:\Perforce\test>p4 opened
//stream/test/foo#1 - edit default change (text)

C:\Perforce\test>p4 diff
==== //stream/test/foo#1 - c:\Perforce\test\foo ====
3a4
> upgrade

如果使用架子,则需要执行更多步骤-您需要搁置,还原,切换流,然后再搁置(使用“ -S”标志指定您要通过流视图映射架子):

C:\Perforce\test>p4 edit foo
//stream/main/foo#4 - opened for edit

C:\Perforce\test>echo upgrade >> foo

C:\Perforce\test>p4 shelve
Change 209 created with 1 open file(s).
Shelving files for change 209.
edit //stream/main/foo#4
Change 209 files shelved.

C:\Perforce\test>p4 switch test
Can't switch while files are open in a numbered changelist; 'p4 revert' files or 'p4 reopen' files into the default changelist

C:\Perforce\test>p4 revert ...
//stream/main/foo#4 - was edit,reverted

C:\Perforce\test>p4 switch test

C:\Perforce\test>p4 unshelve -S //stream/test -s 209
... //stream/test/foo - must resolve //stream/main/foo@=209 before submitting

C:\Perforce\test>p4 resolve -am
c:\Perforce\test\foo - merging //stream/main/foo@=209
Diff chunks: 0 yours + 1 theirs + 0 both + 0 conflicting
//Samwise-dvcs-1509687817/foo - copy from //stream/main/foo

C:\Perforce\test>p4 diff
==== //stream/test/foo#1 - c:\Perforce\test\foo ====
3a4
> upgrade

另一种选择是使用升级的暂存分支,在此处提交升级,然后merge将其升级到测试分支,而不是将其作为挂起的更改列表移动>

C:\Perforce\test>p4 switch
main

C:\Perforce\test>p4 switch -c upgrade
upgrade

C:\Perforce\test>p4 edit foo
//stream/upgrade/foo#1 - opened for edit

C:\Perforce\test>echo upgrade >> foo

C:\Perforce\test>p4 submit -d "Try out the upgrade on the upgrade branch"
Submitting change 207.
Locking 1 files ...
edit //stream/upgrade/foo#2
Change 207 submitted.

C:\Perforce\test>p4 switch test

C:\Perforce\test>p4 merge --from upgrade @=207
//stream/test/foo#1 - integrate from //stream/upgrade/foo#2
... must resolve content from //stream/upgrade/foo#2

C:\Perforce\test>p4 resolve -am
c:\Perforce\test\foo - merging //stream/upgrade/foo#2
Diff chunks: 0 yours + 1 theirs + 0 both + 0 conflicting
//Samwise-dvcs-1509687817/foo - copy from //stream/upgrade/foo

C:\Perforce\test>p4 diff
==== //stream/test/foo#1 - c:\Perforce\test\foo ====
3a4
> upgrade

C:\Perforce\test>p4 submit -d "Merge the upgrade to the test branch"
Submitting change 208.
Locking 4 files ...
integrate //stream/test/foo#2
Change 208 submitted.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。