eclipse工作区同步设置 - 要同步的内容?

时间:2012-11-11 18:34:23

标签: eclipse

我知道它一次又一次出现但我的具体问题是:我有多个工作区使用wpt,cdt和jdt扩展(以及其他)。我想从我的所有工作区创建硬链接(我在Windows上)到管理快捷方式,工作区首选项等内容的设置文件的子集。例如,当我在一个工作区中更改快捷方式时,更改将传播到所有其他工作区。问题是.metadata / .plugins文件夹是一个完整的混乱(我相信设置都在那里)。例如,我知道我必须链接文件:

<workspace>\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.core.prefs
<workspace>\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.ui.prefs

我相信我不应该尝试链接整个.metadata / .plugins文件夹,因为它包含特定于工作空间的数据。

  • 安全足够来链接\.metadata\.plugins\org.eclipse.core.runtime\.settings目录吗?

  • 有人可以向我提供一些文档,说明.index内的所有.dat\.metadata\.plugins\二进制文件是什么?

  • 如果无法做到这一点,我将非常感谢.prefs目录中的各种\.metadata\.plugins\*\.settings文件,尤其是.metadata\.plugins\org.eclipse.core.runtime\.settings一个

由于

3 个答案:

答案 0 :(得分:6)

好吧,我所做的(在Windows 7上的eclipse juno)是:

  • 创建了一个新的eclipse工作区,比如test,运行它并关闭它

  • 将其制作成git repo

  • 提交了eclipse创建的文件以及.gitignore:

    # binary files
    *.dat
    *.tree
    *.index
    .metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
    .metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
    .metadata/.mylyn/repositories.xml.zip
    *.resources
    
    # logs
    *.log
    
    .metadata/.lock
    
    # later additions
    .metadata/.plugins/org.eclipse.pde.core/.cache/
    *.running
    
  • 切换到新分支

    启动我的一个工作区,导出所有设置,然后启动test工作区并导入它们。在Beyond Compare的帮助下比较工作空间的.metadata / dirs。除了.metadata\.plugins\org.eclipse.core.runtime\.settings\文件之外,org.eclipse.ui.workbench.prefs文件夹是相同的 - 但差异似乎并不重要(即工作区特定)。关闭工作区时,文件org.eclipse.jdt.launching.prefs也被修改。切换到掌握并重复其余的工作区。


有并发症 - 例如:

  • 文件org.eclipse.jdt.core.prefs出现在test工作区中,而在原始工作区中(从我导入的文件中)有(二进制相同的)org.eclipse.jdt.core.prefs.bak

  • 文件org.eclipse.pde.core.prefs未导入

  • 文件org.eclipse.jdt.launching.prefsorg.eclipse.ui.workbench.prefs不同。

在第五个工作区之后,我确定了文件

.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml 
.metadata/.plugins/org.eclipse.jdt.launching/.install.xml

是在导入设置时(在新工作区中)创建的,导出文件.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.pde.core.prefs未导出/导入,导入时文件.settings\org.eclipse.ui.workbench.prefs 合并即* ENABLED_DECORATORS * var保持原样)并且在关闭日食时编辑org.eclipse.jdt.launching.prefs

还有一些复杂问题,例如包含项目引用的文件:

  • 例如,文件org.eclipse.wst.sse.core.prefs包含工作区中的项目名称 - 我将其报告为bug(修复得非常快!)。

  • CDT创建了一堆文件,如:

    .settings/org.eclipse.cdt.core.prj-<projectName>.prefs
    .settings/org.eclipse.cdt.ui.prj-<projectName>.prefs
    

在出口/进口时盲目同步。这实际上比前一个更复杂 - reported it also

事实上,.settings目录中的任何内容都将被复制(我猜只要它有.prefs后缀)。这保证了另一个错误报告。

在包含特定于工作空间的选项的其他文件中遇到类似的情况 - 例如在org.eclipse.ui.ide.prefs中包含对工作集的引用 - 特别是工作区特定的 - 或在包含internalWebBrowserHistory的org.eclipse.ui.browser.prefs中 - 通常也是工作区特定的。


无论如何我决定去寻找硬链接 - 所以我将我的偏好标准化(从新工作区开始要容易得多)并复制除org.eclipse.wst.sse.core.prefs之外的所有设置,{{1} }和cdt(由于某种原因它没有被导入。org.eclipse.pde.core.prefs相当特殊也包含快捷键)。然后我跑:

