Perforce 工作区和多个分支

Perforce workspaces and multiple branches

我正在尝试找出在为代码库的不同部分处理多个分支时设置 Perforce 工作区的最佳方法。

假设我的默认工作区映射如下:

//depot/foo/trunk/... //my_client/trunk/foo/...
//depot/foo1/trunk/... //my_client/trunk/foo1/...
//depot/foo2/trunk/... //my_client/trunk/foo2/...

我需要同时使用 foofoo1,因为 foo1 依赖于 foo

现在,我想为 foo1 创建一个新分支,比如 branch1 但我不想为 foofoo2 创建一个分支,但我需要与 foofoo2 trunk 以及 foo1 branch1 一起工作。由于代码的结构方式,出于编译目的,foo1foo2 需要位于同一文件夹中。

我应该使用以下映射创建另一个工作区吗?

//depot/foo/trunk/... //my_client/trunk/foo/...
//depot/foo1/branch1/... //my_client/branch1/foo1/...
//depot/foo2/trunk/... //my_client/branch1/foo/...

当我想在分支上工作时切换到这个工作区。注意 foo 仍然指向 //my_client/trunk/foo/

我的开发 IDE 是 Intellij,所以我将创建 2 个项目。第一个项目在主干中有 foofoo1foo2 的 3 个模块。第二个项目将有主干代码的现有模块 foo,分支 1 中的 foo1 和主干中的 foo2 的新模块。

我首先尝试将所有这些映射到一个 perforce 工作区中,但很快发现我无法将仓库中的相同位置映射到同一工作区中的 2 个单独的本地位置。

对于我正在处理主干但没有创建分支的项目 foo,我不想经历整个 project/Intellij 模块设置过程并希望重用现有的本地副本和设置。

这是解决这个问题的正确方法还是有更好的方法?我对 Perforce 还很陌生,但仍在弄清楚它是如何工作的。使用 Git.

可以很容易地设置类似的场景

当您尝试将所有内容都集中在一个工作区时,我不确定您的映射是什么样子,但听起来您想要:

//depot/foo/trunk/...    //my_client/trunk/foo/...
//depot/foo1/trunk/...   //my_client/trunk/foo1/...
//depot/foo1/branch1/... //my_client/branch1/foo1/...

这是一个完全有效的一对一映射。另一方面,这是行不通的:

//depot/foo/trunk/...    //my_client/trunk/foo/...
//depot/foo/trunk/...    //my_client/branch1/foo/...
//depot/foo1/trunk/...   //my_client/trunk/foo1/...
//depot/foo1/branch1/... //my_client/branch1/foo1/...

因为一组 depot 文件被映射到两个位置 -- 但您说过您希望 "foo" 保留在其现有的本地位置,因此没有必要(或不需要)拥有它的两个副本) -- 正确吗?

如果您确实想要两个不同的 foo 副本(在 "branch1" 本地目录下有一个副本),那么我会通过两个客户端视图来实现:

//depot/foo/trunk/...    //my_trunk_client/trunk/foo/...
//depot/foo1/trunk/...   //my_trunk_client/trunk/foo1/...

//depot/foo/trunk/...    //my_branch1_client/branch1/foo/...
//depot/foo1/branch1/... //my_branch1_client/branch1/foo1/...

请注意,在 "branch1" 客户端中,"trunk" 库路径映射到 "branch1" 客户端路径,这可能是您想要的(同样,如果您只是"trunk" 本地文件夹中的 "trunk" 分支,您可以在单个工作区内执行此操作)。