2012-07-17 9 views
9

मैं एक एसवीएन भंडार क्लोन करने के लिए गिट का उपयोग करना चाहता हूं, लेकिन दुर्भाग्य से, जहां svn checkout सभी बाहरीों के साथ रेपो प्राप्त करता है, git svn clone केवल बाहरी के बिना भंडार प्राप्त करता है। मैं git svn के माध्यम से svn भंडार से बाहरी कैसे प्राप्त कर सकता हूं? मैं कोई फैंसी सामान नहीं करना चाहता, बस बाहरी के साथ पूर्ण रेपो प्राप्त करें।git svn - सभी बाहरीों के साथ क्लोन रेपो

+0

है https://github.com/andrep/git-svn-clone-externals – unhammer

उत्तर

8

git-svn बाहरी का समर्थन नहीं करता है, लेकिन आप git-svn के बजाय SmartGit आज़मा सकते हैं। यह svn: externals का समर्थन करता है, उन्हें .gitsvnextmodules फ़ाइल में परिवर्तित करता है और मॉड्यूल के रूप में प्रदर्शित करता है। एकमात्र प्रतिबंध: आपको पहले से ही मौजूदा गिट-एसवीएन भंडार खोलने के बजाय स्मार्टगिट के साथ भंडार क्लोन करना चाहिए।

+1

कोई कमांड लाइन उपकरण हैं मैं इस्तेमाल कर सकता हूँ? – wowpatrick

+0

दुर्भाग्य से कोई कमांड लाइन, यूआई केवल –

+0

फॉलोअप प्रश्न: [क्या स्मार्टगिट समर्थन गिट-एसवीएन है?] (Http://stackoverflow.com/q/16128118/86967) – nobar

2

मैं एक एसवीएन भंडार तक पहुंचने के लिए फ्रंट एंड के रूप में गिट का उपयोग कर रहा हूं। एसवीएन में संरचना आम तौर पर इतनी सरल होती है कि शीर्ष स्तर की निर्देशिका है जिसमें इसमें बाह्य हैं और उप-निर्देशिकाओं में कोई बाहरी नहीं है। इसके अलावा बाहरी वास्तव में अधिक परिवर्तन नहीं एक बार वे में जुड़ जाते हैं तो कुछ ऐसा सोचते हैं:।

git svn show-externals | \ 
perl -ne 'if (/^\/(.*) (.*)/) { print "git svn clone $1 $2\n"; }' | \ 
bash 

मैं एक अनुमान:

git svn clone X 
cd X 

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

+0

मैंने उपर्युक्त तकनीक को बहुत उपयोगी पाया - सिवाय इसके कि मुझे $ 2 और $ 1 (स्थानीय डीआईआर और रिमोट) – tutuDajuju

+0

@tutuDajuju को सुनने में खुशी हुई। टिप्पणी के लिए धन्यवाद। मैंने यह भी देखा है लेकिन मैंने जांच करने के लिए समय नहीं बिताया है कि कुछ मामलों में आदेश क्यों बदलता है। –

+0

शायद क्लोन सिंटैक्स संस्करण के बीच बदल गया? आज यह क्लोन $ url है [$ target_dir] (डीआईआर वैकल्पिक है) – tutuDajuju

1

मैं टिप्पणी नहीं कर सकता, इसलिए मैं यहाँ समाधान पोस्ट कि मेरे मामले में काम करता है

git svn show-externals | \ 
    awk '/^\// { print "git svn clone "$3" ."$1" "$2":HEAD" }' | \ 
    bash