我可以将已检出的文件集成到Perforce的不同分支中吗?

10

我们正在进行一个设计,为此我们在主分支上创建了类的框架。现在,我们开始编码,因此我们创建了一个新分支。如果能够将主分支中所有新文件移动到新分支中就很好了,但是我还不能提交它们。因此,是否可以集成已检出的更改列表呢?谢谢。

6个回答

10

这是正确的答案-我自己做了很多次,非常容易。 - Greg Whitfield
2
令我惊讶的是,Git 因“难以使用”而备受诟病,而 P4 中相当于“git rebase”的操作需要使用约 15 个命令。 - RJFalconer
2
话虽如此,未来的搜索者应该查看 p4 2013+ 中 p4 shelve 的 -b 和 -S 选项,这些选项允许您将一个搁置的变更列表与另一个分支进行 rebase。 - RJFalconer

6
自2013.1版本发布以来,分支工作进度的方法是将工作 搁置 并在分支上 恢复。具体如下:
  1. 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.
    
  2. 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.
    
  3. 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.
    
(示例输出是我刚刚运行的一个真实用例。)

0

为了用简单的语言重新表述Gareth Rees上面的答案,

p4 unshelve -b target_branchspec -s changelist

:)


0

我从未找到在Perforce中实现这一点的方法,但您至少可以部分自动化它。

通常,当我需要做类似的事情时,我会检出要移动文件的分支中的文件,然后使用WinMerge来比较分支并复制更改。完成后,您可以还原原始分支中的更改,并在新分支中将其检入。

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


0

不是真的。

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

这里 有一些脚本,如果涉及较多的文件,则非常方便。例如,使用 P4Shelf 脚本,您可以创建所有更改的文件的存档,并随后在任何具有恢复更改的分支中自动打开它们。

另外,请查看Jim Tilander提供的一些 其他巧妙的Perforce脚本


-1

简单的回答是 - 不行。很遗憾,快速浏览Perforce文档并没有找到一个准备好的引用来证明这一点,但根据我的经验,任何试图从Perforce服务器中删除内容的尝试都将导致您的更改丢失,这将让您感到不高兴。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接