मेरे कोको एप्लिकेशन में मैं कुछ बुनियादी गिट कमांड चलाने के लिए NSTask
का उपयोग करने का प्रयास कर रहा हूं। जब भी मैं एक दूरस्थ का उपयोग करने की (git push
जैसे, git pull
) एक आदेश है कि अनुमतियों (SSH कुंजियां) की आवश्यकता है चलाने के लिए, यह निम्नलिखित त्रुटि के साथ विफल:एनएसटीस्क और गिट - अनुमतियां
Permission denied (publickey). The remote end hung up unexpectedly
एक ही आदेशों चल टर्मिनल से बस ठीक काम करता है, तो मैं ' मैं सोच रहा हूं कि यह NSTask
के साथ एक समस्या हो सकती है जो एक पर्यावरण चर सेट नहीं कर रहा है जिसे एसएसएच कुंजी तक पहुंचने की प्रक्रिया में कहीं भी इस्तेमाल किया जाएगा। मैं मैन्युअल रूप से इस तरह HOME
और USER
वातावरण चर की स्थापना की कोशिश की:
[task setEnvironment:[NSDictionary dictionaryWithObjectsAndKeys:NSHomeDirectory(), @"HOME", NSUserName(), @"USER", nil]];
लेकिन यह कोई प्रभाव नहीं है। क्या यह कोई विशेष पर्यावरण चर है जिसे मुझे NSTask
में ठीक से काम करने के लिए सेट करना है?
संपादित करें: डस्टिन की नोक के लिए धन्यवाद, मुझे यह पता लगाने में थोड़ा और आगे मिला। मैं अपने वर्तमान सत्र के लिए वातावरण चर सूची env
आदेश का इस्तेमाल किया और मैं इस पाया:
SSH_AUTH_SOCK=/tmp/launch-DMQopt/Listeners
परीक्षण करने के लिए, मुझे लगता है कि मार्ग की नकल की और NSTask
का एक वातावरण चर के रूप में सेट और कोड फिर से भाग गया, और यह समय यह काम किया! उस ने कहा, मुझे यकीन है कि प्रत्येक सत्र के लिए SSH_AUTH_SOCK
परिवर्तन इसलिए मैं इसे केवल हार्डकोड नहीं कर सकता। मैं इस चर को गतिशील रूप से कैसे उत्पन्न/पुनर्प्राप्त करूं?
इसे दूसरी तरफ आज़माएं, कमांडलाइन पर 'env -i' का उपयोग करें और देखें कि इसे काम करने से पहले आपको कितना जोड़ना होगा। – Dustin
आपकी टिप के लिए थोड़ा और धन्यवाद मिला, मेरी संपादित पोस्ट पढ़ें :) – indragie