好吧,我所做的(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/ 目录。除了文件之外,这些文件.metadata\.plugins\org.eclipse.core.runtime\.settings\
夹是相同的org.eclipse.ui.workbench.prefs
- 但差异似乎并不重要(即特定于工作区)。在关闭工作区时,该文件org.eclipse.jdt.launching.prefs
也被修改了。切换到 master 并在我的其他工作区重复。
有并发症 - 例如:
该文件org.eclipse.jdt.core.prefs
存在于test
工作区中,而在原始工作区中(从我导入)有(二进制相同)org.eclipse.jdt.core.prefs.bak
。
文件org.eclipse.pde.core.prefs
未导入
文件org.eclipse.jdt.launching.prefs
和org.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
在关闭 Eclipse 时进行编辑。
还有其他复杂情况,例如包含项目引用的文件:
在导出/导入时盲目同步。这实际上是一个比之前报道的要复杂得多的案例。
实际上,您在.settings
目录中的任何内容都会被复制(我想只要它有.prefs
后缀)。这需要另一个错误报告。
在其他包含工作区特定选项的文件中会遇到类似的情况 - 例如org.eclipse.ui.ide.prefs
其中包含对工作集的引用 - 这是相当工作区特定的 - 或org.eclipse.ui.browser.prefs
其中包含 internalWebBrowserHistory - 通常也是工作区特定的。
无论如何,我决定使用硬链接 - 所以我规范了我的偏好(从一个新的工作区开始会容易得多)并复制了除org.eclipse.wst.sse.core.prefs
, thecdt
和 the之外的所有设置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
对于我的工作空间。
猜猜看: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
我会根据需要更新这篇文章