roa*_*rev 2 perforce perforce-branch-spec
熟悉git,第一次使用perforce。
我正在开发自己的功能,我不想将其推送到主线远程存储库。
我需要类似 git 远程分支的东西,其中:
我可以提交我的更改。就像是git commit
我可以推送到不合并的远程私有分支。就像是git push remote my-branch
可以将主线的更改合并到我的分支中。像这样的东西git merge master。
我试图理解 p4 分支,但与p4 integrate和之间的术语有很多混淆p4 branch。此外,所有步骤都会导致p4 submit提交到主线而不是我的分支。有没有办法提交到远程私有分支?
我在这里尝试了 p4 分支步骤: https: //www.perforce.com/perforce/doc.973/cmdguide/html/branchin.htm 但它并没有导致提交到私有远程分支。
Perforce 有一个有点像 git 的 DVCS 模式,但除非有令人信服的理由不这样做(例如服务器上的连接有限或严重的资源限制),否则使用 Perforce 的典型方法是直接在中央服务器上执行所有操作(“远程存储库”)。 p4 submit在典型的模型中本质上是git commit+ git push,因为您的“提交”直接发送到远程服务器。
因此,当您创建分支时,您也在服务器上执行此操作。Perforce 中的分支只是从其他文件夹复制的文件夹(在简单的复制操作之上构建了许多合并跟踪语义),因此要从中创建新功能分支,//depot/main您可以运行如下命令:
p4 integ //depot/main/... //depot/features/road-rev/...
p4 submit
Run Code Online (Sandbox Code Playgroud)
这会在仓库中创建一个新分支(作为名为 的文件夹features/road-rev),并将其同步到您的工作区,因此现在您需要做的就是:
cd features/road-rev
p4 add <new files>
p4 edit <existing files>
<etc>
p4 submit
Run Code Online (Sandbox Code Playgroud)
您在分支中所做的更改road-rev与分支完全分开main。要引入更新的更改,只需重复用于创建它的main相同命令,但添加一个来处理需要合并的文件:integresolve
p4 integ //depot/main/... //depot/features/road-rev/...
p4 resolve -as
p4 resolve
p4 submit
Run Code Online (Sandbox Code Playgroud)
如果您以相反的方向运行集成命令(即交换参数的顺序),则更改会以另一个方向合并。一旦你理解了可以用来任意地将更改从一组文件推送到另一组文件的概念integrate,分支就是定义不同的文件集(通常作为顶级文件夹)来表示代码的不同分支变体的一个非常简单的问题 -这称为“文件间分支”。
如果您的管理员已将您的仓库配置为使用流,则工作流程会略有不同(流是“托管分支”,这意味着感觉更像您习惯的 git 分支 - 您只能拥有一个流一次在您的工作区中,并且您使用switch命令在它们之间切换,而不是定义将任意分支/文件映射到工作区的任意部分的客户端视图)。您仍然拥有仓库中不同文件夹中不同分支变体的相同底层表示,但顶部有一大堆语法糖隐藏了该表示。要从流创建功能分支,您需要执行以下操作:
p4 switch -c road-rev
Run Code Online (Sandbox Code Playgroud)
这类似于git checkout -b road-rev.
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |