ठीक है, क्योंकि त्रुटि रेखा की शुरुआत env:
है, यह बताती है कि git.el गिट खोजने और इसे कॉल करने के लिए प्रोग्राम "env" का उपयोग कर रहा है। स्रोत को देखते हुए Git के लिए सभी कॉल के बाद से इस बात की पुष्टि करता यहाँ के माध्यम से जाना दिखाई देते हैं: कोड के माध्यम से
(defun git-call-process-env (buffer env &rest args)
"Wrapper for call-process that sets environment strings."
(if env
(apply #'call-process "env" nil buffer nil
(append (git-get-env-strings env) (list "git") args))
(apply #'call-process "git" nil buffer nil args)))
स्कैन से पता चला कि ज्यादातर मामलों में, Emacs Git सीधे call-process
साथ कहता है, लेकिन यह कभी कभी "env" कमांड का उपयोग करता है , विशेष रूप से जब इसे पर्यावरण चर (जैसे "GIT_INDEX_FILE") पास करने की आवश्यकता होती है।
समस्या Emacs जब call-process
के माध्यम से यह चल रहा है, तो Emacs में exec-path
स्थापित करने में मदद नहीं करेगा `env 'Git खोजने के पास नहीं है कि यह है exec-path
env
है।
चित्रा बाहर env
पाने के लिए पता करने के लिए जहां Git है:
वास्तव में दो समाधान कर रहे हैं। मुझे डर है कि मैं वास्तव में इस पर आपकी सहायता नहीं कर सकता, क्योंकि मुझे नहीं पता कि मैक पर उस तरह की चीज कैसे सेट अप करें, लेकिन यह पथ का एक काफी सरल संशोधन होना चाहिए।
गिट कॉल करते समय env को PATH=/path/to/git
पास करने के लिए हैक git.el हैक। यह कम साफ है, लेकिन यह हैक का इतना बुरा नहीं है, और विशेष रूप से यदि आपने defcustom
में पथ की पसंद की है, तो यह दूसरों के लिए उपयोगी हो सकती है।
मैं 1 के साथ शुरू करने का सुझाव दूंगा। आप Emacs के लिए पर्यावरण चर बदल सकते हैं:
(setenv "PATH" (concat "/opt/local/bin:" (getenv "PATH")))
और फिर git.el को आजमाएं। जबकि Emacs exec-path
को बाल प्रक्रियाओं में परिवर्तनीय पास नहीं करता है, यह इसके पाथ पर्यावरण परिवर्तक के साथ जो कुछ भी लगाया गया था उससे प्रतिलिपि बनाता है। चूंकि Emacs सीधे गिट भी कॉल करता है, इसलिए आपको पहले से ही exec-path
सेट करने की आवश्यकता होगी।
उम्मीद है कि मदद करता है।
कमांड लाइन पर 'कौन सा गिट' का आउटपुट क्या है? –
/ऑप्ट/स्थानीय/बिन/गिट –