可以在不创建新文件夹的情况下分支Perforce吗?

时间:2016-01-09 16:52:46

标签: branch perforce

是否有可能以与Git类似的风格在Perforce中创建分支?即无需创建新文件夹。

我希望我的客户端透明地管理分支,同时我对磁盘上的目录树的单个副本起作用。

如果您只修改说几个文件,那么客户端创建整个树的精确副本似乎非常浪费。在这方面我更喜欢Git的工作流程。

如果不能直接使用Perforce,我很高兴转到GitSwarm

有关我运行Perforce版本2015.1 / 1233444的信息。

3 个答案:

答案 0 :(得分:1)

可能是的,但是对于系统的集中版本,它涉及一些“魔术”。基本上,分支部分根本不需要涉及客户端。看看p4 populate。这将在服务器上创建另一个文件夹,但不会在本地执行任何操作。然后,您可以编辑客户端工作区以映射分支文件而不是中继文件,它只会重新同步磁盘上的文件。

现在,如果您想看看我们的DVCS版本的工作,那么您可以只做“p4 switch -c”并在本地创建一个新的分支,将您的工作区切换到它(搁置任何开放的当前工作)并离开你。

答案 1 :(得分:1)

我的原始答案已删除,因为我认为链接比重复内容更好。我的错误。

无论如何,我相信Perforce Helix中的DVCS功能恰好提供了你所追求的东西。在我在主题(link here for reference)中写的博客中,我解释了如何使用单个命令创建新的就地分支:

p4 switch -c newBranchName

这将创建一个名为" newBranchName"的新分支。并默认保存正在进行的任何现有工作。要发现您正在使用哪个分支,可以使用带有list参数的switch命令,如下所示:

p4 switch -l

这会显示这样的输出,星号显示您现在正在使用newBranchName分支。

newBranchName * 
main

您可以根据需要来回切换,根据需要随时更改上下文。您正在进行的工作将继续保存在正在进行的每个分支上。当您准备将工作合并回main并将其推回服务器时,您可以使用以下命令序列:

p4 switch main
p4 merge --from newBranchName
p4 resolve –as

第一个命令切换回主分支,第二个命令将您的工作从新创建的分支合并到main,第三个命令自动解决任何潜在的冲突。如果有任何冲突无法自动合并,那么您可以使用常用命令来完成解决过程。

或者,如果您更喜欢坚持使用Git,您可以通过我们的Git Fusion技术直接使用我们的Helix版本引擎,或者直接使用Git和我们新的GitSwarm技术。这是一个非常了不起的选择(在我看来),因为它可以在GitSwarm和后端服务器之间自动和双向镜像内容。这样你就可以获得Git与GitSwarm(它本身基于GitLab)的所有功能以及其他Helix的所有功能。

希望有所帮助!

答案 2 :(得分:0)

如果您使用流(Perforce' s"托管"分支版本,而不是使用任意路径进行完全临时的文件间分支),那么它非常简单。正如P4Gabe所说,"切换-c"是本地服务器上的一次性选项。

在共享服务器上,它只是稍微复杂一点,因为你必须做"填充"显式(这是为了让天真的用户在共享服务器上多次意外地分发大量文件),但它仍然只是几个步骤而且你作为高级用户可以轻松编写脚本:

  1. p4 stream -P(当前流)-t开发(新流名称)
  2. p4 populate -r -S(新流名称)
  3. p4开关(新流名称)
  4. 如果您对客户端视图的工作原理有很好的理解,那么也可以使用ad hoc(" classic")分支 - 使用populate创建新分支,修改客户端视图以映射新分支进入当前由旧分支占用的命名空间,并进行同步。

    这篇博文简介" p4切换"如果您正在尝试设计自己的解决方案,这可能会有所帮助,这种解决方案类似于但不完全是"切换"命令:https://www.perforce.com/blog/150428/p4-switch-switching-it