Perforce分支与git分支

时间:2014-04-22 00:10:45

标签: git perforce

我是一名试图学习Perforce的Git用户。

在Git中,用户可以从主分支机构签出,更改一些文件并将其代码推送到具有特定提交ID的不同分支上的服务器。

另一个Git用户可以使用其提交ID检出该新分支并在其上工作。

如何使用Perforce执行此操作?

3 个答案:

答案 0 :(得分:13)

  

我是一名试图学习Perforce的Git用户。

对不起。

  

如何使用Perforce执行此操作?

我是一个比Perforce用户更好的Git用户,所以如果出现任何错误,请纠正我。我强烈建议您阅读手册页和a tutorial

它“不能”,至少不是Git的方式。

git中,当您创建分支时,您将分支整个存储库状态。 Perforce不支持这一点,而是“分支”更多每个文件:即,您将文件A分支到文件B中,此时文件B包含对文件A的后向引用“I来自这里。“然后可以使用该后向引用来确定用于合并目的的共同祖先。但是,我的理解是这些反向引用是按文件的,您可以自由地将任何文件集成(合并)到任何其他文件中。 (与git相比,“父提交”是你的反向引用,但是在整个存储库规模上。)

您可以使用典型的Perforce语法(例如//depot/some/path/...)使用p4 integrate分割整组文件。通常,您将整个目录分支到整个其他目录,例如//depot/main/my_project//depot/release-1.0/my_project或类似的目录。据我所知,Perforce并不真正关心路径:它只是将文件从一个位置“分支”到另一个位置。路径中的任何模式或理智都取决于您。

此外,您可以使用p4 branch创建“分支规范”,这基本上是一种记录源文件集及其目标的方法,以便更轻松地进行分支。 (如果您采用发布示例,您可能希望最终合并更改,或将更改合并到发布中等)。

我曾经与Perforce合作,分支是一种与Git不同的野兽,这里有一点文化差异。分支机构比较少见。 (我只看到它们用于发行版。)我们没有将它们用于特征分支,除了可能是最大的特征;与git进行比较,对我来说,“功能分支”通常是“花了> 1次提交”。

答案 1 :(得分:1)

如果你像我一样鄙视Perforce那么你应该继续使用Git。 我应该说使用Git会更舒服。

我目前使用Git-P4 +我写的一组Bash脚本(git-p4-helpers

我遵循this workflow的简化变体:

$ git checkout p4-integration
$ git p4 sync
$ git p4 rebase
$ git tag last-green <SHA1> # last green build
$ git rebase last-green develop
$ git checkout -b <my-feature>
$ git commit # as needed
# Sync Git->P4 (see Github:git-p4-helpers)
# Submit using P4

还有一件事我还没弄清楚,即如何快速地从Git-P4提交到P4(每次我都尝试过这需要永远做git p4 sync那么一些其他的东西让我从Git repo直接提交给P4非常烦人。所以我写了一个脚本来将我的Git repo与我的P4工作区同步,然后使用P4提交。

现在这允许我在使用我的更改时使用Git的所有功能,然后我只使用P4提交。

答案 2 :(得分:0)

请记住,perforce为一个分支创建一个副本,其中Git只是指向新分支,这要快得多。