14

何度も出てきたことは知っていますが、私の具体的な質問は次のとおりです。wpt、cdt、jdt 拡張機能 (およびその他) を使用する複数のワークスペースがあります。すべてのワークスペースから、ショートカット、ワークスペースの設定などを管理する設定ファイルのサブセットへのハード リンク (私は Windows を使用しています) を作成したいと考えています。このようにして、たとえば、1 つのワークスペースでショートカットを変更すると、変更が反映されます他のすべてのワークスペースに。問題は、.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

ありがとう

4

3 に答える 3

8

さて、私がしたこと(Windows 7のEclipse Juno)は次のとおりです。

  • 新しいEclipseワークスペースを作成し、たとえばtest、それを実行してシャットダウンするだけです

  • gitリポジトリにしました

  • この .gitignore とともに Eclipse によって作成されたファイルをコミットしました。

    # 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
    
  • 新しい支部に変わりました

    ワークスペースの 1 つを起動し、すべての設定をエクスポートしてから、testワークスペースを起動してインポートしました。Beyond Compare を使用して、ワークスペースの .metadata/ ディレクトリを比較しました。.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.prefsとはorg.eclipse.ui.workbench.prefs異なります。

5番目のワークスペースの後、私はファイルが

.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* 変数はそのまま残ります)、org.eclipse.jdt.launching.prefsEclipseのシャットダウン時に編集されます。

プロジェクト参照を含むファイルなど、さらに複雑な問題があります。

  • たとえば、ファイルorg.eclipse.wst.sse.core.prefsにはワークスペースのプロジェクト名が含まれています - これはバグとして報告しました(すぐに修正されました!)。

  • CDT は次のような一連のファイルを作成します。

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

エクスポート/インポート時に盲目的に同期されます。これは実際には、前のケースよりもはるかに複雑なケースであり、報告もされています

実際、ディレクトリにあるものはすべて.settings一緒にコピーされます(接尾辞が付いている限り.prefs)。これにより、別のバグレポートが保証されます。

同様の状況は、ワークスペース固有のオプションを含む他のファイル (ワークスペース固有org.eclipse.ui.ide.prefsのワーキング セットへの参照を含むファイルや、org.eclipse.ui.browser.prefs通常はワークスペース固有の internalWebBrowserHistory を含むファイル) でも発生します。


とにかく、私はハードリンクに行くことにしました - それで私は自分の設定を正規化し(新しいワークスペースから始める方がはるかに簡単でしょう)、 、 、および を除くすべての設定をコピーしましorg.eclipse.wst.sse.core.prefscdtorg.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

必要に応じてこの投稿を更新します

于 2012-11-25T02:12:57.773 に答える
6

また、Google によって開発された小さなプラグインであるワークスペース メカニックもご覧ください: http://code.google.com/a/eclipselabs.org/p/workspacemechanic/

更新 28/11/12

私が理解している限りでは、いくつかのプラグインの設定を同期する必要があります。

ウィキはそれを非常によく説明しています。私がお勧めする手順は次のとおりです。

これで、ワークスペースの設定の同期に対処できるはずです。

ボーナス: ワークスペース メカニックの設定を Dropbox に配置して、チーム メンバー間および/またはコンピューター間で共有するのが好きです

お役に立てれば。

よろしく

于 2012-11-27T23:09:14.707 に答える