10

我们正在进行设计,为此我们在主分支中创建了类的骨架。现在,我们开始编写代码,为此我们有了一个新分支。因此,如果我可以将主分支中的所有新文件移动到新分支中,那就太好了。但是,我还不能签入。那么,是否可以集成签出的变更列表?谢谢。

4

6 回答 6

10

Perforce 支持网站解释了如何执行此操作:Perforce 知识库:进行中的分支工作。如果它是一个不需要运行八个不同命令的单个步骤,那就更好了。

于 2008-11-19T01:58:36.353 回答
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.
    

(示例输出来自我刚才运行的一个真实用例。)

于 2013-06-05T13:07:46.890 回答
0

我从来没有找到一种在 perforce 中做到这一点的方法,但你至少可以部分自动化它。

通常当我不得不做类似的事情时,我会检查我想要移动的分支中的文件,然后使用WinMerge来区分分支并复制更改。完成后,您可以还原原始分支中的更改并将它们签入新分支。

这不是最好的解决方案(新分支上没有自动签出/添加/删除文件),但它是我想出的最快的方法。

于 2008-11-18T21:38:11.107 回答
0

并不真地。

您当然可以简单地在新分支中打开文件进行编辑,然后手动将更改的文件从主分支的工作区复制到新分支的工作区。如果只有几个文件,这可能是最简单的方法。

如果涉及大量文件,这里有一些脚本会很方便。例如,使用P4Shelf脚本,您可以创建所有更改文件的存档,然后在恢复更改的任何分支中自动打开它们。

另外,请查看Jim Tilander 为 Perforce编写的其他一些漂亮脚本。

于 2008-11-18T21:52:12.637 回答
0

用简单的术语改写 Gareth Rees 上面的回答,

p4 unshelve -b target_branchspec -s changelist

:)

于 2014-06-12T06:54:02.437 回答
-1

简单的答案是——不,你不能。不幸的是,快速浏览 Perforce 文档并没有为此提供现成的引用,但根据我的经验,任何从 Perforce 服务器下拉出地毯的尝试都会导致您的更改丢失,这会让您不开心露营车。

进行备份,在新分支上创建一个新工作区,然后重新应用您的更改,可能使用 Herms 回答中概述的差异/合并策略。

于 2008-11-18T21:49:52.283 回答