Eclipse工作区/项目设置使用符号链接

时间:2011-02-16 01:41:57

标签: eclipse branch projects symlink workspace

我有以下简化设置:

~/Development/Repositories/ProjectA-trunk
~/Development/Repositories/ProjectA-branch
~/Development/workspace
~/Development/workspace/ProjectA

ProjectA是../Repositories/ProjectA-trunk的符号链接。在理想的世界中,我可以将链接切换到指向../Repositories/ProjectA-branch,然后在Eclipse中刷新项目并在分支上工作。

在这个不幸的现实世界Eclipse中,尽管最初在导入现有项目时说的是,但是解析符号链接并在“ProjectA”的属性>资源>位置中保留项目的绝对路径,在这种情况下〜 /开发/库/项目A-树干。因此,切换符号链接没有任何效果,因为Eclipse现在认为ProjectA位于〜/ Development / Repositories / ProjectA-trunk而不是〜/ Development / Repositories / ProjectA。

是否有人有关于如何设置工作区的解决方案或解决方法或建议,以便与这样的分支机构合作?

3 个答案:

答案 0 :(得分:6)

最初导入项目(假设当前不存在~/Development/workspace/ProjectA):

  1. mv ~/Development/Repositories/ProjectA-trunk ~/Development/workspace/ProjectA
  2. ~/Development/workspace/ProjectA导入Eclipse
  3. mv ~/Development/workspace/ProjectA ~/Development/Repositories/ProjectA-trunk
  4. ln -s ~/Development/Repositories/ProjectA-trunk ~/Development/workspace/ProjectA
  5. 刷新Eclipse
  6. 每当你想改变分支时:

    1. ln -Tfs $BRANCH ~/Development/workspace/ProjectA
    2. 刷新Eclipse

答案 1 :(得分:0)

符号链接设置适用于Mac OS和Eclipse(Indigo和Juno)。

robert@pferdeapfel:~> ls -l ~/Documents/workspace/
total 8.0K
lrwxr-xr-x 1 robert staff   33 Dec 27 14:05 TheProject -> /Users/robert/prj/foo/Java

其中foo是我想要使用的任何工作副本的符号链接。

robert@pferdeapfel:~> ls -ld ~/prj/foo
lrwxr-xr-x 1 robert staff 5 Dec 27 13:47 /Users/robert/prj/foo -> trunk

切换时,我rm ~/prj/fooln -s另一个工作副本到foo。在Eclipse中刷新并获取更改。

这里的诀窍是我的项目只部分在Java中,即我有工作副本主文件夹(foo),下面是Java,Perl,Postgres等等。当我链接到主文件夹(即~/Documents/workspace/TheProject -> ~/prj/foo)时,Eclipse会在导入时解析符号链接,并将生成的路径存储在项目属性中。只有当我在项目中使用符号链接到Java文件夹(~/Documents/workspace/TheProject -> ~/prj/foo/Java时,Eclipse才会保留符号链接。

当您拥有相同分支/主干的不同工作副本并需要在它们之间切换时,整个符号链接内容非常有用。 Eclipse无法两次处理相同的项目名称。我不想丢失我的工作副本更改。因此符号链接。

答案 2 :(得分:0)

您可以通过在现有工作区上创建存储库来完成相同的任务。 Eclipse使用工作空间中的.metadata文件夹来确定存在哪些项目。然后将您的分支放在同一目录中(例如使用git)。任何时候你想要切换分支git checkout my_branch然后在Eclipse中刷新。

换句话说,不要使用链接,使用git来管理同一目录中的分支。

编辑:完整的程序就是这样的。在Eclipse之外克隆repo(因为如果它在你的工作区中,导入会唠叨你)。导入您的工作区。删除工作区内的文件夹,并将repo克隆到工作区中。