2012-10-07 8 views
44

के लिए मैंने हाल ही में ज़श का उपयोग शुरू किया और यह कमाल है। दुर्भाग्यवश, परियोजना के लिए मैं अपनी "मुख्य" परियोजना पर विचार करता हूं, सबकुछ धीमा है। मेरा मतलब यह है कि हर बार जब मैं कमांड चलाता हूं - ls, उदाहरण के लिए - कमांड निष्पादित होने के समय के बारे में पांच सेकंड की देरी होती है और समय मैं टर्मिनल का फिर से उपयोग कर सकता हूं।ओह-माय-जेएसएच धीमा, लेकिन केवल कुछ गिट रेपो

इस रेपो के बारे में क्या अलग हो सकता है जो ज़श को धीमा कर देता है? मुझे लगता है कि यह एक ज़ेड-विशिष्ट चीज है क्योंकि मैंने ज़श का उपयोग करना शुरू करने से पहले कोई समस्या नहीं थी। मैंने git clean करने का प्रयास किया लेकिन इससे कोई ध्यान देने योग्य अंतर नहीं आया।

मै मैक ओएस एक्स पर हूं, अगर यह मायने रखता है।

अद्यतन:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function 

मुझे लगता है कि लाइन टिप्पणी करते हैं, तो इसके बारे में 1 सेकंड लेने के लिए के बारे में 3 सेकंड लेने से चला जाता है: मेरी .zshenv क्या है यह धीमी गति से कर रहा था की इस पंक्ति से बाहर कर देता है। दुर्भाग्य से, मुझे उस पंक्ति की आवश्यकता है, क्योंकि मेरी कई परियोजनाएं आरवीएम का उपयोग करती हैं। मुझे नहीं पता कि अब क्या करना है।

अद्यतन 2: यह विशेष रूप से ओह-मेरी-जेएस चीज प्रतीत होता है। अगर मैं ~/.oh-my-zsh/oh-my-zsh.sh लोड नहीं करता हूं, तो मुझे समस्या नहीं है।

+1

और यदि आप अब बैश का उपयोग करते हैं, तो क्या यह अभी भी धीमा है? – nneonneo

+0

उत्कृष्ट सवाल। नहीं, यह तेजी से बैश पर है। –

+0

क्या यह अभी भी धीमा है यदि आप अपनी '~ .z *' फ़ाइलों को रास्ते से बाहर ले जाते हैं? – user4815162342

उत्तर

5

में पाया जा सकता मैं अंत में यह समझ से बाहर। मेरे प्रोजेक्ट में rake फ़ोल्डर था जिसमें फाइलों का एक टन था (जैसे 20,000)। मुझे नहीं पता कि वह फ़ोल्डर क्या था, लेकिन मैंने इसे हटा दिया, ज़ेड अब धीमा नहीं है, और मेरा ऐप अभी भी काम करता प्रतीत होता है।

+0

दिलचस्प प्रतिक्रिया (मेरे उत्तर से अधिक सटीक) +1 – VonC

+3

और यह मुझे पता लगाने में केवल 4 महीने लग गए! –

+0

मुझे वह तेज़ लगता है! मैं उन लोगों को जानता हूं जो कई * साल * लेते हैं;) http://meta.stackexchange.com/questions/36318/whats-the-longest-interval-between-an-answer-being-posted-and-accepted#comment469716_36318 – VonC

10

oh-my-zsh को गति देने के कई तरीके हैं, जैसा कि "zsh starts incredibly slowly" में विस्तृत किया गया है, प्लगइन अनुभाग को साफ करना।

उदाहरण के लिए, ब्लॉग पोस्ट "Fix for oh-my-zsh git-svn prompt slowness" संभावित समस्या के रूप में parse_git_dirty फ़ंक्शन का उल्लेख करता है।

+0

उस सामान ने उसमें मदद की जिससे मुझे यह देखने के लिए चीजों को टिप्पणी करना शुरू हो गया कि चीजें तेजी से लोड हो सकती हैं। मैंने समस्या को और कम कर दिया और मेरा प्रश्न अपडेट किया। –

+0

यह मेरी समस्या हल करता है। – LittleSweet

+0

कंपिनिट पोस्ट ने मेरे लिए एक छोटी राशि में सुधार किया, लेकिन parse_git_dirty को वास्तव में चीजों को हटा दिया। धन्यवाद। – Raj

7

यह प्रत्येक आदेश के बाद थीम कॉलिंग गिट और आरवीएम सामान हो सकता है।

मेरे लिए, ZSH_THEME="juanghurtadoto" से ZSH_THEME="miloshadzic" बदलकर प्रत्येक आदेश के बाद 2 सेकंड देरी हटा दी गई।

