Perforce工作区和多个分支

时间:2015-06-08 23:48:17

标签: intellij-idea perforce

我正在尝试找出在代码库的不同部分使用多个分支时设置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

现在,我想创建foo1branch1的新分支,但我不想为foofoo2创建分支,但我需要工作将foofoo2主干与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个项目。第一个项目,其中包含3个模块,用于foofoo1foo2在主干中。第二个项目将包含中继代码的现有模块foo,branch1中的foo1和主干中的foo2的新模块。

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

对于我正在使用trunk并且没有创建分支的项目foo,我不想完成整个项目/ Intellij模块设置过程并希望重用现有的本地副本和设置。

这是接近这个的正确方法还是有更好的方法来做到这一点?我对Perforce很陌生,并且仍在弄清楚它是如何工作的。使用Git很容易设置类似的场景。

1 个答案:

答案 0 :(得分:2)

当您尝试在一个工​​作区中完成所有操作时,我不确定您的映射是什么样的,但它听起来像您想要的那样:

//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/...

因为一组软件仓库文件被映射到两个位置 - 但是你说你想要" 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" depot路径映射到" branch1"客户路径,大概是你想要的(再次,如果你只是" trunk"分支在" trunk"本地文件夹中,你可以在一个工作区内完成)。

相关问题