2011-01-14 13 views
20

इस कार्यप्रवाह मैं वर्तमान में मेरे SVN परियोजनाओं के लिए इस्तेमाल करते हैं (मैं SVN शाखाओं का उपयोग कभी नहीं, और कुछ परियोजनाओं को सक्रिय रूप से और साथ ही अन्य लोगों द्वारा पर काम किया जाता है):गिट और एसवीएन बाहरी - अभी तक एक अंतिम समाधान?

    सर्वर पर
  • , inital git svn fetch कर को ढूंढ सकते हैं घंटे ले लो एक 'बिल्ड' शाखा भी बनाएं।
  • एक विकास मशीन क्लोनिंग पर अब तेजी से होता है: git clone srv://project.git, git checkout buildgit update-refs ..., git svn fetch के बाद
  • काम, SVN भंडार के लिए लिंक बहाल करने, काम करने, के लिए ... अगर बातें, समझदार हैं git push build को
  • जाँच करने के लिए सर्वर और उस शाखा
  • काम स्टोर करने के लिए इतना है कि मैं किसी अन्य मशीन से इस पर काम कर सकते हैं, भी शाखा
  • निर्माण जब संतुष्ट धक्का में शामिल होने के लिए हडसन में एक निर्माण को गति प्रदान एक साथ तार्किक चरणों में (प्रत्येक बग के लिए जैसे एक) करता है , svn को प्रतिबद्ध करें और git checkout master, git merge build, git svn dcommit, git push, git checkout build, git rebase master, git push build
  • जैसी सभी चीज़ों को रीसेट करें

svn externals दर्ज करें। मैंने पहले से ही प्रत्येक स्क्रिप्ट here की कोशिश की लेकिन उनमें से सभी विफल हो गए। मेरे बाहरी इस तरह सेटअप कर रहे हैं:

/path/to/x x 
/path/to/y/z y/z 
/path/to/a/b.file a/b.file 

और स्क्रिप्ट फाइल सिस्टम और git svn fetch /path/to/x की जड़ में /path/to/x बनाने का प्रयास कर की तरह काम करते हैं। इसके अलावा एकल फाइलें और समस्याएं पैदा करती हैं। (subquestion 1: svn क्या है: बाहरी स्क्रिप्ट्स के लिए इन स्क्रिप्ट्स को प्रारूपित किया गया था?)

यह मेरी स्थिति को संभालने के लिए स्क्रिप्ट्स में से एक को संशोधित करने में कठिनाई नहीं लग रहा है और निर्देशिका संरचना को दोहराने के लिए सही ढंग से ठीक है, लेकिन फिर मुझे एक बड़ी समस्या के साथ छोड़ दिया गया है: यदि मैं दोनों एक्स और वाई/जेड निर्देशिकाओं में एक फ़ाइल बदलता हूं, तो मुझे इसे एक एकल svn प्रतिबद्ध में शामिल करने का कोई तरीका नहीं दिखता है और यह कारण है कि मैंने इसका उपयोग शुरू किया पहली जगह में गिट।

इसलिए प्रश्न: क्या एक तरीका है कि मैं एक निश्चित svn भंडार के केवल हिस्सों का उपयोग करके उपरोक्त वर्कफ़्लो को दोहराने का एक तरीका है, इस तरह से मैं रूट में svn dcommit कर सकता हूं? मैं एक उपयोग में आसान समाधान पसंद करूंगा जो लिनक्स और विंडोज दोनों पर काम करता है।

संपादित करें मैंने जल्दी से प्राप्त स्क्रिप्ट में से एक के माध्यम से हैक किया और इसे svn बाहरीों की निर्देशिका संरचना को दोहराने के लिए बनाया। मैं एकल फ़ाइलों को क्लोन कर सकते हैं नहीं है, हालांकि, यहां उत्पादन है:

git svn clone -r HEAD srv://svn/repo/path/to/projects.sln 
Initialized empty Git repository in xxx/projects.sln/.git/ 
Invalid filesystem path syntax: REPORT request failed on '/svn/repo/!svn/vcc/default': 
    Cannot replace a directory from within at yyy/git/libexec/git-core/git-svn line 5114 

subquestion 2: यह नहीं Git SVN के माध्यम से एक एकल फाइल प्राप्त करने में कठिनाई हो सकता है?

+0

मैंने पाया कि [यह स्क्रिप्ट] (https://github.com/mgee/git-svn-ext) एसवीएन और गिट के वर्तमान संस्करणों के साथ काम करता है –

+2

@IvanKoblik इसे पोस्ट करने के लिए धन्यवाद। हालांकि मुझे यह मानना ​​है कि मैंने सभी रिपॉजिटरीज को सिंक उत्तर में छोड़ दिया है, बल्कि सभी कॉलेग्यूज़ को केवल गिट का उपयोग करने के लिए मजबूर किया है: पी – stijn

+0

स्क्रिप्ट के साथ भी थोड़ी देर के लिए इसका उपयोग करने के बाद बहुत बोझिल। मुझे लगता है कि गिट-एसवीएन इसे बाहरी के साथ एसवीएन भंडारों के लिए काट नहीं देता है, आपका सोल ution सबसे अच्छा है। –

उत्तर

14

दुर्भाग्यवश, एसवीएन के बाहरी काफी लचीला हैं। मैंने उन कई स्क्रिप्टों में भाग लिया है जो उन्हें < पथ > < यूआरएल >, लेकिन < यूआरएल > < पथ > भी अनुमति है। तो मुझे लगता है कि कुछ स्क्रिप्ट इस संबंध में बस टूट गई हैं।

अपने दूसरे उप-जवाब का उत्तर देने के लिए: नहीं। 'गिट एसवीएन fetch' Subversion के रेपो के एक subtree पर काम करने की जरूरत है, लेकिन यह एक शाखा की तरह इलाज कर सकते हैं कुछ ऐसा करने की जरूरत है। उस प्रतिमान में अच्छी तरह से नक्शा एकमात्र नक्शा एक निर्देशिका है (उदाहरण के लिए ट्रंक /)। एफडब्ल्यूआईडब्ल्यू, बाजार और मर्कुरियल भी यहां पीड़ित हैं। दिन के अंत में, सबवर्जन सिर्फ एक संस्करण फ़ाइल सिस्टम है, जबकि गिट की शाखा की पहली श्रेणी अवधारणा है। यह उन विसंगतियों में से एक है जिस तरह से हो रहा है।:-(

1

दूसरे सबक्वेस्टियन पर बस एक और नोट। जहां तक ​​मुझे पता है कि आज के रूप में सबवर्सन भी फाइलों के लिए एसवीएन बाहरी का समर्थन नहीं करता है, केवल फ़ोल्डरों। इसलिए मुझे लगता है कि गुणों में ऐसी प्रविष्टियां अमान्य होंगी। पता नहीं है कि कोई उपकरण है जो इस मामले को संभालता है।

+1

एक प्रमुख पिटा होने के दौरान (विशेष रूप से जब एसवीएन को गिट में पुल करने का प्रयास किया जाता है) फ़ाइल बाहरी बाहरी एसवीएन में बहुत संभव है। मुझे तब से पता नहीं है, लेकिन प्रत्येक एसवीएन कमांड लाइन क्लाइंट जो कम से कम संस्करण 4.5 के बाद से एक्सकोड के साथ भेज दिया गया था-और आमतौर पर वे काफी पुराने होते हैं। – danyowdee

+1

आईआईआरसी फ़ाइल बाहरीों को संस्करण 1.8 या बाद में दोनों क्लाइंट _and_ सर्वर पर ठीक से काम करने की आवश्यकता है। – PMF

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