我们正在进行一个设计,为此我们在主分支上创建了类的框架。现在,我们开始编码,因此我们创建了一个新分支。如果能够将主分支中所有新文件移动到新分支中就很好了,但是我还不能提交它们。因此,是否可以集成已检出的更改列表呢?谢谢。
Perforce支持网站解释了如何完成这个过程:Perforce知识库:在进展中分支。如果有一个不需要运行八个不同命令的单一步骤,那会更好。
搁置
并在分支上 恢复
。具体如下:
Shelve your outstanding changes:
$ 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.
Unshelve them on the branch (using the -b
option, which maps the file name through a branch specification):
$ 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.
Resolve any merges resulting from the unshelve
, using p4 resolve -as
to quickly do the "safe" ones, and then doing the rest with p4 resolve
as usual.
$ 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.
为了用简单的语言重新表述Gareth Rees上面的答案,
p4 unshelve -b target_branchspec -s changelist
:)
我从未找到在Perforce中实现这一点的方法,但您至少可以部分自动化它。
通常,当我需要做类似的事情时,我会检出要移动文件的分支中的文件,然后使用WinMerge来比较分支并复制更改。完成后,您可以还原原始分支中的更改,并在新分支中将其检入。
这不是最好的解决方案(新分支上没有文件的自动检出/添加/删除),但这是我想到的最快速的方法。
不是真的。
当然,您可以在新分支中打开要编辑的文件,并将主分支工作区中已更改的文件手动复制到新分支的工作区。如果只有几个文件,这可能是最简单的方法。
这里 有一些脚本,如果涉及较多的文件,则非常方便。例如,使用 P4Shelf 脚本,您可以创建所有更改的文件的存档,并随后在任何具有恢复更改的分支中自动打开它们。
另外,请查看Jim Tilander提供的一些 其他巧妙的Perforce脚本。
简单的回答是 - 不行。很遗憾,快速浏览Perforce文档并没有找到一个准备好的引用来证明这一点,但根据我的经验,任何试图从Perforce服务器中删除内容的尝试都将导致您的更改丢失,这将让您感到不高兴。
备份,创建新的工作区以进行新分支,并重新应用您的更改,可能使用Herms答案中概述的差异/合并策略。