【问题标题】:How to do p4 (perforce) merge using command line?如何使用命令行进行 p4(perforce)合并?
【发布时间】:2017-11-06 22:44:08
【问题描述】:

我正在 Windows 上编写一个用于 p4 合并的批处理脚本。

在 p4 中,我有一个源文件夹和目标文件夹,如下所示:

来源: //depot/a/b/c/src/

目的地: //depot/a/b/c/dest/

我只想用“src”替换“dest”的全部内容。

所以,在合并之前,如果源看起来像这样:

src/Folder1/1.txt(内容为1111)

src/Folder1/2.txt(内容为2222)

src/Folder2/1.txt(内容为3333)

src/Folder2/2.txt(内容为4444)

在合并之前,dest 看起来像这样:

dest/Folder1/1.txt(内容为5555)

dest/Folder1/3.txt(内容为6666)

dest/Folder4/1.txt(内容为7777)

dest/Folder4/2.txt(内容为8888)

那么,合并后,“dest”应该是这样的:

dest/Folder1/1.txt(内容为1111)

dest/Folder1/2.txt(内容为2222)

dest/Folder2/1.txt(内容为3333)

dest/Folder2/2.txt(内容为4444)

通知

Folder4 从 dest 中删除,因为它不在 src 中。

Folder2添加 到 dest,因为它在 src 中。

我正在做的是:

  1. p4 集成 //depot/a/b/c/src/... //depot/a/b/c/dest/...
  2. p4 解析 -at
  3. p4 submit -d "将内容从 src 合并到 dest"

但是,它并没有给我想要的行为。请帮忙。

【问题讨论】:

    标签: perforce


    【解决方案1】:

    既然你说

    我只想用“src”替换“dest”的全部内容

    你应该使用p4 copy,如:

    p4 copy //depot/a/b/c/src/... //depot/a/b/c/dest/...
    

    the docs,之后别忘了p4 submit

    【讨论】:

      【解决方案2】:

      一个问题是p4 integrate 将仅集成以前未集成的更改。如果之前集成了某些更改(并且由于合并冲突而更改),您的 p4 integrate //depot/a/b/c/src/... //depot/a/b/c/dest/... 命令将不会重做它们。

      要从src 破坏dest,我认为您需要在使用p4 integrate 时添加-f 标志以忽略以前的集成历史记录(然后像以前一样使用p4 resolve -at 跟随它)。

      【讨论】:

      • 我想要的是 --- 当我从 src -> dest 合并时。然后,src 和 dest 的内容应该看起来完全一样。
      • 这意味着,如果“dest”包含一个不在“src”中的新文件夹或文件,那么它应该被删除。
      • 缺失的部分是由p4 copy 完成的——请参阅 Bryan 的回答。如果您查看非常古老的 Perforce 文档,您可以找到一系列步骤来手动执行此操作,并结合使用 p4 integ -fp4 delete,但 p4 copy 现在存在并且更容易。 :)
      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 2012-01-22
      • 2012-06-14
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多