2012-11-11 43 views
8

Tôi biết nó đã xuất hiện nhiều lần nhưng câu hỏi cụ thể của tôi là: Tôi có nhiều không gian làm việc bằng cách sử dụng phần mở rộng wpt, cdt và jdt (và các phần mở rộng khác). Tôi muốn tạo các liên kết cứng (trên các cửa sổ) từ tất cả các không gian làm việc của mình tới một tập hợp con các tệp cài đặt chi phối những thứ như lối tắt, tùy chọn vùng làm việc v.v. Bằng cách này, ví dụ, thay đổi một phím tắt trong một không gian làm việc. cho tất cả các không gian làm việc khác. Vấn đề là thư mục .metadata/.plugins là một mớ hỗn độn hoàn chỉnh (tôi tin rằng các cài đặt là tất cả ở đó). Ví dụ tôi biết rằng tôi phải liên kết các tập tin:cài đặt đồng bộ hóa không gian làm việc eclipse - những gì cần đồng bộ hóa?

<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 

Tôi tin rằng tôi không nên cố gắng để liên kết các/thư mục .plugins toàn .metadata vì nó có chứa dữ liệu không gian làm việc cụ thể.

  • Nó sẽ là an toànđủ để hardlink thư mục \.metadata\.plugins\org.eclipse.core.runtime\.settings?

  • Ai đó có thể chỉ cho tôi một số tài liệu về tất cả các tệp nhị phân .index.dat nhị phân bên trong \.metadata\.plugins\?

  • Nếu đây không phải là có thể, tôi sẽ đánh giá cao ít nhất là một tài liệu tham khảo cho các .prefs tập tin khác nhau bên trong \.metadata\.plugins\*\.settings thư mục, đặc biệt là .metadata\.plugins\org.eclipse.core.runtime\.settings một

Cảm ơn

Trả lời

6

Alright, những gì tôi đã làm (eclipse juno trên windows 7) là:

  • Tạo không gian làm việc nhật thực mới, nói test, chạy nó và chỉ đóng cửa

  • Made nó thành một git repo

  • Cam kết các tập tin được tạo ra bởi thực cùng với .gitignore này:

    # 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 
    
  • Chuyển sang một chi nhánh mới

    Đã kích hoạt một trong các không gian làm việc của tôi, xuất tất cả cài đặt sau đó kích hoạt không gian làm việc test và nhập chúng. So sánh .metadata/dirs của không gian làm việc với sự giúp đỡ của Beyond Compare. Thư mục .metadata\.plugins\org.eclipse.core.runtime\.settings\ giống hệt với tệp org.eclipse.ui.workbench.prefs - nhưng sự khác biệt dường như không quan trọng (ví dụ: không gian làm việc cụ thể). Khi tắt không gian làm việc, tệp org.eclipse.jdt.launching.prefs cũng đã được sửa đổi. Chuyển sang làm chủ và lặp lại cho phần còn lại của không gian làm việc của tôi.


Có những biến chứng - vì vậy ví dụ:

  • file org.eclipse.jdt.core.prefs đã có mặt trong không gian làm việc test trong khi trong không gian làm việc ban đầu (từ đã được tôi nhập khẩu) có là (nhị phân giống hệt nhau) org.eclipse.jdt.core.prefs.bak.

  • File org.eclipse.pde.core.prefs đã không được nhập

  • Các tập tin org.eclipse.jdt.launching.prefsorg.eclipse.ui.workbench.prefs khác nhau.

Sau khi không gian làm việc thứ năm tôi đã được giải quyết rằng các tập tin

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

được tạo ra khi thiết lập được nhập khẩu (trong một không gian làm việc mới), mà các tập tin .metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.pde.core.prefs không xuất khẩu/nhập khẩu, mà các tập tin .settings\org.eclipse.ui.workbench.prefs được hợp nhất khi nhập (cụ thể là * ENABLED_DECORATORS * var giữ nguyên) và org.eclipse.jdt.launching.prefs được chỉnh sửa khi tắt nhật thực.

Có biến chứng hơn nữa như các tập tin có chứa tài liệu tham khảo dự án:

  • Ví dụ, các tập tin org.eclipse.wst.sse.core.prefs chứa tên dự án từ không gian làm việc - Tôi đã báo cáo này như một bug (nó đã được cố định thực sự nhanh chóng!).

  • CDT tạo ra một loạt các tập tin như:

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

được một cách mù quáng đồng bộ hóa xuất khẩu/nhập khẩu. Điều này thực sự là một trường hợp phức tạp hơn nhiều so với trường hợp trước - reported it also.

Thực tế, mọi thứ bạn có trong thư mục .settings sẽ được sao chép cùng (tôi đoán miễn là nó có hậu tố .prefs). Điều này đảm bảo một báo cáo lỗi khác.

