Perforce (p4v) - git 开发人员的简单 create/push/merge 分支
Perforce (p4v) - Simple create/push/merge branch for git developer
背景
我来自 git background, and have been using it for years. Prior to that, I used subversion 好几年了,不得不偶尔使用 CVS。
问题
我正在开始一个大型 perforce 项目并希望创建一个功能分支以便:
- 我没有影响 trunk/mainline/master。
- 我可以在一天结束时将我的工作备份到远程服务器。
使用 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
背景
我来自 git background, and have been using it for years. Prior to that, I used subversion 好几年了,不得不偶尔使用 CVS。
问题
我正在开始一个大型 perforce 项目并希望创建一个功能分支以便:
- 我没有影响 trunk/mainline/master。
- 我可以在一天结束时将我的工作备份到远程服务器。
使用 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