我正在尝试找出在代码库的不同部分使用多个分支时设置Perforce工作区的最佳方法。
假设我的默认工作区映射如下:
//depot/foo/trunk/... //my_client/trunk/foo/...
//depot/foo1/trunk/... //my_client/trunk/foo1/...
//depot/foo2/trunk/... //my_client/trunk/foo2/...
我需要同时使用foo
和foo1
,因为foo1
依赖于foo
。
现在,我想创建foo1
说branch1
的新分支,但我不想为foo
和foo2
创建分支,但我需要工作将foo
和foo2
主干与foo1
branch1放在一起。由于代码的结构方式,出于编译目的,foo1
和foo2
需要位于同一文件夹中。
我应该使用以下映射创建另一个工作区吗?
//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个模块,用于foo
,foo1
,foo2
在主干中。第二个项目将包含中继代码的现有模块foo
,branch1中的foo1
和主干中的foo2
的新模块。
我首先尝试在一个perforce工作区中映射所有这些,但很快发现我无法将库中的相同位置映射到同一工作区中的2个单独的本地位置。
对于我正在使用trunk并且没有创建分支的项目foo
,我不想完成整个项目/ Intellij模块设置过程并希望重用现有的本地副本和设置。
这是接近这个的正确方法还是有更好的方法来做到这一点?我对Perforce很陌生,并且仍在弄清楚它是如何工作的。使用Git很容易设置类似的场景。
答案 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"本地文件夹中,你可以在一个工作区内完成)。