Perforce:我如何p4集成本地未公开的变更列表?

Pla*_*mer 18 perforce

所以这是我的情景:

我有两个项目projectA和projectB.branchspec将projectA自动集成到projectB.现在,我有一个更改列表,它修改了projectA中的一些文件 - 我还没有提交/提交此更改列表.

我希望这个更改列表只能进入projectB.

做一个p4集成-b branchspec -c changelistNumber

节目

"所有修订都已整合."

如何集成未提交的更改列表?

Guy*_*nus 33

Perforce有一种更容易实现的方法:

  1. 将您的更改列表存放在branchA上(请注意更改列表#,我们将其称为NUM以供参考)

  2. 在branchA和branchB之间创建一个分支映射(我们称之为A_to_B)

  3. 运行以下命令:

    p4 unshelve -s NUM -b A_to_B
    
    Run Code Online (Sandbox Code Playgroud)

  • 转到文件>新建>分支映射...,为其命名并在“视图”部分设置映射。例如,要创建从 branchA 到 branchB 的映射,您可以使用以下视图: //depot/branchA/... //depot/branchB/... (2认同)
  • 请注意,您也可以直接从可视客户端执行此操作。您只需要先创建一个新的空待定更改列表。 (2认同)

Jef*_*ser 11

Hack-ish解决方案:

  1. 查看项目B中的文件
  2. 手动将文件从项目A复制到项目B(由于步骤1,它们没有写保护)
  3. 搁置项目A中的变更清单
  4. 提交给B.
  5. 将文件从B集成到A并解决
  6. 取消保留第3步中的文件.根据需要解析接受您的文件.
  7. 准备好后提交给A.

另一种方法是创建一个单独的分支,您可以在其中完成工作,然后根据需要集成到A或B.

一般的想法是Perforce在提交或搁置的变更列表方面工作.整合非承诺变更清单的想法似乎违背了Perforce的天然粮食,这使得这些变通办法变得繁琐.

  • "总体思路是Perforce在提交或搁置的变更列表方面起作用".我会记得:) (4认同)
  • "一般的想法是Perforce工作......"乐观. (2认同)

小智 5

p4 diff -u your/branch/... | patch -p x -d your/otherbranch
Run Code Online (Sandbox Code Playgroud)

其中x是一个int,你应该从0开始尝试直到它工作,在patch中使用--dry-run进行测试.(-p是要剥离的目录的编号,以便/ branch和/ otherbranch中的文件路径匹配,在本例中为2)