इस कार्यप्रवाह मैं वर्तमान में मेरे SVN परियोजनाओं के लिए इस्तेमाल करते हैं (मैं SVN शाखाओं का उपयोग कभी नहीं, और कुछ परियोजनाओं को सक्रिय रूप से और साथ ही अन्य लोगों द्वारा पर काम किया जाता है):गिट और एसवीएन बाहरी - अभी तक एक अंतिम समाधान?
-
सर्वर पर
- , inital
git svn fetch
कर को ढूंढ सकते हैं घंटे ले लो एक 'बिल्ड' शाखा भी बनाएं। - एक विकास मशीन क्लोनिंग पर अब तेजी से होता है:
git clone srv://project.git, git checkout build
git 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 के माध्यम से एक एकल फाइल प्राप्त करने में कठिनाई हो सकता है?
मैंने पाया कि [यह स्क्रिप्ट] (https://github.com/mgee/git-svn-ext) एसवीएन और गिट के वर्तमान संस्करणों के साथ काम करता है –
@IvanKoblik इसे पोस्ट करने के लिए धन्यवाद। हालांकि मुझे यह मानना है कि मैंने सभी रिपॉजिटरीज को सिंक उत्तर में छोड़ दिया है, बल्कि सभी कॉलेग्यूज़ को केवल गिट का उपयोग करने के लिए मजबूर किया है: पी – stijn
स्क्रिप्ट के साथ भी थोड़ी देर के लिए इसका उपयोग करने के बाद बहुत बोझिल। मुझे लगता है कि गिट-एसवीएन इसे बाहरी के साथ एसवीएन भंडारों के लिए काट नहीं देता है, आपका सोल ution सबसे अच्छा है। –