是否有可能以与Git类似的风格在Perforce中创建分支?即无需创建新文件夹。
我希望我的客户端透明地管理分支,同时我对磁盘上的目录树的单个副本起作用。
如果您只修改说几个文件,那么客户端创建整个树的精确副本似乎非常浪费。在这方面我更喜欢Git的工作流程。
如果不能直接使用Perforce,我很高兴转到GitSwarm。
有关我运行Perforce版本2015.1 / 1233444的信息。
答案 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"是本地服务器上的一次性选项。
在共享服务器上,它只是稍微复杂一点,因为你必须做"填充"显式(这是为了让天真的用户在共享服务器上多次意外地分发大量文件),但它仍然只是几个步骤而且你作为高级用户可以轻松编写脚本:
如果您对客户端视图的工作原理有很好的理解,那么也可以使用ad hoc(" classic")分支 - 使用populate创建新分支,修改客户端视图以映射新分支进入当前由旧分支占用的命名空间,并进行同步。
这篇博文简介" p4切换"如果您正在尝试设计自己的解决方案,这可能会有所帮助,这种解决方案类似于但不完全是"切换"命令:https://www.perforce.com/blog/150428/p4-switch-switching-it