org.eclipse.ui.workbench.prefs

我的工作区。

猜猜: eclipse打破了硬链接。我尝试过软链接(REM move_settings.bat set SETTINGS_DIR=C:\path\to\tempalte\workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings set WORKSPACE_SETTINGS_DIR=C:\path\to\actual\workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings mkdir %WORKSPACE_SETTINGS_DIR%\zBackups pause FOR /F %%G IN ('DIR^ %%SETTINGS_DIR%%^ /b') DO ( move %WORKSPACE_SETTINGS_DIR%\%%G %WORKSPACE_SETTINGS_DIR%\zBackups mklink /H %WORKSPACE_SETTINGS_DIR%\%%G %SETTINGS_DIR%\%%G ) pause ),但也没有喜悦。

最后

我必须硬连接(连接)整个设置目录(以及我提到的所有有问题的文件) - 这实际上不是解决方案。有一天必须解决这种情况。无论如何,这是我使用的mklink %WORKSPACE_SETTINGS_DIR%\%%G %SETTINGS_DIR%\%%G

.bat

我会根据需要更新这篇文章

答案 1 :(得分:5)

您还可以查看工作区机制,这是一个由谷歌开发的小插件:http://code.google.com/a/eclipselabs.org/p/workspacemechanic/

更新28/11/12

据我所知,您需要保持一些插件首选项的同步。

wiki解释得很清楚。我推荐你的步骤如下:

有了这个,您应该能够处理同步工作区首选项。

奖励:我喜欢将工作区机制首选项放在dropbox上,以便在团队成员之间和/或我的计算机之间共享,您可以在此处找到一个小方法:https://gist.github.com/3090900

希望这有帮助。

此致

答案 2 :(得分:2)

遗憾的是仍然需要解决方法..我和你做了类似的步骤,但我首先尝试硬链接,然后做了git存储库。

对我来说,git存储库是更好的选择,因为我想在多个工作站上同步我的工作区。所以对于仍在寻找解决方案的所有人来说,我就像你一样开始:

  • 创建一个干净的工作区
  • 在.metadata中创建git-Repo
  • 重启Eclipse并查看更改内容
  • 创建另一个工作区并查看更改
  • 依旧......

到目前为止,我设法让.gitignore包含所有不需要或不重要的内容。我的工作区仍然不是100%便携,但差不多......

当我启动一个新的Eclipse工作区时,我需要做的只是git clone,这很简单。缺点是有一些设置没有被跟踪。这些主要是GUI设置,几乎都包含工作区特定的设置。

因此,使用此.gitignore,您可以拥有一个手动同步的工作区,该工作区适用于大多数设置。但它需要保持......

/.lock
*.log
*.index
/.plugins/org.eclipse.core.resources/.projects
/.plugins/org.eclipse.epp.usagedata.recording
/.plugins/org.eclipse.core.resources/.history
/.plugins/org.eclipse.ltk.core.refactoring/.refactorings
/.mylyn
/.plugins/org.eclipse.core.resources/.root/
/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.egit.core.prefs
/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs
/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs
/.plugins/org.eclipse.jdt.core/
/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
/.plugins/org.eclipse.jdt.ui/jdt-images/
/.plugins/org.eclipse.ui.workbench/workingsets.xml
/.plugins/org.eclipse.wb.discovery.core/
/.plugins/org.eclipse.wb.core/
/.plugins/org.eclipse.wst.internet.cache/cache.xml
/.plugins/org.eclipse.team.ui/syncParticipants.xml
/.plugins/org.eclipse.team.cvs.core/.running
/.plugins/org.eclipse.ui.workbench/workbench.xml
/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.egit.ui.prefs
/.plugins/org.eclipse.m2e.core/nexus/
/.plugins/org.eclipse.m2e.core/workspaceState.ser
/.plugins/org.eclipse.debug.core/.launches/
/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml
/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.java.ui.prefs
dialog_settings.xml
/.plugins/org.eclipse.core.resources
/.plugins/org.eclipse.recommenders.rcp
/.plugins/org.eclipse.e4.workbench/workbench.xmi
/.plugins/org.eclipse.recommenders.completion.rcp.calls
/.plugins/org.eclipse.recommenders.completion.rcp.overrides
/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
/.plugins/org.eclipse.wst.sse.core

我的提示是,你看看每次关闭日食后会发生什么变化。这有助于我创建这个gitignore文件,它比插件更好。