विषय-वस्तु https://github.com/robbyrussell/oh-my-zsh/wiki/themes

+0

दिलचस्प। +1। यह मेरे उत्तर से अधिक विशिष्ट है। – VonC

78

आप अपने Git config को यह जोड़ सकते हैं और zsh स्थिति की जांच नहीं होगा अब और

git config --add oh-my-zsh.hide-status 1 
git config --add oh-my-zsh.hide-dirty 1 

विस्तृत उत्तर: (git_prompt_info() और parse_git_dirty()) दो केंद्रीय Git कार्यों रहे हैं lib/git.zsh में। प्रत्येक विधि अक्षम करने के लिए Git config स्विच है (ओह-मेरी-zsh.hide-स्थिति और ओह-मेरी-zsh.hide-गंदा)

कुछ विषयों के लिए अपने स्वयं Git प्रश्नों और बनाने कभी कभी ignore these flags

+1

है यह अभी भी सच है? बस परीक्षण किया और मेरे लिए काम नहीं किया .... – cevaris

+0

कोई बात नहीं है कि मैं 'zsh-git-prompt' – cevaris

+0

वांछित फ़ोल्डर में कमांड का उपयोग कर रहा हूं :) –

6

ओह_मी_ज़श कुछ रिपो के लिए धीमा प्रतीत होता है जहां यह प्रत्येक कमांड के बाद रेपो की स्थिति की जांच करता है। इस व्यवहार को .oh_my_zsh के नए संस्करण में ओवरराइड किया जा सकता है। बस निम्न पंक्ति को असम्बद्ध करें।zshrc:

DISABLE_UNTRACKED_FILES_DIRTY = "true"

इस के बाद, अपने टर्मिनल को पुनः आरंभ या चलाने के निम्नलिखित:

स्रोत ~/.zshrc

+0

'git config --add oh-my-zsh.hide-status 1' चीजों को गति देता है लेकिन यह पूरी तरह से VCS की zsh स्थिति को हटा देता है। यह इसे रखता है और अभी भी इसे गति देता है। – nyxz

5

मेरे लिए यह है वर्चुअलबॉक्स (अतिथि) पर धीमा क्योंकि मैं एक सिंक किए गए फ़ोल्डर का उपयोग कर रहा हूं। मैं अभी भी इसे ओएस एक्स (मेजबान) पर सक्षम करना चाहता हूं जहां यह काफी तेज़ है।

git config --global --add oh-my-zsh.hide-dirty 1 

अगर मैं यह सिर्फ एक एकल के लिए करना चाहते हैं: इसके बजाय जो रेपो के साथ संग्रहीत किया जाता है और अतिथि और मेजबान पर यह दोनों बदल जाएगा एक स्थानीय config सेटिंग का उपयोग कर के, मैं केवल अतिथि सेटिंग को एक वैश्विक config का उपयोग रेपो:

git config --add oh-my-zsh.hide-dirty 1 
-4

शायद सबसे सरल और विश्वसनीय वैकल्पिक हल है कि मैं था के साथ आ सकता है सिर्फ टाइप करने के लिए

bash 

मैं अपने विशाल Git भंडार और ई के साथ निर्देशिका में ऐसा किया बहुत अच्छा काम करता है।

1

आप एक और संस्करण नियंत्रण कार्यक्रमों लेकिन git की परवाह नहीं करते हैं, तो आप बस सभी vcs_info अपने *.zsh-theme में अक्षम है और उन्हें देशी git आदेशों के साथ बदल सकते हैं।

उदाहरण के लिए मैं tweak मेरी agnoster.zsh-theme द्वारा:

  1. टिप्पणी/सभी लाइनों कि vcs_info से निकाल दिए
  2. संपादित कोड prompt_git() समारोह में:

    ref="$vcs_info_msg_0_" को

    ref="$(git branch 2>/dev/null | grep -Po '(?<=\*).*$')"

तो, मूल रूप से, मैंने बस सभी vcs_info क्रियाओं को अक्षम कर दिया है, और इसके बजाय रेपो की स्थिति की जांच के लिए मूल git कमांड का उपयोग करें। नतीजतन, मैं अभी भी एक उपयोगी गिट प्रॉम्प्ट को एक गति के साथ एक गैर-गिट निर्देशिका में काम करने के रूप में देख सकता हूं। इस छोटे संशोधन के साथ, मेरा zsh गिट repos के भीतर 4-5x तेजी से काम कर सकते हैं।

नोट: जीएनयू grep का उपयोग बीएसडी grep नहीं है।

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