2012-11-11 13 views
8

मुझे पता है कि यह बार-बार आया है लेकिन मेरा विशिष्ट प्रश्न यह है: मेरे पास wpt, cdt और jdt एक्सटेंशन (और अन्य) का उपयोग करके एकाधिक कार्यस्थान हैं। मैं अपने सभी वर्कस्पेस से हार्ड लिंक (मैं विंडोज़ पर हूं) को सेटिंग्स फाइलों के सबसेट में बनाना चाहता हूं जो शॉर्टकट्स, वर्कस्पेस वरीयताओं आदि जैसी चीजों को नियंत्रित करता है। इस तरह, जब मैं, उदाहरण के लिए, एक वर्कस्पेस में एक शॉर्टकट बदलता हूं तो परिवर्तन प्रचारित होगा अन्य सभी कार्यक्षेत्रों के लिए। समस्या है .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 निर्देशिका hardlink को सुरक्षित और पर्याप्त होगा?

  • किसी से के रूप में कुछ प्रलेखन के लिए मुझे बात कर सकता हूँ क्या \.metadata\.plugins\ अंदर उन सभी .index और .dat बाइनरी फ़ाइलें कर रहे हैं?

  • यदि यह संभव नहीं है मैं, \.metadata\.plugins\*\.settings निर्देशिका के अंदर विभिन्न .prefs फ़ाइलों के लिए कम से कम एक संदर्भ की सराहना करेंगे विशेष रूप से .metadata\.plugins\org.eclipse.core.runtime\.settings एक

धन्यवाद

उत्तर

6

ठीक है, मैं क्या किया (जूनो ग्रहण विंडोज 7 पर) था:

  • एक नया ग्रहण कार्यक्षेत्र बनाया गया,कहें, इसे चलाने और बस इसे बंद

  • यह एक 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 की तुलना की। .metadata\.plugins\org.eclipse.core.runtime\.settings\ फ़ोल्डर्स org.eclipse.ui.workbench.prefs फ़ाइल के अलावा समान थे - लेकिन अंतर महत्वपूर्ण नहीं थे (यानी कार्यक्षेत्र विशिष्ट)। वर्कस्पेस को बंद करने पर फ़ाइल org.eclipse.jdt.launching.prefs भी संशोधित की गई थी। मास्टर के लिए स्विच किया गया और मेरे बाकी कार्यक्षेत्रों के लिए दोहराया गया।


जटिलताओं थे - तो उदाहरण के लिए:

  • जबकि मूल कार्यक्षेत्र में (थे मैं आयातित) था (बाइनरी फ़ाइल org.eclipse.jdt.core.prefstest कार्यक्षेत्र में मौजूद था समान) 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 ग्रहण को बंद करने पर संपादित किया गया है।

परियोजना संदर्भों वाले फ़ाइलों की तरह आगे जटिलताओं के होते हैं:

  • उदाहरण के लिए, फ़ाइल org.eclipse.wst.sse.core.prefs कार्यक्षेत्र से परियोजना के नाम होते हैं - मैं (यह वास्तव में जल्दी तय किया गया था!) ​​एक bug के रूप में इस की सूचना दी।

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

जो आँख बंद करके निर्यात/आयात पर सिंक किए गए हैं:

  • CDT की तरह फाइलों का एक समूह बनाता है। यह वास्तव में पिछले एक की तुलना में एक और अधिक जटिल मामला है - reported it also

    वास्तव में, आपके पास .settings डीआईआर में जो कुछ भी है, उसकी प्रतिलिपि बनाई जाएगी (मुझे लगता है कि जब तक यह .prefs प्रत्यय है)। यह एक और बग रिपोर्ट वारंट करता है। जो नहीं बल्कि कर रहे हैं विशिष्ट कार्यक्षेत्र - - org.eclipse.ui.ide.prefs जो वर्किंग सेट के संदर्भ हैं में तरह -

    इसी तरह की परिस्थितियों अन्य फ़ाइलें जो कार्यक्षेत्र विशिष्ट विकल्प को शामिल में सामना होता है या org.eclipse.ui.browser.prefs में जो internalWebBrowserHistory शामिल हैं - है जो आम तौर पर भी विशिष्ट कार्यक्षेत्र।


    वैसे भी मैं हार्ड लिंक के लिए जाने का फैसला किया - तो मैं अपनी प्राथमिकताओं को cdt लोगों सामान्यीकृत (यह बहुत बहुत आसान एक ताजा कार्यस्थान के साथ शुरू करने के लिए किया जाएगा) और org.eclipse.wst.sse.core.prefs से अलग सभी सेटिंग्स की नकल की है, और 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) की कोशिश की लेकिन कोई खुशी नहीं।

    अंत में

    मैं हार्ड लिंक (जंक्शन) पूरे सेटिंग्स dir (सभी समस्याग्रस्त फ़ाइलों मैंने कहा के साथ) के लिए था - यह वास्तव में एक समाधान नहीं है। इन दिनों में से एक स्थिति को संबोधित किया जाना चाहिए।वैसे भी यहाँ .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/

    अद्यतन 28/11/12

    तो जहां तक ​​मैं समझता हूं, आपको कुछ प्लगइन्स वरीयताओं को सिंक करने की आवश्यकता है।

    wiki यह काफी अच्छी तरह से बताता है। चरणों मैं सुझाव है कि आप निम्नलिखित हैं:

    है कि आप अपने कार्यक्षेत्र वरीयताओं को सिंक करना से निपटने के लिए सक्षम होना चाहिए के साथ

    के लिए देखें: 10

  • अगर अभी भी पर्याप्त नहीं है, तो आप आप ही Tasks कोड कर सकते हैं।

    बोनस: https://gist.github.com/3090900

    आशा इस मदद करता है: मैं टीम के सदस्यों के बीच और/या मेरे कंप्यूटर के बीच यदि आप एक छोटे कैसे यहां पा सकते हैं साझा करने के लिए ड्रॉपबॉक्स पर कार्यक्षेत्र मैकेनिक वरीयताओं डाल करने के लिए पसंद करते हैं।

    सादर

  • 2

    यह एक दया अभी भी उस के लिए समाधान होना जरूरी है कि वहाँ .. है मैं आप के रूप में इसी तरह के कदम बना दिया है, लेकिन मैं पहले hardlink करने की कोशिश की और फिर Git भंडार था।

    मेरे लिए गिट रिपोजिटरी बेहतर विकल्प है क्योंकि मैं अपने वर्कस्पेस को एकाधिक कार्य स्टेशनों पर सिंक करना चाहता हूं। इसलिए सभी लोगों को है कि अभी भी एक समाधान के लिए देख रहे हैं के लिए, मैं सिर्फ आप की तरह शुरू कर दिया:

    • एक साफ कार्यक्षेत्र
    • .metadata
    • पुनः प्रारंभ ग्रहण में Git-रेपो बनाएँ और क्या परिवर्तन देखने
    • अन्य कार्य-स्थल बना सकते हैं और क्या परिवर्तन
    • और इतने पर देखते हैं ..

    अब तक मैं एक .gitignore युक्त है में कामयाब सभी चीजें जो आवश्यक या महत्वहीन नहीं हैं। मेरा वर्कस्पेस अभी भी 100% पोर्टेबल नहीं है लेकिन लगभग ..

    जब मैं एक नया ग्रहण कार्यक्षेत्र शुरू करता हूं तो मुझे क्या करना है, यह केवल git clone है जो कि आसान है।कमी यह है कि कुछ सेटिंग्स हैं जिन्हें ट्रैक नहीं किया जाता है। ये मुख्य रूप से जीयूआई सेटिंग्स हैं जो लगभग कभी भी वर्कस्पेस विशिष्ट सेटिंग्स को containg।

    तो इसका उपयोग करना .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 
    

    मेरे संकेत है, यह है कि आप क्या ग्रहण का प्रत्येक शटडाउन के बाद बदल जाता है पर एक नजर है। इसने मुझे इस गिटिनोर फ़ाइल को बनाने में मदद की है और यह एक प्लगइन से बेहतर काम करता है।

    +0

    दिलचस्प! मेरे पास अधिक समय लगेगा जब यह अधिक समय लगेगा –

    संबंधित मुद्दे