Các tình huống tương tự gặp phải trong các tệp khác chứa tùy chọn cụ thể trong không gian làm việc - như trong org.eclipse.ui.ide.prefs chứa tham chiếu đến bộ làm việc - thay vì không gian làm việc cụ thể - hoặc trong org.eclipse.ui.browser.prefs chứa internalWebBrowserHistory - thường là không gian làm việc.


Dù sao tôi quyết định để đi cho các liên kết cứng - vì vậy tôi bình thường hóa sở thích của tôi (nó sẽ được nhiều dễ dàng hơn để bắt đầu với một không gian làm việc tươi) và sao chép tất cả các thiết lập ngoài org.eclipse.wst.sse.core.prefs, các cdt người và org.eclipse.pde.core.prefs (vì một số lý do nó không được nhập. org.eclipse.ui.workbench.prefs là khá đặc biệt cũng chứa các phím tắt). Sau đó, tôi chạy:

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 

cho không gian làm việc của tôi.

Và hãy đoán xem: nhật thực ngắt liên kết cứng. Tôi đã thử các liên kết mềm (mklink %WORKSPACE_SETTINGS_DIR%\%%G %SETTINGS_DIR%\%%G) nhưng cũng không có niềm vui.

Cuối cùng

tôi phải liên kết cứng (ngã ba) toàn bộ các thiết lập dir (cùng với tất cả các file có vấn đề tôi đã đề cập) - điều này thực sự không phải là một giải pháp. Một trong những ngày này tình hình phải được giải quyết.Dù sao đây là .bat tôi đã sử dụng:

:: 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 

tôi sẽ cập nhật bài đăng này là cần thiết

+0

Cảm ơn bạn rất nhiều vì đã chia sẻ. – Danijel

5

Bạn cũng có thể có một cái nhìn để không gian làm việc cơ khí, một plugin nhỏ được phát triển bởi google: http://code.google.com/a/eclipselabs.org/p/workspacemechanic/

CẬP NHẬT 28/11/12

Vì vậy, theo tôi hiểu, bạn cần phải đồng bộ hóa một số tùy chọn plugin.

Các wiki giải thích nó khá tốt. Các bước tôi khuyên bạn như sau:

Với nó, bạn sẽ có thể để đối phó với đồng bộ sở thích không gian làm việc của bạn.

Bonus: Tôi muốn đặt sở thích của không gian làm việc cơ khí trên Dropbox để chia sẻ nó giữa các thành viên trong nhóm và/hoặc giữa các máy tính của tôi, bạn có thể tìm thấy một nhỏ how-to ở đây: https://gist.github.com/3090900

Hope this helps.

Trân

2

Đó là một điều đáng tiếc rằng vẫn còn phải giải quyết cho điều đó .. Tôi đã thực hiện các bước tương tự như bạn nhưng đầu tiên tôi đã cố gắng để hardlink và sau đó đã làm các kho git.

Đối với tôi, kho lưu trữ git là tùy chọn tốt hơn vì tôi muốn đồng bộ hóa vùng làm việc của mình trên nhiều trạm làm việc. Vì vậy, đối với tất cả những người mà vẫn đang tìm kiếm một giải pháp, tôi chỉ mới bắt đầu như bạn:

  • Tạo một không gian làm việc sạch
  • Tạo git-Repo trong .metadata
  • Khởi động lại Eclipse và xem những gì thay đổi
  • Tạo không gian làm việc khác và xem những gì thay đổi
  • và vân vân ..

cho đến nay tôi quản lý để có một .gitignore chứa tất cả những thứ không cần thiết hoặc không quan trọng. Vùng làm việc của tôi vẫn không phải là 100% di động nhưng gần như ..

Tôi phải làm gì khi tôi bắt đầu một không gian làm việc Eclipse mới chỉ là git clone thật đơn giản.Điểm hạn chế là có một số cài đặt không được theo dõi. Đây là những thiết lập chủ yếu là GUI mà hầu như luôn luôn containg cũng không gian làm việc cài đặt cụ thể.

Vì vậy, bằng cách sử dụng này .gitignore bạn có thể có không gian làm việc được đồng bộ hóa theo cách thủ công hoạt động cho hầu hết các cài đặt. Nhưng nó cần phải được duy trì ..

/.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 

Gợi ý của tôi là bạn có thể xem những gì thay đổi sau mỗi lần tắt nhật thực. Đây là những gì đã giúp tôi tạo tập tin gitignore này và nó hoạt động tốt hơn so với một plugin.

+0

Thú vị! sẽ xem xét kỹ hơn khi tôi có nhiều thời gian hơn –

Các vấn đề liên quan