Perforce (p4v) - git 开发人员的简单 create/push/merge 分支

Perforce (p4v) - Simple create/push/merge branch for git developer

背景

我来自 background, and have been using it for years. Prior to that, I used 好几年了,不得不偶尔使用 CVS。

问题

我正在开始一个大型 perforce 项目并希望创建一个功能分支以便:

使用 git 这样的工具,这非常简单:

git checkout -b my_branch
# make some edits
git add -u
git commit
git push

我如何在 perforce 中完成相同的(或多或少),使用命令行界面?显然我必须首先使用 p4 branch 来“创建分支规范”,然后使用 p4 integrate 来“打开文件以进行合并或分支”,但找不到任何有意义的具体示例。

谢谢。

如果您想要与 git 体验相媲美的体验,您可能希望使用 Perforce 的 DVCS 模式:https://www.perforce.com/perforce/r15.2/manuals/dvcs/

因此,假设您在自己的本地服务器上执行此操作,流程如下:

p4 fetch
p4 switch -c my_branch
# make some edits
p4 submit -d "Made my edits."
p4 switch main
p4 fetch
p4 merge --from my_branch
p4 resolve -am
p4 submit -d "Merged my edits into main."
p4 push

如果您直接在使用流的共享服务器上执行此操作,则可以跳过获取和推送部分,因为每次提交都已经直接进入 "remote"(尽管我假设 allwrite/auto-reconcile 模仿 "git commit -a" 的功能在这种情况下未启用,因此您将使用 "p4 edit" 打开文件进行编辑):

p4 switch -c my_branch
p4 edit (your files)
# make some edits
p4 submit -d "Made my edits."
p4 switch main
p4 merge --from my_branch
p4 resolve -am
p4 submit -d "Merged my edits into main."

如果您在不使用流的共享服务器上执行此操作(即 "classic Perforce"),那么它是:

p4 integ //depot/main/... //depot/my_branch/...
cd my_branch
p4 submit -d "Created my branch."
p4 edit (your files)
# make some edits
p4 submit -d "Made my edits."
p4 integ //depot/my_branch/... //depot/main/...
p4 resolve -am
p4 submit -d "Merged my edits into main."

如果您无法使用 DVCS 而您的站点使用流,请查看任务流: https://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.streams.html#streams.types.task

您可以使用它们来处理错误修复或功能,它们是半私有的。

一旦您对作品感到满意,就可以将其合并回主stream/branch。

他们甚至可以使用非流 depots.b