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

Mr_*_*s_D 11 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
Run Code Online (Sandbox Code Playgroud)

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

  • 将目录硬链接是否安全足够\.metadata\.plugins\org.eclipse.core.runtime\.settings

  • 有人能指出一些关于里面的所有内容.index.dat二进制文件的文档\.metadata\.plugins\吗?

  • 如果无法做到这一点我希望至少在不同的参考.prefs中的文件\.metadata\.plugins\*\.settings目录,尤其是.metadata\.plugins\org.eclipse.core.runtime\.settings一个

谢谢

Mr_*_*s_D 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 切换到一个新的分支

    启动我的一个工作区,导出所有设置然后启动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
Run Code Online (Sandbox Code Playgroud)

在导入设置(在新工作区中)时创建,.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在关闭eclipse时编辑.

还有其他复杂问题,例如包含项目引用的文件

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

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

    .settings/org.eclipse.cdt.core.prj-<projectName>.prefs
    .settings/org.eclipse.cdt.ui.prj-<projectName>.prefs
    
    Run Code Online (Sandbox Code Playgroud)

在出口/进口方面盲目同步.这实际上是一个比前一个更复杂的情况 - 也报告了它.

事实上,你在.settingsdir中拥有的任何内容都将被复制(我想只要它有一个.prefs后缀).这保证了另一个错误报告.

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


无论如何,我决定去硬链接-所以我归我的喜好(这将是更更容易打开一个新的工作区),并从相距复制所有设置org.eclipse.wst.sse.core.prefs中,cdt那些与org.eclipse.pde.core.prefs(如因某种原因未导入该org.eclipse.ui.workbench.prefs是比较特殊也包含了快捷键).然后我跑:

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
Run Code Online (Sandbox Code Playgroud)

为我的工作区.

猜猜看:eclipse打破了硬链接.我试过软链接(mklink %WORKSPACE_SETTINGS_DIR%\%%G %SETTINGS_DIR%\%%G)但也没有喜悦.

最后

我不得不硬连接(连接)整个设置目录(以及我提到的所有有问题的文件) - 这实际上不是一个解决方案.有一天必须解决这种情况.无论如何这是.bat我用过的:

:: Change to the directory that this batch file is in
:: NB: it must be invoked with a full path!
:: run the bat from the dir you want to backup your prefs to
for /f %%i in ("%0") do set curpath=%%~dpi
cd /d %curpath%

set WORKSPACES=javaEE\ javaSE\ c++\ python\ android\

set TEMPLATE_WORKSPACE=name_of_the_template_workspace\
set WORKSPACES_DIR=C:\Dropbox\eclipse_workspaces\
set SETTINGS_DIR=.metadata\.plugins\org.eclipse.core.runtime\.settings
REM set SETTINGS_DIR=.metadata\.plugins\org.eclipse.core.runtime\.settings\ WONT DO
set TEMPLATE_SETTINGS_DIR=%WORKSPACES_DIR%%TEMPLATE_WORKSPACE%%SETTINGS_DIR%

for %%G in (%WORKSPACES%) do (call :subroutine_needed %%G)
GOTO :eof

:subroutine_needed
    set WORKSPACE=%1
    set WORKSPACE_SETTINGS_DIR=%WORKSPACES_DIR%%WORKSPACE%%SETTINGS_DIR%
    set BACKUP_DIR=%CD%\zBackups\%WORKSPACE%
    mkdir %BACKUP_DIR%
    pause

    move %WORKSPACE_SETTINGS_DIR% %BACKUP_DIR%
    pause

    junction  %WORKSPACE_SETTINGS_DIR% %TEMPLATE_SETTINGS_DIR%
    pause
Run Code Online (Sandbox Code Playgroud)

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


xav*_*ard 5

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

更新2012年11月28日

所以据我所知,你需要保持一些插件首选项的同步.

维基解释了它相当不错.我推荐你的步骤如下:

有了它,您应该能够处理同步您的工作区首选项.

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

希望这可以帮助.

问候