perforce git比较




我可以在perforce中将检出的文件整合到不同的分支中 (4)

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


不是真的。

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

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

另外,请查看Jim Tilander为Perforce提供的其他漂亮脚本


我从来没有找到办法做到这一点,但你至少可以部分自动化。

通常当我不得不做这样的事情时,我会检查我想要移动的分支中的文件,然后使用WinMerge来区分分支并复制所做的更改。 一旦完成,您可以恢复原始分支中的更改,并在新分支中检查它们。

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


自2013.1版本以来,分支工作的进行方式是shelve工作并在分支上unshelve shelve 。 详细:

  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/[email protected]=182535 before submitting
    # etc.
    
  3. 解决unshelve产生的任何合并,使用p4 resolve -as快速执行“安全”的解决方案,然后像往常一样用p4 resolve其余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.
    

(示例输出来自我刚刚运行的实际用例。)