2012-11-11 59 views
8

我知道它已經出現了一次又一次,但我的具體問題是:我有多個使用wpt,cdt和jdt擴展(和其他)的工作區。我想從我的所有工作區創建硬鏈接(我在窗口中),以管理諸如快捷方式,工作區首選項等設置文件的子集。例如,當我在一個工作區中更改快捷方式時,更改將傳播到所有其他工作區。問題是.metadata/.plugins文件夾是一個完整的混亂(我相信設置都在那裏)。比如我知道,我必須到文件鏈接:eclipse工作區同步設置 - 要同步的內容?

<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一個

感謝

回答

6

好吧,我做了什麼(日食JUNO在Windows 7)是:

  • 創建一個新的eclipse工作區,說test,運行它,僅僅將其關閉

  • 使它成爲致力於在文件的git回購

  • 被日食與此的.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工作區並導入它們。比較工作區的.metadata/dirs和Beyond Compare的幫助。 .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其中包含對工作集的引用 - - 這是相當具體的工作區 -

類似的情況在其中包含工作區特定的選項等文件中遇到的或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 

我的工作區。

並猜測:月食突破硬鏈接。我嘗試了軟鏈接(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 

需要

+0

非常感謝分享。 – Danijel

5

我會更新這個帖子你也可以看看到工作區技工,一個小插件開發的谷歌:http://code.google.com/a/eclipselabs.org/p/workspacemechanic/

UPDATE 28/11/12

所以據我所知,你需要保持同步一些插件首選項。

wiki解釋得很好。步驟我建議你有以下幾種:

有了,你應該能夠應付同步你的工作區首選項。

獎勵:我喜歡把工作區技工的喜好對Dropbox的,以團隊成員之間和/或我的電腦之間,你可以找到一個小的如何,在這裏分享:https://gist.github.com/3090900

希望這有助於。

問候

2

這是一個遺憾的是,仍有必須爲解決方法..我提出了類似的步驟,你,但我第一次嘗試以硬連接,然後做git倉庫。

對我來說git倉庫是更好的選擇,因爲我想在多個工作站上同步我的工作區。因此,對於所有仍然在尋找解決辦法的人,我剛開始喜歡你:

  • 創建一個乾淨的工作空間
  • 在.metadata
  • 重啓Eclipse創建混帳回購,看看有什麼變化
  • 創建另一個工作區,看看有什麼變化
  • 等..

到目前爲止,我設法把含有.gitignore所有不需要或不重要的東西。我的工作空間仍然不是100%便攜式,但幾乎是..

當我開始一個新的Eclipse工作區時,我必須做的僅僅是一個git clone,這很簡單。缺點是有些設置沒有被跟蹤。這些主要是圖形用戶界面設置,它們幾乎既包含特定於工作區的設置。

因此,使用這個.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 

我的提示是,你看看在每次關閉eclipse後發生了什麼變化。這幫助我創建了這個gitignore文件,它比插件更好。

+0

有趣!當我有更多的時間時,會更密切地關注它 –