बहुत सारे svn रिपॉजिटरीज़ को svn: eol-style विशेषता रखने के लिए नई फ़ाइलों की आवश्यकता होती है। क्या यह सुनिश्चित करने का कोई तरीका है कि यह गिट-एसवीएन के साथ होता है?क्या मैं git-svn हैंडल svn: eol-style बना सकता हूं?
उत्तर
आप उपversण कॉन्फ़िगरेशन में ऑटोप्रोपर्टीज ([1] [2]) सेट करने का प्रयास कर सकते हैं। यह सुनिश्चित करेगा कि नई फाइलों के एड ऑपरेशन के दौरान svn: eol-style ठीक से सेट है।
AFAIU git-svn केवल आंतरिक कार्य में svn का उपयोग कर रहा है, और इसे उपवर्तन कॉन्फ़िगरेशन लोड करना चाहिए, और नई फ़ाइलों के लिए ऑटो-प्रोप सेट करना चाहिए।
ठीक है, मैंने इसका परीक्षण किया, यह काम करता है।
उदाहरण .subversion/config:
[miscellany]
enable-auto-props = yes
[auto-props]
*.cpp = svn:keywords=Id Revision;svn:eol-style=native
*.cs = svn:keywords=Id Revision;svn:eol-style=native
@silk's answer above केवल एक आंशिक समाधान है। एक पूर्ण समाधान में प्रतिबद्धता पर सीआरएलएफ को एलएफ में परिवर्तित करने के लिए गिट को कॉन्फ़िगर करना भी शामिल है। तो, @silk क्या पता चलता है के अलावा, आप भी करना चाहिए:
git config --global core.autocrlf input
git config --global core.safecrlf warn
या:
git config --global core.safecrlf warn
git config --global core.attributesfile ~/.gitattributes
echo '* text=auto' >> ~/.gitattributes
स्पष्टीकरण:
मेरे अनुभव में, git-svn
प्रतिबद्ध पर svn:eol-style=native
विशेषता सेट हो जाएगा, जैसा कि @silk वर्णन करता है, लेकिन वास्तव में प्रतिबद्ध फ़ाइलों को एलएफ लाइन समाप्ति में बदलने से पहले परिवर्तित करेगा। इसलिए, किसी भी सीआरएलएफ लाइन के अंत में सबवर्सन रेपो को बरकरार रखा जाएगा, लेकिन विचलन सभी svn:eol-style=native
एलएफ लाइन अंतराल के साथ संग्रहीत फ़ाइलों को जिम्मेदार ठहराता है। अंत परिणाम यह है कि पहली बार जब कोई उपखंड काम करने वाली प्रतिलिपि से ऐसी फ़ाइल संपादित करता है और करता है, तो अंतर में सीआरएलएफ को एलएफ रूपांतरण में शामिल किया जाएगा।
तो, एक पूर्ण समाधान में काम करने से पहले फ़ाइलों को एलएफ लाइन के अंत में परिवर्तित करने के लिए गिट को मजबूर करना शामिल होना चाहिए। आप इसे core.autocrlf=input
सेट करके कर सकते हैं, जिसका अर्थ है "सभी सीआरएलएफ को प्रतिबद्धता पर एलएफ में परिवर्तित करें, लेकिन चेकआउट पर रिवर्स रूपांतरण न करें", और core.safecrlf=warn
या core.safecrlf=true
, जो आपको फ़ाइल करने का प्रयास करते समय चेतावनी या रोक देगा सीआरएलएफ लाइन के अंत। autocrlf
सेटिंग इन सीआरएलएफ को परिवर्तित करने के लिए सुनिश्चित करेगी, इसलिए safecrlf=true
शायद अधिक है। git help config
देखें।
वैकल्पिक रूप से, आप सभी फ़ाइलों पर text=auto
सेट करके, रूपांतरण को मजबूर करने के लिए गिट विशेषताओं का उपयोग कर सकते हैं। इसे वैश्विक रूप से करने के लिए, आपको core.attributesfile
में एक विशेषता फ़ाइल निर्दिष्ट करने की आवश्यकता है। git help attributes
देखें।
एक और बात: इन कॉन्फ़िगरेशन के साथ, प्रतिबद्ध फाइलें आपके गिट-एसवीएन वर्किंग कॉपी में किसी भी सीआरएलएफ लाइन एंडिंग को तब तक बनाए रखेगी जब तक आप उन्हें फिर से चेक न करें। यदि आप * निक्स पर हैं और एलएफ लाइन एंडिंग चाहते हैं, तो आप एक शाखा में स्विच करके पुनः चेकआउट को मजबूर कर सकते हैं जिसमें सीआरएलएफ फाइलें नहीं हैं और फिर फिर से स्विचिंग होती हैं। वैकल्पिक रूप से, आप पंक्ति समाप्ति को परिवर्तित करने के लिए 'dos2unix' का उपयोग कर सकते हैं, और फिर फ़ाइलों को 'git add' कर सकते हैं; कोई 'गिट प्रतिबद्ध' जरूरी नहीं है क्योंकि एलएफ लाइन के अंत की उम्मीद है। – ntc2
SubGit का उपयोग करने पर विचार करें।
पहले निर्माण से यह उचित सबवर्जन गुणों का समर्थन करता है .gitattributes/.gitignore रूपांतरण (और इसके विपरीत)। अन्य चीजों में से जिसमें svn: eol-style और 'eol', svn: mime-type और 'text', svn: ignore और .gitignore रूपांतरण शामिल हैं।
सबगिट एक सर्वर-साइड समाधान है - इसे इसे सबवर्जन रिपोजिटरी में स्थापित करना है। उसके बाद इस रिपॉजिटरी में परिवर्तन भेजने के लिए कोई सबवर्सन या गिट क्लाइंट का उपयोग कर सकते हैं। अधिक जानकारी प्राप्त करने के लिए कृपया SubGit documenration देखें।
$ subgit configure svn_repos
के रूप में Git भंडार स्थान को निर्दिष्ट करने के लिए आवश्यक svn_repos/conf/subgit.conf फ़ाइल को समायोजित करें, शाखाओं & टैग लेआउट:
SubGit विन्यास फाइल उत्पन्न करें: सामान्य तौर पर यह इसका इस्तेमाल करना काफी आसान है , आदि
समाप्त स्थापना:
$ subgit install svn_repos
इस समय सबगिट आपके सबवर्जन रिपोजिटरी से गिट रिपोजिटरी में सभी संशोधनों को परिवर्तित करता है। फिर यह आने वाले संशोधनों से ट्रिगर होने के लिए अपने कस्टम हुक स्थापित करता है। इस तरह सबगिट लगातार प्रत्येक एसवीएन प्रतिबद्धता पर सबवर्जन संशोधन को परिवर्तित करता है और गिट प्रत्येक गिट पुश पर काम करता है।
सबगिट एक वाणिज्यिक परियोजना है, लेकिन यह छोटी टीमों, ओपन-सोर्स और अकादमिक परियोजनाओं के लिए नि: शुल्क है। और मैं सबगिट डेवलपर्स में से एक हूं।
यह एक बिल्कुल उचित उत्तर है, लेकिन कृपया सबगिट प्रोजेक्ट के साथ अपने सहयोग का खुलासा करें, http://stackoverflow.com/help/behavior –
@ डेवबाकर ने अभी अपना जवाब अपडेट किया है, सिर के लिए धन्यवाद। – vadishev
- 1. मैं हास्केल में इन-मेमोरी हैंडल कैसे बना सकता हूं?
- 2. git-svn: मैं गिट के माध्यम से एक नई svn शाखा कैसे बना सकता हूं?
- 3. सबवर्जन: क्या मैं चेकआउट कर सकता हूं, संशोधित कर सकता हूं, और फिर इसे शाखा बना सकता हूं?
- 4. mod_perl का उपयोग करके, मैं अपाचे हैंडल .pl (पर्ल) फ़ाइलों को कैसे बना सकता हूं?
- 5. मैं जावा सैंडबॉक्स कैसे बना सकता हूं?
- 6. मैं डिमन थ्रेड कैसे बना सकता हूं?
- 7. मैं वर्टिकल यूआईस्लाइडर कैसे बना सकता हूं?
- 8. मैं थ्रेड पूल कैसे बना सकता हूं?
- 9. मैं सिंगलटन IENumerable कैसे बना सकता हूं?
- 10. मैं बाइनरी पैच कैसे बना सकता हूं?
- 11. मैं लॉकलेस कतार कैसे बना सकता हूं?
- 12. मैं कॉन्फ़िगर स्क्रिप्ट कैसे बना सकता हूं?
- 13. मैं AllocateHwnd थ्रेडसेफ कैसे बना सकता हूं?
- 14. मैं ओसीआर कार्यक्रम कैसे बना सकता हूं?
- 15. मैं विस्तारित टेक्स्टबॉक्स कैसे बना सकता हूं?
- 16. मैं पर्ल क्लास कैसे बना सकता हूं?
- 17. क्या मैं svn repos
- 18. मैं रिमोट फाइल कैसे बना सकता हूं?
- 19. मैं रंगीन टेक्स्ट कैसे बना सकता हूं?
- 20. जावास्क्रिप्ट: मैं JSONP कैसे बना सकता हूं?
- 21. मैं एक constraintViolationException कैसे बना सकता हूं?
- 22. मैं वर्चुअल गेमपैड कैसे बना सकता हूं?
- 23. मैं शेलटोस्ट कैसे बना सकता हूं?
- 24. मैं JSON ऐरे कैसे बना सकता हूं?
- 25. मैं 404 पेज कैसे बना सकता हूं?
- 26. मैं मैन्युअल diff कैसे बना सकता हूं?
- 27. मैं स्ट्रिंग को कैसे बना सकता हूं?
- 28. मैं ग्रहण फ़ाइल खोज कैसे बना सकता हूं svn निर्देशिका शामिल नहीं है?
- 29. मैं एसवीएन में कैसे शाखा कर सकता हूं और इसे अपने svn: बाहरी फ़ोल्डरों को भी शाखा बना सकता हूं?
- 30. मैं निर्देशिका पेड़ की प्रतिलिपि कैसे बना सकता हूं लेकिन .svn निर्देशिकाओं को बाहर कर सकता हूं?
लेकिन सावधान रहें: मेरे अनुभव में, 'git-svn' प्रतिबद्धता पर' svn: eol-style = native' विशेषता सेट करेगा, जैसा कि आप वर्णन करते हैं, लेकिन * वास्तव में प्रतिबद्ध फ़ाइलों को एलएफ लाइन अंत में परिवर्तित नहीं करेंगे करने से पहले। इसलिए, किसी भी सीआरएलएफ लाइन के अंत में विवर्तन रेपो बरकरार रखने के लिए प्रतिबद्ध किया जाएगा, लेकिन विचलन सभी 'svn: eol-style = native' विशेषता फ़ाइलों को एलएफ लाइन समाप्ति के साथ संग्रहीत करने की अपेक्षा करता है। अंत परिणाम यह है कि पहली बार जब कोई उपखंड काम करने वाली प्रतिलिपि से ऐसी फ़ाइल संपादित करता है और करता है, तो अंतर में सीआरएलएफ को एलएफ रूपांतरण में शामिल किया जाएगा। – ntc2