IntelliJ和Perforce Integration:在客户端规范根目录之外使用Project结构时的客户端规范问题

时间:2014-01-13 17:37:23

标签: intellij-idea perforce

我想以下列方式使用IntelliJ。一个项目(类似于Eclipse工作区),包含多个模块(类似于Eclipse Projects)。你可以猜到我正在从最近的Eclipse背景转向IntelliJ。

我设置了一个名为MainProject的空项目,它出现在目录结构中:

  • C:\ IntelliJProjects \ MainProject

这正确包含我的“.idea”目录。我希望它不受源代码控制和C驱动器的影响。

然后我添加了两个Java模块,一个用于我将要处理的项目中的每个组件。这些是在perforce和p4客户端规范下的根

  • N:\ dev的

(“V”是代码必须存在的网络驱动器,但我不希望IntelliJ项目文件存在于那里)。这两个模块有一个内容根

  • v:\ dev \ component1 \ trunk \ src
  • ν:\ dev的\ COMPONENT2 \树干\ SRC

一切正常。我已经在模块,src,测试等中正确标记了内容

现在问题。当我尝试设置perforce时,项目根目录是:

  • C:\ IntelliJProjects \ MainProject

但是客户端规范root是

  • ν:\ dev的

所以当我测试连接时出现以下错误

<pre>
Connection problems: </br>
 Wrong client specification: </br>
 Client roots: </br>
  v:\dev </br>
 Actual root: </br>
  C:\IntelliJProjects\MainProject </br>
</pre>

使用Eclipse时,Perforce从未关注Eclipse工作区的位置,因此我并不期望IntelliJ关注项目文件的存储位置。我可以看到很多情况下你不想要这个项目或者perforce下的模块.iml文件,但代码当然是。

解决这个问题的唯一方法是将项目文件放在客户端规范下的网络驱动器上,但由于它在项目级别,它可能无法正常生活在其中:

  • ν:\ dev的\ COMPONENT1
  • ν:\ dev的\ COMPONENT2

所以我会在

下有一个项目
  • ν:\ dev的
如果我改变了客户规格,

会破坏

我唯一想到的另一种方法是添加

  • v:\ dev

作为“版本控制”下的目录,您可以在其中添加目录

  • 没有VCS
  • v:\ dev将VCS定义为perforce

这是唯一的方式还是任何人都可以建议更好的方法?

2 个答案:

答案 0 :(得分:5)

我知道这是一个老问题,但我现在遇到同样的问题而且我设法解决了这个问题。

我在一个文件夹 A 中有一个IntelliJ项目,而我的Perforce工作区位于 B 文件夹中。

在我的项目中,我在项目文件夹内部和Perforce工作区内都有两个模块,而我正在使用错误的客户端规范&#34;我将整个项目映射到Perforce时出错。

我所要做的就是去: IntelliJ项目首选项 - &gt;版本控制 单击+并将我的整个Perforce工作空间目录添加到Perforce作为VCS,如图所示: enter image description here

答案 1 :(得分:1)

您的设置是正确的。如果您将整个“项目”映射到Perforce VCS,IDEA会将您项目中的所有内容(包括.idea)视为Perforce,这不是您想要的。

顺便说一下,强烈建议将项目源保留在本地磁盘上,否则IDEA可能会出现文件同步问题,或者可能运行速度较慢。