如何使用命令行进行 p4 (perforce) 合并?

How to do p4 (perforce) merge using command line?

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

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

source : //depot/a/b/c/src/

destination: //depot/a/b/c/dest/

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

因此,在合并之前,如果源代码如下所示:

src/Folder1/1.txt (content is 1111)

src/Folder1/2.txt (content is 2222)

src/Folder2/1.txt (content is 3333)

src/Folder2/2.txt (content is 4444)

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

dest/Folder1/1.txt (content is 5555)

dest/Folder1/3.txt (content is 6666)

dest/Folder4/1.txt (content is 7777)

dest/Folder4/2.txt (content is 8888)

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

dest/Folder1/1.txt (content is 1111)

dest/Folder1/2.txt (content is 2222)

dest/Folder2/1.txt (content is 3333)

dest/Folder2/2.txt (content is 4444)

注意事项:

Folder4 从 dest 得到 deleted 因为它不在 src 中。

Folder2 得到 added 到 dest 因为它在 src.

我做的是:

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

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

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

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

既然你说了

All I want is to replace the entire content of "dest" with "src"

您应该使用 p4 copy,如:

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

the docs,之后别忘了p4 submit