ClearCase转Perforce:如何分支?

5
我们正在从clearcase迁移到perforce,我对分支有疑问。
clearcase中,一旦我创建了一个分支(例如my_branch),我可以持续提交文件(例如xyz.cpp)的增量更改而不必担心main分支。
element * CHECKEDOUT
element * .../my_branch/LATEST
element * /main/LATEST -mkbranch my_branch

我可以随意将xyz.cpp版本库在my_branch中反复“检出”和“签入”多次。假设我进行了23次签入,我感觉第21次签入是需要合并到main的,那么我可以使用ct get获取第21次签入,然后将其合并到main
我可以对任意数量的文件(例如xyz2.cppxyz3.cpp等)在clearcase分支上执行此操作。但我不确定如何在perforce中实现。我看到有 p4 submit,但它会提交到main。基本上,我想在将更改合并到main之前,保存增量更改并随时检索它们。
2个回答

5
你可以使用类似的过程,但是机制当然是不同的。
第一步:创建你的新分支
假设你在Perforce中有一个位于//depot/project/main的主分支。(该路径采用Perforce depot语法。如果需要,我可以添加相关文档的链接。)
我将定义一个分支映射来捕获有关主分支和我的新分支之间关系的信息。 p4 branch my_branch
在分支映射中,我将添加此视图:
//depot/project/main/... //depot/project/my_branch/...
现在我将创建该分支: p4 populate -b my_branch
第二步:使用新分支
我将创建一个工作区,其中包含两个分支。我不会详细介绍所有细节,但我需要一个工作区视图,看起来像这样:
//depot/project/main/... //my_ws/main/...
//depot/project/my_branch/... //my_ws/my_branch/...
现在,我将填充工作区: p4 sync
请注意,我将在工作区中拥有两个分支的副本。现在我将检出并在my_branch上进行更改: p4 edit my_branch/foo.c p4 submit -d "my_branch changes"
我可以在my_branch上进行任意多次更改。
第三步:合并到主分支
好了,现在我准备将my_branch合并到main分支。如果我想合并所有内容,我会运行: p4 integ -r -b my_branch
如果我只想合并单个文件: p4 integ -r -b my_branch //depot/project/main/foo.c
请注意,我指定目标文件。
如果我只想合并单个文件的特定修订版: p4 integ -r -b my_branch //depot/project/main/foo.c#21

太好了!+1。这些是我答案中缺失的关于分支缺失的命令。 - VonC
@p4-randall 谢谢。你的回答非常清晰,提供了一个简单的模型来可视化Perforce中的分支和合并。 - Anand
@p4-randall 在输入 p4 populate -b my_branch 后出现了 Unknown command. Try 'p4 help' for info. 的提示。有什么命令可以解决这个问题吗? - Anand
<code>p4 populate</code> 是一个相对较新的命令,可能在您的版本中不可用。如果不可用,则可以使用 <code>p4 integ -b my_branch</code> 命令代替,然后再执行 <code>p4 submit</code> 命令。 - randy-wandisco
@p4-randall 谢谢。在第二步中,您提到“我将创建一个包含两个分支的工作区”。您能否提供一个链接来解释这个需求。我认为将 my_branch 映射到 my_ws 应该足够了。为什么我们需要将 main 映射到 my_ws - Anand

1

cleartool get 最接近的是 p4 sync

 p4 sync file.c#4

将file.c的第四个版本复制到客户端工作区。
如果文件已在客户端工作区中打开,或者最新版本的文件已经存在于客户端工作区中,则不复制该文件。
之后p4 submit仍然是一个明显的选择,但是提交变更列表中的所有文件到depot,并关闭正在编辑、添加和分支的文件。

谢谢。但是我如何将更改“提交”到本地分支的file.c,而不是提交到“main”? - Anand

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