2011-01-22 19 views
7

निष्पादित करने से पहले रिमोट नेटवर्क पर मशीन को बदलें, मैं अपनी कंपनी के सर्वर से अपने व्यक्तिगत कंप्यूटर पर एक गिट रिपोजिटरी क्लोन करना चाहता हूं। "बाहर" से इन सर्वर acces लिए एक ही रास्ता 'machine1'दूरस्थ एसएसएच भंडार से गिट क्लोन - क्लोन कमांड

ssh [email protected] 

दुर्भाग्य से, Git IST कि विशिष्ट मशीन पर स्थापित नहीं करने के लिए प्रति ssh में प्रवेश करके है। तो

git clone ssh://[email protected]/path/to/repo <local-repo-path> 

की तरह एक Git क्लोन काम नहीं करेगा। मुझे एक मशीन 'मशीन 2' में बदलने के लिए क्या करना होगा, जहां 'मशीन 1' के माध्यम से नेटवर्क में लॉग इन करने के बाद गिट स्थापित किया गया है। तो क्लोन काम करने के लिए मुझे

ssh machine2 

वास्तव में गिट कमांड निष्पादित करने से पहले कमांड निष्पादित करना होगा। क्या उसे करने का कोई तरीका है? शायद पूर्व क्लोन हुक की तरह कुछ?

क्या किसी फ़ाइल को स्थानीय फ़ाइल पर कॉपी करने और उस फ़ाइल से क्लोन करने के लिए किसी फ़ाइल को (पैच?) में रिमोट रिपोजिटरी पैक करना संभव है?

अपने संकेतों और सुझावों के लिए तत्पर हैं!

उत्तर

13

आप एसएसएच प्रॉक्सी कमांड को कॉन्फ़िगर करके ऐसा कर सकते हैं। नोट: यह मानता है कि netcat प्रॉक्सी सर्वर पर उपलब्ध है; आप नेटकैट को एक समान स्क्रिप्ट के साथ perl में बदल सकते हैं या यदि आवश्यक हो तो भी।

अपने ~/.ssh/config के लिए निम्न जोड़ें, इसे बनाने अगर जरूरत:

Host machine1 
User yourusername 
HostName machine1.yourcompany.com 

Host machine2 
User yourusername 
ProxyCommand ssh machine1 nc %h %p 
HostName machine2.internal.network 

अब आप कर सकते हैं ssh machine2 और यह स्वचालित रूप से machine1 के माध्यम से सुरंग। इसका मतलब है कि गिट का उपयोग git clone ssh://machine2/path जितना सरल है।

git bundle कमांड का उपयोग करके भंडार को एक फ़ाइल में बंडल करना भी संभव है। यद्यपि उचित एसएसएच प्रॉक्सी सेटअप के साथ यह आवश्यक नहीं होना चाहिए।

+0

यह एक अच्छा समाधान की तरह लगता है। दुर्भाग्य से, नेटकैट स्पष्ट रूप से रिमोट मशीन पर बाहर नहीं निकलता है। यह सनस 10 चला रहे एक स्पार्क आर्किटेक्चर है। क्या नेटकैट का कोई विकल्प है जिसका मैं संभवतः उपयोग कर सकता हूं? – Deve

+1

एकमात्र आवश्यकता है कि आप एक साधारण प्रोग्राम को एक साथ रख दें जो stdin/stdout से कुछ मनमाने ढंग से दूरस्थ होस्ट तक रिले करेगा; आप शायद कुछ भी स्क्रिप्टिंग भाषाओं में कुछ सरल स्क्रिप्ट फेंक सकते हैं, या नेटकैट या सॉकेट या कुछ संकलित कर सकते हैं और उन्हें अपनी होम निर्देशिका – bdonlan

+0

में डाल सकते हैं ठीक है, मैं देखता हूं कि आपका क्या मतलब है। मुझे चुनौती की तरह लगता है, लेकिन मैं अपनी पूरी कोशिश करूंगा। एक बार फिर धन्यवाद! – Deve

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