0

我是新手来执行。我正在尝试将分支 br#1 集成到分支 br#2

假设这是 //br#1 中的示例代码

int foo{
    blah blah;
}

//br#2

int foo{
    blah blah
}

我想像这样集成它们 //br#3

int foo_branch1{
    blah blah;
}

int foo_branch2{
    blah blah
}

最好的方法是什么?

4

1 回答 1

0

通常,在集成时,您是在两个不同的分支上操作,而不是在单个文件的两个不同修订版上进行操作,目标是合并它们而不是附加它们——您用 br#1 和 br#2 描述的是一种用途我以前没见过的案例。

通常要创建一个分支,您会执行以下操作:

p4 integrate //depot/branch1/... //depot/branch2/...
p4 submit

这将创建一个新目录“branch2”,其中包含一组位于 #1 的文件,每个文件都是“branch1”中头部修订的相同副本。每个分支都是自己的文件目录,有自己的版本编号,您可以完全独立地处理它们。然后在对 branch1 和 branch2 进行更改后,您可以执行以下操作:

p4 integrate //depot/branch1/... //depot/branch2/...
p4 resolve
p4 submit

“integrate”和“resolve”命令会将您在 branch1 上所做的更改合并到您在 branch2 上所做的更改。

但是,由于您只是想将单个文件的修订版连接在一起,因此这是一个非常简单的 shell 脚本问题——我正在遵循您的示例中使用的名称和内容(请注意,“//br”是在 Perforce 中不是有效的文件路径):

p4 edit //br
p4 print -q //br#1 | sed -e "s/foo/foo_branch1/" >  br
p4 print -q //br#2 | sed -e "s/foo/foo_branch2/" >> br
p4 submit -d "concatenate and edit revisions 1 and 2 to make 3"

“p4 print”命令从软件仓库获取指定的修订版本,我使用“sed”在将其附加到工作区文件之前自动进行编辑(foo -> foo_branchN)。最后提交连接的文件,使其成为#3。

于 2014-08-06T00:47:11.110 回答