我可以将签出的文件集成到perforce上的不同分支中

时间:2008-11-18 21:12:28

标签: perforce integrate

我们正在设计一个设计,为此我们在主分支中创建了类的骨架。现在,我们开始编码,为此我们得到了一个新的分支。因此,如果我可以将主分支中的所有新文件移动到新分支中,那将是很好的。但是,我还不能检查它们。那么,是否可以整合检出的变更清单?感谢。

6 个答案:

答案 0 :(得分:10)

Perforce支持网站介绍了如何执行此操作:Perforce Knowledge Base: Branching work in progress。如果它是一个不需要运行八个不同命令的单一步骤,那就更好了。

答案 1 :(得分:6)

自2013.1版发布以来,分支工作的方法是shelve工作,unshelve分支。详细说明:

  1. 搁置您的杰出变化:

    $ 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.
    
  2. 在分支上取消搁置它们(使用-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.
    
  3. 解决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.
    
  4. (示例输出来自我刚刚运行的实际用例。)

答案 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答案中概述的差异/合并策略。