gpt4 book ai didi

perforce - 如何创建私有(private)远程perforce分支并推送到它?

转载 作者:行者123 更新时间:2023-12-02 03:08:29 44 4
gpt4 key购买 nike

熟悉git,第一次使用perforce。

我正在开发自己的功能,我不想将其推送到主线远程存储库。

我需要类似 git 远程分支的东西,其中:

  1. 我可以提交我的更改。类似于 git commit

  2. 我可以推送到不合并的远程私有(private)分支。类似于 git Push Remote my-branch

  3. 可以将主线的更改合并到我的分支中。像git merge master之类的东西。

我试图理解 p4 分支,但是对 p4integratep4branch 之间的术语有很多困惑。此外,所有步骤都会导致 p4 Submit 提交到主线而不是我的分支。有没有办法提交到远程私有(private)分支?

我在这里尝试了 p4 分支步骤:https://www.perforce.com/perforce/doc.973/cmdguide/html/branchin.htm但它并没有导致提交到私有(private)远程分支。

最佳答案

Perforce 有一个有点像 git 的 DVCS 模式,但除非有令人信服的理由不这样做(例如服务器上的连接有限或严重的资源限制),否则使用 Perforce 的典型方法是直接在中央服务器上执行所有操作(“远程存储库”)。典型模型中的 p4 commit 本质上是 git commit + git Push,因为你的“提交”直接发送到远程服务器。

因此,当您创建分支时,您也在服务器上执行此操作。 Perforce 中的分支只是从其他文件夹复制的文件夹(在简单的复制操作之上构建了许多合并跟踪语义),因此要从 //depot/main 创建新功能分支,您可能会运行类似:

p4 integ //depot/main/... //depot/features/road-rev/...
p4 submit

这会在仓库中创建一个新分支(作为名为 features/road-rev 的文件夹),并将其同步到您的工作区,因此现在您需要做的就是:

cd features/road-rev
p4 add <new files>
p4 edit <existing files>
<etc>
p4 submit

您在road-rev分支中所做的更改与main分支完全分开。要从 main 中引入更新的更改,您只需重复用于创建它的相同 integ 命令,但添加一个 resolve 来处理需要的文件合并:

p4 integ //depot/main/... //depot/features/road-rev/...
p4 resolve -as
p4 resolve
p4 submit

如果您以相反方向运行集成命令(即交换参数的顺序),则更改会以另一个方向合并。一旦您理解了可以使用集成将更改从一组文件任意推送到另一组文件的概念,分支就是定义不同文件集(通常作为顶级文件夹)到另一组文件的非常简单的事情。代表代码的不同分支变体——这称为“文件间分支”。

如果您的管理员已将您的仓库配置为使用,则工作流程会略有不同(流是“托管分支”,感觉更像是您正在使用的 git 分支)过去——工作空间中一次只能有一个流,并且使用 switch 命令在它们之间切换,而不是定义映射的客户端 View 任意分支/文件到工作区的任意部分)。您仍然拥有仓库中不同文件夹中不同分支变体的相同底层表示,但顶部有一大堆语法糖隐藏了该表示。要从流创建功能分支,您需要执行以下操作:

p4 switch -c road-rev

这与git checkout -b road-rev类似。

关于perforce - 如何创建私有(private)远程perforce分支并推送到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330832/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com