我们正在设计一个设计,为此我们在主分支中创建了类的骨架。现在,我们开始编码,为此我们得到了一个新的分支。因此,如果我可以将主分支中的所有新文件移动到新分支中,那将是很好的。但是,我还不能检查它们。那么,是否可以整合检出的变更清单?感谢。
答案 0 :(得分:10)
Perforce支持网站介绍了如何执行此操作:Perforce Knowledge Base: Branching work in progress。如果它是一个不需要运行八个不同命令的单一步骤,那就更好了。
答案 1 :(得分:6)
自2013.1版发布以来,分支工作的方法是shelve
工作,unshelve
分支。详细说明:
搁置您的杰出变化:
$ p4 shelve ...
Change 182535 created with 10 open file(s).
Shelving files for change 182535.
edit //info.ravenbrook.com/project/mps/master/code/arenavm.c#26
# etc.
在分支上取消搁置它们(使用-b
选项,它通过分支规范映射文件名):
$ p4 unshelve -b mps/branch/2013-06-05/diag -s 182535
... //info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - must resolve //info.ravenbrook.com/project/mps/master/code/arenavm.c@=182535 before submitting
# etc.
解决unshelve
产生的所有合并,使用p4 resolve -as
快速执行“安全”合并,然后像往常一样使用p4 resolve
完成剩下的工作。
$ p4 resolve -as
//gdr-peewit/info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - copy from //info.ravenbrook.com/project/mps/master/code/arenavm.c
# etc.
$ p4 resolve
No file(s) to resolve.
(示例输出来自我刚刚运行的实际用例。)
答案 2 :(得分:0)
我从未在perforce中找到一种方法,但你至少可以部分自动化它。
通常当我不得不做类似的事情时,我会检查分支中的文件我想要移动的东西,然后使用WinMerge来区分分支并复制更改。完成后,您可以恢复原始分支中的更改并在新分支中检入它们。
这不是最好的解决方案(在新分支上没有自动检出/添加/删除文件),但这是我提出的最快的方法。
答案 3 :(得分:0)
不是。
您当然可以在新分支中打开要编辑的文件,然后手动将已更改的文件从主分支的工作区复制到新分支的工作区。如果它只是几个文件,这可能是最简单的方法。
Here是一些脚本,如果涉及大量文件,可以派上用场。 例如,使用P4Shelf脚本,您可以创建所有已更改文件的存档,然后在任何分支中自动打开它们并恢复更改。
另外,请查看Jim Tilander为Perforce查看的一些other nifty scripts。
答案 4 :(得分:0)
用简单的语言重新描述Gareth Rees的回答,
p4 unshelve -b target_branchspec -s changelist
:)
答案 5 :(得分:-1)
简单的答案是 - 不,你不能。不幸的是,快速阅读Perforce文档没有为此做好准备,但根据我的经验,任何试图从Perforce服务器下拉出地毯都会导致您的更改丢失,这会让您感到不快野营。
进行备份,在新分支上创建新工作区,然后重新应用更改,可能使用Herms答案中概述的差异/合并策略。