यह कमांड git-svn है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।
कार्यक्रम:
नाम
git-svn - सबवर्सन रिपॉजिटरी और Git के बीच द्विदिशात्मक ऑपरेशन
SYNOPSIS
Git SVN [विकल्प] [तर्क]
वर्णन
Git SVN सबवर्सन और गिट के बीच परिवर्तन के लिए एक सरल माध्यम है। यह एक प्रदान करता है
सबवर्सन और गिट रिपॉजिटरी के बीच परिवर्तनों का द्विदिश प्रवाह।
Git SVN सामान्य का अनुसरण करते हुए एक मानक सबवर्सन रिपॉजिटरी को ट्रैक कर सकता है
"ट्रंक/शाखाएं/टैग" लेआउट, --stdlayout विकल्प के साथ। यह शाखाओं का भी अनुसरण कर सकता है और
-T/-t/-b विकल्पों के साथ किसी भी लेआउट में टैग (विकल्प देखें)। init नीचे, और यह भी
क्लोन आदेश)।
एक बार सबवर्सन रिपॉजिटरी (उपरोक्त तरीकों में से किसी के साथ) को ट्रैक करने के बाद, Git रिपॉजिटरी
द्वारा सबवर्सन से अद्यतन किया जा सकता है लाना कमांड और सबवर्जन को Git से अपडेट किया गया
dcommit आदेश।
कमानों
init
अतिरिक्त मेटाडेटा निर्देशिकाओं के साथ एक खाली Git रिपॉजिटरी प्रारंभ करता है Git SVN.
सबवर्जन यूआरएल को कमांड-लाइन तर्क के रूप में या पूर्ण यूआरएल के रूप में निर्दिष्ट किया जा सकता है
-T/-t/-b के लिए तर्क। वैकल्पिक रूप से, संचालित करने के लिए लक्ष्य निर्देशिका निर्दिष्ट की जा सकती है
दूसरे तर्क के रूप में. आम तौर पर यह कमांड वर्तमान निर्देशिका को आरंभ करता है।
-टी , --ट्रंक= , -टी , --टैग= ,
-बी , --शाखाएं= , -s, --stdlayout
ये init के लिए वैकल्पिक कमांड-लाइन विकल्प हैं। इनमें से प्रत्येक ध्वज इंगित कर सकता है
एक सापेक्ष भंडार पथ (--टैग्स=प्रोजेक्ट/टैग्स) या एक पूर्ण यूआरएल
(--टैग्स=https://foo.org/project/tags)। आप एक से अधिक --टैग और/या निर्दिष्ट कर सकते हैं
--शाखाओं के विकल्प, यदि आपका सबवर्सन रिपॉजिटरी टैग या शाखाएं रखता है
अनेक पथों के अंतर्गत. विकल्प --stdlayout सेटिंग का एक संक्षिप्त तरीका है
ट्रंक, टैग, शाखाएं सापेक्ष पथ के रूप में, जो कि सबवर्सन डिफ़ॉल्ट है। यदि कोई
अन्य विकल्प भी दिए गए हैं, उन्हें प्राथमिकता दी जाती है।
--नो-मेटाडेटा
ठीक कोई मेटाडेटा नहीं [एसवीएन-रिमोट] कॉन्फ़िगरेशन में विकल्प। यह विकल्प नहीं है
अनुशंसित, कृपया पढ़ें svn.noMetadata उपयोग करने से पहले इस मैनपेज का अनुभाग
इस विकल्प।
--उपयोग-एसवीएम-प्रॉप्स
ठीक SvmProps का उपयोग करें [एसवीएन-रिमोट] कॉन्फ़िगरेशन में विकल्प।
--उपयोग-svnsync-प्रॉप्स
ठीक SvnsyncProps का उपयोग करें [एसवीएन-रिमोट] कॉन्फ़िगरेशन में विकल्प।
--पुनर्लिखित-रूट=
ठीक पुनः लिखेंरूट [एसवीएन-रिमोट] कॉन्फ़िगरेशन में विकल्प।
--पुनर्लिखित-uuid=
ठीक पुनः लिखेंUUID [एसवीएन-रिमोट] कॉन्फ़िगरेशन में विकल्प।
--उपयोक्तानाम=
उन ट्रांसपोर्ट के लिए जिनके लिए SVN प्रमाणीकरण संभालता है (http, https, और सादा svn),
उपयोक्तानाम निर्दिष्ट करें. अन्य परिवहनों के लिए (जैसे svn+ssh://), आपको शामिल करना होगा
यूआरएल में उपयोगकर्ता नाम, उदाहरण के लिए svn+ssh://foo@svn.bar.com/परियोजना
--उपसर्ग=
यह किसी को एक उपसर्ग निर्दिष्ट करने की अनुमति देता है जो रिमोट के नाम से पहले जुड़ा होता है
ट्रंक/शाखाएं/टैग निर्दिष्ट हैं। उपसर्ग में स्वचालित रूप से a शामिल नहीं होता है
अनुगामी स्लैश, इसलिए सुनिश्चित करें कि आप तर्क में एक को शामिल करें यदि आप यही कर रहे हैं
चाहना। यदि --branches/-b निर्दिष्ट है, तो उपसर्ग में एक अनुगामी स्लैश शामिल होना चाहिए।
किसी भी मामले में उपसर्ग (अनुगामी स्लैश के साथ) सेट करने को दृढ़ता से प्रोत्साहित किया जाता है
फिर आपका SVN-ट्रैकिंग रेफरी "refs/remotes/$prefix/" पर स्थित होगा", कौन कौन से is
संगत साथ में गिट का अपना रिमोट-ट्रैकिंग रेफरी ख़ाका (रेफ/रिमोट/$रिमोट/).
यदि आप साझा करने वाली एकाधिक परियोजनाओं को ट्रैक करना चाहते हैं तो उपसर्ग सेट करना भी उपयोगी है
एक सामान्य भंडार. डिफ़ॉल्ट रूप से, उपसर्ग पर सेट है मूल/.
नोट
Git v2.0 से पहले, डिफ़ॉल्ट उपसर्ग "" था (कोई उपसर्ग नहीं)। इसका मतलब ये था
एसवीएन-ट्रैकिंग रेफरी को "रेफ्स/रिमोट्स/*" पर रखा गया था, जो कि कैसे असंगत है
Git के स्वयं के रिमोट-ट्रैकिंग रेफरी व्यवस्थित हैं। यदि आप अभी भी पुराना चाहते हैं
डिफ़ॉल्ट, आप इसे कमांड लाइन पर --prefix '' पास करके प्राप्त कर सकते हैं
(--prefix='' यदि आपके पर्ल का Getopt::Long <v2.37 है तो काम नहीं करेगा)।
--अनदेखा-पथ=
जब पास किया गया init or क्लोन इस रेगुलर एक्सप्रेशन को कॉन्फिग के रूप में संरक्षित किया जाएगा
चाभी। देखो लाना के वर्णन के लिए --अनदेखा-पथ.
--शामिल-पथ=
जब पास किया गया init or क्लोन इस रेगुलर एक्सप्रेशन को कॉन्फिग के रूप में संरक्षित किया जाएगा
चाभी। देखो लाना के वर्णन के लिए --शामिल-पथ.
--कोई-छोटा-यूआरएल नहीं
एकाधिक निर्देशिकाओं को ट्रैक करते समय (--stdlayout, --branches, या --tags का उपयोग करके)।
विकल्प), git svn रूट (या उच्चतम अनुमत स्तर) से जुड़ने का प्रयास करेगा
तोड़फोड़ भंडार का। यह डिफ़ॉल्ट यदि इतिहास की बेहतर ट्रैकिंग की अनुमति देता है
संपूर्ण परियोजनाओं को एक रिपॉजिटरी में ले जाया जाता है, लेकिन इसमें समस्याएं पैदा हो सकती हैं
रिपॉजिटरी जहां पढ़ने की पहुंच पर प्रतिबंध लागू हैं। पासिंग
--कोई-छोटा-यूआरएल नहीं git svn को बिना प्रयास किए यूआरएल को वैसे ही स्वीकार करने की अनुमति देगा
किसी उच्च स्तरीय निर्देशिका से कनेक्ट करें. केवल एक होने पर यह विकल्प डिफ़ॉल्ट रूप से बंद हो जाता है
यूआरएल/शाखा को ट्रैक किया जाता है (यह थोड़ा अच्छा होगा)।
लाना
हम जिस सबवर्सन रिमोट को ट्रैक कर रहे हैं, उससे अनफ़ैच्ड संशोधन प्राप्त करें। का नाम
[svn-remote "..."] $GIT_DIR/config फ़ाइल में अनुभाग को वैकल्पिक के रूप में निर्दिष्ट किया जा सकता है
कमांड-लाइन तर्क.
यदि आवश्यक हो तो यह स्वचालित रूप से rev_map को अपडेट करता है (देखें)। $GIT_DIR/svn/**/.rev_map.* in
विवरण के लिए नीचे फ़ाइलें अनुभाग)।
--स्थानीय समय
Git प्रतिबद्ध समय को UTC के बजाय स्थानीय समय क्षेत्र में संग्रहीत करें। यह बनाता है Git लॉग इन
(--date=local के बिना भी) वही समय दिखाएं जो svn लॉग स्थानीय में दिखाता है
समय क्षेत्र।
यह आपके सबवर्सन रिपॉजिटरी के साथ इंटरऑपरेटिंग में हस्तक्षेप नहीं करता है
से क्लोन किया गया है, लेकिन यदि आप चाहते हैं कि आपका स्थानीय Git रिपॉजिटरी सक्षम हो सके
किसी अन्य के स्थानीय Git रिपॉजिटरी के साथ इंटरऑपरेट करें, या तो इसका उपयोग न करें
विकल्प या आप दोनों को इसका उपयोग एक ही स्थानीय समय क्षेत्र में करना चाहिए।
--माता-पिता
केवल वर्तमान HEAD के SVN पेरेंट से प्राप्त करें।
--अनदेखा-पथ=
यह किसी को पर्ल रेगुलर एक्सप्रेशन निर्दिष्ट करने की अनुमति देता है जो स्किपिंग का कारण बनेगा
एसवीएन से चेकआउट से सभी मिलान पथ। --अनदेखा-पथ विकल्प मेल खाना चाहिए
हर एक के लिए लाना (स्वचालित फ़ेच सहित क्लोन, dcommit, रिबेस, आदि)
किसी दिए गए भंडार पर.
कॉन्फिग कुंजी: एसवीएन-रिमोट। .अनदेखा-पथ
यदि इग्नोर-पाथ कॉन्फ़िगरेशन कुंजी सेट है, और कमांड-लाइन विकल्प भी है
दिया गया है, दोनों नियमित अभिव्यक्तियों का उपयोग किया जाएगा।
उदाहरण:
प्रत्येक फ़ेच के लिए "doc*" निर्देशिका को छोड़ें
--अनदेखा-पथ='^doc'
प्रथम स्तर की निर्देशिकाओं की "शाखाएँ" और "टैग" छोड़ें
--ignore-paths='^[^/]+/(?:शाखाएं|टैग)'
--शामिल-पथ=
यह किसी को पर्ल रेगुलर एक्सप्रेशन निर्दिष्ट करने की अनुमति देता है जो समावेशन का कारण बनेगा
एसवीएन से चेकआउट से केवल मिलान पथों की। --शामिल-पथ विकल्प चाहिए
प्रत्येक के लिए मिलान लाना (स्वचालित फ़ेच सहित क्लोन, dcommit, रिबेस,
आदि) किसी दिए गए भंडार पर। --अनदेखा-पथ पूर्वता लेता है --शामिल-पथ.
कॉन्फिग कुंजी: एसवीएन-रिमोट। .include-पथ
--लॉग-विंडो-आकार=
लाना सबवर्सन इतिहास को स्कैन करते समय प्रति अनुरोध प्रविष्टियाँ लॉग करें। डिफ़ॉल्ट है
100. बहुत बड़े सबवर्सन रिपॉजिटरी के लिए, बड़े मानों की आवश्यकता हो सकती है
क्लोन/लाना उचित समय में पूरा करना। लेकिन अत्यधिक बड़े मूल्यों का परिणाम हो सकता है
उच्च मेमोरी उपयोग और अनुरोध टाइमआउट।
क्लोन
रन init और लाना. यह स्वचालित रूप से बेसनेम के आधार पर एक निर्देशिका बनाएगा
यूआरएल इसे पास कर दिया गया; या यदि दूसरा तर्क पारित किया गया है; यह एक निर्देशिका बनाएगा
और उसके भीतर काम करें। यह सभी तर्कों को स्वीकार करता है कि init और लाना आज्ञाओं
स्वीकार करना; के अपवाद के साथ --सभी प्राप्त करें और --माता-पिता. रिपॉजिटरी क्लोन होने के बाद,
la लाना कमांड कार्यशील ट्री को प्रभावित किए बिना संशोधनों को अद्यतन करने में सक्षम होगा;
और रिबेस कमांड वर्किंग ट्री को नवीनतम के साथ अपडेट करने में सक्षम होगा
परिवर्तन।
--संरक्षित-खाली-डीआईआर
प्रत्येक खाली निर्देशिका के लिए स्थानीय Git रिपॉजिटरी में एक प्लेसहोल्डर फ़ाइल बनाएँ
सबवर्सन से प्राप्त किया गया। इसमें वे निर्देशिकाएँ शामिल हैं जो हटाने से खाली हो जाती हैं
सबवर्सन रिपोजिटरी में सभी प्रविष्टियाँ (लेकिन स्वयं निर्देशिका नहीं)।
प्लेसहोल्डर फ़ाइलों को भी ट्रैक किया जाता है और आवश्यक न होने पर हटा दिया जाता है।
--प्लेसहोल्डर-फ़ाइलनाम=
--preserve-empty-dirs द्वारा बनाई गई प्लेसहोल्डर फ़ाइलों का नाम सेट करें। गलती करना:
".gitignore"
रिबेस
यह वर्तमान HEAD के SVN पैरेंट से संशोधन प्राप्त करता है और वर्तमान को पुनः आधार बनाता है
(एसवीएन के प्रति अप्रतिबद्ध) इसके विरुद्ध कार्य करें।
यह svn update या के समान ही काम करता है Git खींच सिवाय इसके कि यह रैखिक इतिहास को संरक्षित करता है
साथ में Git रिबेस के बजाय Git मर्ज साथ प्रतिबद्धता में आसानी के लिए Git SVN.
यह सभी विकल्पों को स्वीकार करता है Git SVN लाना और Git रिबेस स्वीकार करना। तथापि,
--सभी प्राप्त करें केवल वर्तमान [svn-remote] से प्राप्त होता है, और सभी [svn-remote] से नहीं
परिभाषाएं
पसंद Git रिबेस; इसके लिए जरूरी है कि काम करने वाला पेड़ साफ-सुथरा हो और उसमें कोई गंदगी न हो
परिवर्तन।
यदि आवश्यक हो तो यह स्वचालित रूप से rev_map को अपडेट करता है (देखें)। $GIT_DIR/svn/**/.rev_map.* in
विवरण के लिए नीचे फ़ाइलें अनुभाग)।
-एल, --स्थानीय
दूर से मत लाओ; केवल चलाओ Git रिबेस से प्राप्त अंतिम प्रतिबद्धता के विरुद्ध
अपस्ट्रीम एसवीएन।
dcommit
वर्तमान शाखा से प्रत्येक अंतर को सीधे एसवीएन भंडार में प्रतिबद्ध करें, और फिर
रीबेस या रीसेट (यह इस पर निर्भर करता है कि एसवीएन और हेड के बीच अंतर है या नहीं)।
यह Git में प्रत्येक प्रतिबद्धता के लिए SVN में एक संशोधन तैयार करेगा।
जब एक वैकल्पिक Git शाखा नाम (या Git प्रतिबद्ध ऑब्जेक्ट नाम) को एक के रूप में निर्दिष्ट किया जाता है
तर्क, उपकमांड निर्दिष्ट शाखा पर काम करता है, वर्तमान शाखा पर नहीं।
का उपयोग dcommit को पसंद किया जाता है सेट-वृक्ष (नीचे)।
--नहीं-रिबेस
कमिट करने के बाद, रीबेस या रीसेट न करें।
--कमिट-यूआरएल
इस एसवीएन यूआरएल (पूर्ण पथ) के लिए प्रतिबद्ध रहें। इसका उद्देश्य मौजूदा को अनुमति देना है Git SVN
एक ट्रांसपोर्ट विधि से बनाई गई रिपॉजिटरी (उदाहरण के लिए svn:// या http:// के लिए
यदि किसी उपयोगकर्ता को बाद में किसी विकल्प तक पहुंच दी जाती है तो अनाम रीड) का पुन: उपयोग किया जाएगा
प्रतिबद्धता के लिए परिवहन विधि (जैसे svn+ssh:// या https://)।
कॉन्फिग कुंजी: एसवीएन-रिमोट। .commiturl
कॉन्फ़िगरेशन कुंजी: svn.commiturl (सभी svn-remote को अधिलेखित करता है। .commiturl विकल्प)
ध्यान दें कि कमिटुरल कॉन्फिग कुंजी के एसवीएन यूआरएल में एसवीएन शाखा शामिल है। अगर आप
बल्कि संपूर्ण एसवीएन रिपोजिटरी उपयोग के लिए प्रतिबद्ध यूआरएल सेट करना चाहते हैं
एसवीएन-रिमोट. इसके बजाय .pushurl।
किसी अन्य उद्देश्य के लिए इस विकल्प का उपयोग करना (मत पूछो) अत्यधिक हतोत्साहित किया जाता है।
--mergeinfo=
डीकमिट के दौरान दी गई मर्ज जानकारी जोड़ें (उदाहरण के लिए)।
--mergeinfo=”/branches/foo:1-10”). सभी svn सर्वर संस्करण इसे संग्रहीत कर सकते हैं
जानकारी (एक संपत्ति के रूप में), और संस्करण 1.5 से शुरू होने वाले एसवीएन क्लाइंट बना सकते हैं
इसका उपयोग. एकाधिक शाखाओं से मर्ज जानकारी निर्दिष्ट करने के लिए, एक ही स्थान का उपयोग करें
शाखाओं के बीच का चरित्र (--mergeinfo='/branches/foo:1-10
/शाखाएं/बार:3,5-6,8")
कॉन्फ़िगरेशन कुंजी: svn.pushmergeinfo
यह विकल्प git-svn को स्वचालित रूप से पॉप्युलेट करने का प्रयास करेगा
svn: जब संभव हो तो SVN रिपॉजिटरी में मर्जइन्फो प्रॉपर्टी। फिलहाल ये हो सकता है
केवल तभी किया जाना चाहिए जब डीकमिटिंग नॉन-फास्ट-फॉरवर्ड मर्ज हो, जहां सभी माता-पिता को छोड़कर
पहले ही एसवीएन में धकेल दिया गया है।
--इंटरैक्टिव
उपयोगकर्ता से यह पुष्टि करने के लिए कहें कि पैच सेट वास्तव में एसवीएन को भेजा जाना चाहिए। प्रत्येक के लिए
पैच, कोई उत्तर दे सकता है "हां" (इस पैच को स्वीकार करें), "नहीं" (इस पैच को हटा दें), "सभी"
(सभी पैच स्वीकार करें), या "छोड़ें"।
Git SVN dcommit यदि उत्तर "नहीं" या "छोड़ें" है, तो तुरंत वापस आ जाता है
एसवीएन के लिए कुछ भी करना।
शाखा
SVN रिपॉजिटरी में एक शाखा बनाएँ।
-एम, --संदेश
प्रतिबद्ध संदेश निर्दिष्ट करने की अनुमति देता है।
-टी, --टैग
निर्दिष्ट शाखाओं_सबडिर के बजाय tags_subdir का उपयोग करके एक टैग बनाएं
Git SVN init के दौरान।
-डी , --गंतव्य=
यदि एक से अधिक --शाखाएं (या --टैग) विकल्प दिए गए थे init or क्लोन
कमांड, आपको उस शाखा (या टैग) का स्थान प्रदान करना होगा जिसे आप बनाना चाहते हैं
एसवीएन भंडार में। निर्दिष्ट करता है कि शाखा बनाने के लिए किस पथ का उपयोग करना है
टैग और कॉन्फ़िगर किए गए किसी एक के बाईं ओर के पैटर्न से मेल खाना चाहिए
शाखाएँ या टैग संदर्भ विशिष्टताएँ। आप इन रेफस्पेक्स को कमांड के साथ देख सकते हैं
git config --get-all svn-remote. .शाखाएँ
git config --get-all svn-remote. .टैग
कहाँ -R विकल्प द्वारा निर्दिष्ट SVN रिपॉजिटरी का नाम है
init (या डिफ़ॉल्ट रूप से "svn")।
--उपयोगकर्ता नाम
इस रूप में प्रतिबद्धता निष्पादित करने के लिए SVN उपयोक्तानाम निर्दिष्ट करें। यह विकल्प ओवरराइड करता है
उपयोगकर्ता नाम कॉन्फ़िगरेशन संपत्ति.
--कमिट-यूआरएल
गंतव्य सबवर्सन रिपॉजिटरी से कनेक्ट करने के लिए निर्दिष्ट यूआरएल का उपयोग करें। यह है
ऐसे मामलों में उपयोगी जहां स्रोत एसवीएन भंडार केवल पढ़ने के लिए है। इस विकल्प
कॉन्फ़िगरेशन प्रॉपर्टी को ओवरराइड करता है कमिटुरल.
git config --get-all svn-remote. .commiturl
--माता - पिता
मूल फ़ोल्डर बनाएँ. यह पैरामीटर --parents on पैरामीटर के समतुल्य है
एसवीएन सीपी कमांड और गैर-मानक रिपॉजिटरी लेआउट के लिए उपयोगी है।
टैग
एसवीएन रिपॉजिटरी में एक टैग बनाएं। यह इसके लिए एक आशुलिपि है शाखा -t.
लॉग इन
इससे svn उपयोगकर्ताओं द्वारा संदर्भित किए जाने पर svn लॉग संदेशों को देखना आसान हो जाएगा
-आर/--संशोधन संख्या.
'एसवीएन लॉग' से निम्नलिखित सुविधाएं समर्थित हैं:
-आर [: ], --संशोधन= [: ]
समर्थित है, गैर-संख्यात्मक तर्क नहीं हैं: शीर्ष, अगला, आधार, पिछला, आदि...
-v, --verbose
यह svn लॉग में --verbose आउटपुट के साथ पूरी तरह से संगत नहीं है, लेकिन
यथोचित रूप से बंद.
--सीमा=
--max-count के समान नहीं है, मर्ज किए गए/बहिष्कृत कमिट की गणना नहीं करता है
--वृद्धिशील
समर्थित
नई सुविधाएँ:
--शो-कमिट करें
Git प्रतिबद्ध sha1 भी दिखाता है
--एक पंक्ति
--pretty=oneline का हमारा संस्करण
नोट
एसवीएन स्वयं केवल यूटीसी में समय संग्रहीत करता है और कुछ नहीं। नियमित एसवीएन क्लाइंट
UTC समय को स्थानीय समय (या TZ= वातावरण के आधार पर) में परिवर्तित करता है। यह
आदेश का व्यवहार समान है।
कोई भी अन्य तर्क सीधे पास कर दिया जाता है Git लॉग इन
दोष
दिखाएँ कि फ़ाइल की प्रत्येक पंक्ति को अंतिम बार किस संशोधन और लेखक ने संशोधित किया था। इसका आउटपुट
मोड डिफ़ॉल्ट रूप से 'एसवीएन ब्लेम' के आउटपुट के साथ प्रारूप-संगत है। एसवीएन की तरह
दोष आदेश, कार्यशील वृक्ष में स्थानीय अप्रतिबद्ध परिवर्तनों को नजरअंदाज कर दिया जाता है; संस्करण
HEAD संशोधन में फ़ाइल का एनोटेट किया गया है। अज्ञात तर्क सीधे पारित किये जाते हैं
सेवा मेरे Git दोष.
--गिट-प्रारूप
उसी प्रारूप में आउटपुट तैयार करें Git दोष, लेकिन एसवीएन संशोधन संख्याओं के साथ
Git प्रतिबद्ध हैश के बजाय। इस मोड में, वे परिवर्तन जिनके लिए प्रतिबद्ध नहीं किया गया है
एसवीएन (स्थानीय वर्किंग-कॉपी संपादन सहित) को संशोधन 0 के रूप में दिखाया गया है।
खोजें-रेव
जब फॉर्म का एसवीएन रिवीजन नंबर दिया गया rN, संबंधित Git कमिट लौटाता है
हैश (इसके बाद वैकल्पिक रूप से एक ट्री-ईश का उपयोग किया जा सकता है ताकि यह निर्दिष्ट किया जा सके कि कौन सी शाखा होनी चाहिए
खोजा गया)। जब ट्री-ईश दिया जाता है, तो संबंधित एसवीएन संशोधन संख्या लौटाता है।
-बी, --पहले
यदि एसवीएन संशोधन दिया गया है तो सटीक मिलान की आवश्यकता नहीं है, इसके बजाय कमिट ढूंढें
एसवीएन रिपॉजिटरी (वर्तमान शाखा पर) की स्थिति के अनुरूप
निर्दिष्ट संशोधन.
-ए, --बाद
यदि एसवीएन संशोधन दिया गया है तो सटीक मिलान की आवश्यकता नहीं है; यदि कोई सटीक नहीं है
मैच इतिहास में आगे की खोज करते हुए निकटतम मैच लौटाता है।
सेट-वृक्ष
आपको उपयोग करने पर विचार करना चाहिए dcommit इस आदेश के बजाय. निर्दिष्ट प्रतिबद्ध प्रतिबद्ध या
पेड़ एसवीएन पर ऑब्जेक्ट करता है। यह आपके आयातित फ़ेच डेटा के अद्यतित होने पर निर्भर करता है। यह
एसवीएन के लिए प्रतिबद्ध होने पर पैचिंग करने का कोई प्रयास नहीं करता है, यह बस है
ट्री या कमिट में निर्दिष्ट फ़ाइलों के साथ फ़ाइलों को अधिलेखित कर देता है। सभी का विलय माना गया है
से स्वतंत्र रूप से हुआ है Git SVN कार्य करता है.
बनाएँ-अनदेखा करें
निर्देशिकाओं पर svn:ignore संपत्ति को पुनरावर्ती रूप से ढूँढता है और मिलान बनाता है
.gitignore फ़ाइलें। परिणामी फ़ाइलें प्रतिबद्ध होने के लिए तैयार हैं, लेकिन प्रतिबद्ध नहीं हैं
प्रतिबद्ध। किसी विशिष्ट संशोधन को संदर्भित करने के लिए -r/--revision का उपयोग करें।
दिखाएँ-अनदेखा करें
निर्देशिकाओं पर svn:ignore संपत्ति को पुनरावर्ती रूप से ढूँढता और सूचीबद्ध करता है। आउटपुट है
$GIT_DIR/जानकारी/बहिष्कृत फ़ाइल में जोड़ने के लिए उपयुक्त।
mkdirs
खाली निर्देशिकाओं को फिर से बनाने का प्रयास जिन्हें कोर Git जानकारी के आधार पर ट्रैक नहीं कर सकता है
$GIT_DIR/svn/ में /unhandled.log फ़ाइलें। खाली निर्देशिकाएँ स्वचालित रूप से होती हैं
"git svn क्लोन" और "git svn rebase" का उपयोग करते समय पुनः बनाया गया, इसलिए "mkdirs" का उद्देश्य है
"गिट चेकआउट" या "गिट रीसेट" जैसे कमांड के बाद उपयोग करें। (देखें
एसवीएन-रिमोट. अधिक जानकारी के लिए .automkdirs कॉन्फ़िग फ़ाइल विकल्प।)
प्रतिबद्ध-अंतर
कमांड-लाइन से दो ट्री-ईश तर्कों का अंतर निर्धारित करता है। यह आदेश करता है
git svn init-ed रिपॉजिटरी के अंदर होने पर भरोसा न करें। इस आदेश में तीन लगते हैं
तर्क, (ए) भिन्न करने के लिए मूल पेड़, (बी) नया पेड़ परिणाम, (सी) यूआरएल
लक्ष्य तोड़फोड़ भंडार का। यदि आप अंतिम तर्क (यूआरएल) छोड़ा जा सकता है
से काम कर रहे हैं Git SVN-अवेयर रिपॉजिटरी (जिसके साथ init-ed किया गया है Git SVN).
-आर इसके लिए विकल्प आवश्यक है.
पता
किसी फ़ाइल या निर्देशिका के बारे में वही जानकारी दिखाता है जो 'svn info' प्रदान करती है। करता है
वर्तमान में -r/--संशोधन तर्क का समर्थन नहीं करता। केवल आउटपुट के लिए --url विकल्प का उपयोग करें
का मूल्य यूआरएल: खेत।
प्रोपलिस्ट
किसी दी गई फ़ाइल के बारे में सबवर्सन रिपॉजिटरी में संग्रहीत गुणों को सूचीबद्ध करता है
निर्देशिका। किसी विशिष्ट सबवर्सन संशोधन को संदर्भित करने के लिए -r/--revision का उपयोग करें।
प्रोगेट
किसी फ़ाइल के लिए पहले तर्क के रूप में दी गई सबवर्सन प्रॉपर्टी प्राप्त करता है। एक विशिष्ट
संशोधन को -r/--revision के साथ निर्दिष्ट किया जा सकता है।
दिखाएँ-बाहरी
तोड़फोड़ बाहरी दिखाता है. किसी विशिष्ट संशोधन को निर्दिष्ट करने के लिए -r/--revision का उपयोग करें।
gc
$GIT_DIR/svn/ को संपीड़ित करें /unhandled.log फ़ाइलें निकालें और हटाएँ
$GIT_DIR/svn/ /सूचकांक फ़ाइलें।
रीसेट करें
के प्रभाव को ख़त्म करता है लाना निर्दिष्ट संशोधन पर वापस जाएँ। यह आपको अनुमति देता है
फिर सेलाना एक एसवीएन संशोधन। आम तौर पर एसवीएन संशोधन की सामग्री कभी नहीं बदलनी चाहिए
और रीसेट करें आवश्यक नहीं होना चाहिए. हालाँकि, यदि एसवीएन अनुमतियाँ बदलती हैं, या यदि आप बदलते हैं
आपका --ignore-paths विकल्प, a लाना "कमिट में नहीं मिला" (फ़ाइल नहीं) के साथ विफल हो सकता है
पहले दिखाई दे रहा था) या "चेकसम बेमेल" (एक संशोधन छूट गया)। यदि समस्या है
फ़ाइल को हमेशा के लिए अनदेखा नहीं किया जा सकता (--ignore-paths के साथ) रेपो को सुधारने का एकमात्र तरीका
उपयोग करने के लिए है रीसेट करें.
केवल rev_map और refs/remotes/git-svn बदले गए हैं (देखें)। $GIT_DIR/svn/**/.rev_map.*
विवरण के लिए नीचे फ़ाइलें अनुभाग में)। अनुसरण करना रीसेट करें पंजीकरण शुल्क लाना और फिर Git रीसेट करें
or Git रिबेस स्थानीय शाखाओं को नए पेड़ पर ले जाना।
-आर , --संशोधन=
रखने के लिए नवीनतम संशोधन निर्दिष्ट करें. बाद के सभी संशोधन खारिज कर दिए जाते हैं।
-पी, --अभिभावक
निर्दिष्ट संशोधन को भी त्यागें, इसके बजाय निकटतम माता-पिता को रखें।
उदाहरण:
मान लें कि आपके पास "मास्टर" में स्थानीय परिवर्तन हैं, लेकिन आपको "आर2" को दोबारा लाने की जरूरत है।
r1---r2---r3 रिमोट/git-svn
ए---बी मास्टर
अनदेखा-पथ या SVN अनुमतियाँ समस्या को ठीक करें जिसके कारण "r2" अधूरा रह गया
पहली जगह में। तब:
गिट एसवीएन रीसेट -आर2 -पी
गिट एसवीएन फ़ेच
r1---r2'--r3' रिमोट/गिट-एसवीएन
आर2---आर3---ए---बी मास्टर
फिर "मास्टर" के साथ फिक्सअप करें Git रिबेस. उपयोग नहीं करो Git मर्ज या आपका इतिहास नहीं होगा
भविष्य के अनुकूल बनें dcommit!
गिट रीबेस--रिमोट्स/गिट-एसवीएन ए^ मास्टर पर
r1---r2'--r3' रिमोट/गिट-एसवीएन
ए'--बी' मास्टर
विकल्प
--साझा[=(झूठा|सच्चा|उमास्क|समूह|सभी|दुनिया|हर कोई)], --टेम्पलेट=
केवल के साथ प्रयोग किया जाता है init आज्ञा। इन्हें सीधे पास कर दिया जाता है Git init.
-आर , --दोहराव
के साथ प्रयोग किया जाता है लाना आदेश।
यह आंशिक/सतर्कित इतिहास के लिए संशोधन श्रेणियों का समर्थन करने की अनुमति देता है। $संख्या,
$NUMBER1:$NUMBER2 (संख्यात्मक श्रेणियाँ), $NUMBER:HEAD, और BASE:$NUMBER सभी समर्थित हैं।
यह आपको फ़ेच चलाते समय आंशिक दर्पण बनाने की अनुमति दे सकता है; लेकिन आम तौर पर ऐसा नहीं है
अनुशंसित क्योंकि इतिहास छोड़ दिया जाएगा और खो जाएगा।
-, --stdin
केवल के साथ प्रयोग किया जाता है सेट-वृक्ष आदेश।
stdin से कमिट की सूची पढ़ें और उन्हें उल्टे क्रम में कमिट करें। केवल अग्रणी
sha1 प्रत्येक पंक्ति से पढ़ा जाता है, इसलिए Git संशोधित सूची --सुंदर=ऑनलाइन आउटपुट का उपयोग किया जा सकता है।
--rmdir
केवल के साथ प्रयोग किया जाता है dcommit, सेट-वृक्ष और प्रतिबद्ध-अंतर आदेश देता है।
यदि पीछे कोई फ़ाइल नहीं बची है तो एसवीएन ट्री से निर्देशिकाएँ हटा दें। एसवीएन कर सकता है
संस्करण खाली निर्देशिकाएँ, और यदि कोई फ़ाइलें नहीं हैं तो उन्हें डिफ़ॉल्ट रूप से हटाया नहीं जाता है
उनमें छोड़ दिया. Git खाली निर्देशिकाओं का संस्करण नहीं बना सकता. इस ध्वज को सक्षम करने से
Git की तरह SVN कार्य के लिए प्रतिबद्ध।
कॉन्फ़िगरेशन कुंजी: svn.rmdir
-e, --edit
केवल के साथ प्रयोग किया जाता है dcommit, सेट-वृक्ष और प्रतिबद्ध-अंतर आदेश देता है।
एसवीएन पर प्रतिबद्ध होने से पहले प्रतिबद्ध संदेश संपादित करें। यह ऑब्जेक्ट के लिए डिफ़ॉल्ट रूप से बंद है
ये कमिट हैं और ट्री ऑब्जेक्ट बनाते समय इन्हें लागू किया जाता है।
कॉन्फ़िगरेशन कुंजी: svn.edit
-एल , --प्रतिलिपियाँ ढूँढ़ना अधिक कठिन है
केवल के साथ प्रयोग किया जाता है dcommit, सेट-वृक्ष और प्रतिबद्ध-अंतर आदेश देता है।
उन दोनों को सीधे पास कर दिया जाता है Git अंतर-वृक्ष; देख गिट-डिफ-ट्री(1) अधिक के लिए
जानकारी.
कॉन्फ़िगरेशन कुंजी: svn.l
कॉन्फ़िगरेशन कुंजी: svn.findcopiesharder
-ए , --लेखक-फ़ाइल=
सिंटैक्स उपयोग की गई फ़ाइल के साथ संगत है Git cvsimport:
लॉगिन नाम = जो उपयोगकर्ताuser@example.com>
यदि यह विकल्प निर्दिष्ट है और Git SVN एक एसवीएन कमिटर नाम का सामना करना पड़ता है जो नहीं है
लेखक-फ़ाइल में मौजूद है, Git SVN ऑपरेशन निरस्त कर देगा. फिर उपयोगकर्ता को यह करना होगा
उचित प्रविष्टि जोड़ें. पिछले को फिर से चलाना Git SVN के बाद आदेश
लेखक-फ़ाइल को संशोधित किया गया है, संचालन जारी रखना चाहिए।
कॉन्फ़िगरेशन कुंजी: svn.authorsfile
--लेखक-प्रोग=
यदि यह विकल्प निर्दिष्ट किया गया है, तो प्रत्येक एसवीएन कमिटर नाम के लिए जो मौजूद नहीं है
लेखक फ़ाइल में, दी गई फ़ाइल को पहले कमिटर नाम के साथ निष्पादित किया जाता है
तर्क। प्रोग्राम से "नाम" फ़ॉर्म की एक पंक्ति वापस आने की उम्मीद है ",
जिसे लेखक फ़ाइल में शामिल माना जाएगा।
-क्यू, --शांत
बनाना Git SVN कम वाचालता. इसे और भी कम क्रियात्मक बनाने के लिए दूसरी बार निर्दिष्ट करें।
-एम, --मर्ज, -एस , --रणनीति= , -p, --संरक्षित-विलय
इनका उपयोग केवल के साथ किया जाता है dcommit और रिबेस आदेश देता है।
सीधे पास कर दिया गया Git रिबेस का उपयोग करते समय dcommit अगर एक Git रीसेट करें उपयोग नहीं किया जा सकता (देखें)
dcommit).
-एन, --ड्राई-रन
इसका उपयोग इसके साथ किया जा सकता है dcommit, रिबेस, शाखा और टैग आदेश देता है।
के लिए dcommit, Git तर्कों की श्रृंखला का प्रिंट आउट लें जो दिखाएगा कि कौन सा अंतर होगा
एसवीएन के प्रति प्रतिबद्ध रहें।
के लिए रिबेस, अपस्ट्रीम एसवीएन रिपॉजिटरी से जुड़ी स्थानीय शाखा प्रदर्शित करें
वर्तमान शाखा और एसवीएन भंडार के यूआरएल से जुड़ा हुआ है जिसे लाया जाएगा
से।
के लिए शाखा और टैग, वे यूआरएल प्रदर्शित करें जिनका उपयोग बनाते समय प्रतिलिपि बनाने के लिए किया जाएगा
शाखा या टैग.
--उपयोग-लॉग-लेखक
जब svn पुनर्प्राप्त किया जाता है तो यह Git में चला जाता है (के भाग के रूप में)। लाना, रिबेसया, dcommit
संचालन), लॉग संदेश में पहली प्रेषक: या साइन-ऑफ-बाय: पंक्ति देखें और
उसे लेखक स्ट्रिंग के रूप में उपयोग करें।
--जोड़ें-लेखक-से
Git से svn के लिए प्रतिबद्ध होते समय (के भाग के रूप में) प्रतिबद्ध-अंतर, सेट-वृक्ष or dcommit
संचालन), यदि मौजूदा लॉग संदेश में पहले से ही प्रेषक: या नहीं है
साइन-ऑफ-बाय: लाइन, गिट कमिट की लेखक स्ट्रिंग के आधार पर एक फ्रॉम: लाइन जोड़ें। अगर
आप इसका उपयोग करते हैं, तो --use-log-author सभी के लिए एक वैध लेखक स्ट्रिंग पुनर्प्राप्त करेगा
प्रतिबद्ध.
उन्नत विकल्प
-मैं , --पहचान
यह GIT_SVN_ID सेट करता है (पर्यावरण का उपयोग करने के बजाय)। यह उपयोगकर्ता को इसकी अनुमति देता है
एकल यूआरएल को ट्रैक करते समय लाने के लिए डिफ़ॉल्ट रेफ़नेम को ओवरराइड करें। लॉग इन और
dcommit आदेशों को अब तर्क के रूप में इस स्विच की आवश्यकता नहीं है।
-आर , --एसवीएन-रिमोट
[svn-रिमोट " निर्दिष्ट करें "] अनुभाग का उपयोग करने के लिए, यह एसवीएन मल्टीपल की अनुमति देता है
रिपॉजिटरी को ट्रैक किया जाना है। डिफ़ॉल्ट: "एसवीएन"
--अनुसरण-अभिभावक
यह विकल्प केवल तभी प्रासंगिक है जब हम शाखाओं को ट्रैक कर रहे हों (रिपॉजिटरी में से किसी एक का उपयोग करके)।
लेआउट विकल्प --ट्रंक, --टैग, --शाखाएं, --stdlayout)। प्रत्येक ट्रैक की गई शाखा के लिए प्रयास करें
यह पता लगाने के लिए कि इसका संशोधन कहाँ से कॉपी किया गया था, और पहले एक उपयुक्त अभिभावक को सेट करें
शाखा के लिए Git प्रतिबद्ध. यह विशेष रूप से तब सहायक होता है जब हम किसी निर्देशिका को ट्रैक कर रहे होते हैं
जिसे रिपॉजिटरी के भीतर इधर-उधर ले जाया गया है। यदि यह सुविधा अक्षम है, तो
द्वारा बनाई गई शाखाएँ Git SVN सभी रैखिक होंगे और कोई इतिहास साझा नहीं करेंगे, अर्थात
इस बात की कोई जानकारी नहीं होगी कि शाखाएँ कहाँ से अलग की गईं या विलय की गईं। तथापि,
लंबे/जटिल इतिहास का अनुसरण करने में काफी समय लग सकता है, इसलिए इस सुविधा को अक्षम किया जा रहा है
क्लोनिंग प्रक्रिया को तेज कर सकता है। यह सुविधा डिफ़ॉल्ट रूप से सक्षम है, उपयोग करें
--no-follow-parent इसे अक्षम करने के लिए।
कॉन्फ़िगरेशन कुंजी: svn.followparent
कॉन्फ़िग फ़ाइल केवल विकल्प
svn.noMetadata, svn-रिमोट। .noमेटाडेटा
इससे छुटकारा मिलता है गिट-एसवीएन-आईडी: प्रत्येक प्रतिबद्धता के अंत में पंक्तियाँ।
इस विकल्प का उपयोग केवल एक-शॉट आयात के लिए किया जा सकता है Git SVN लाने में सक्षम नहीं होगा
मेटाडेटा के बिना फिर से। इसके अतिरिक्त, यदि आप अपना खो देते हैं $GIT_DIR/svn/**/.rev_map.*
फ़ाइलें, Git SVN उनका पुनर्निर्माण नहीं कर पाएंगे.
RSI Git SVN लॉग इन इसका उपयोग करने वाले रिपॉजिटरी पर भी कमांड काम नहीं करेगा। इसका उपयोग कर रहे हैं
के साथ संघर्ष करता है SvmProps का उपयोग करें (उम्मीद है) स्पष्ट कारणों के लिए विकल्प।
यह विकल्प अनुशंसित नहीं है क्योंकि इससे पुराने संदर्भों को ट्रैक करना मुश्किल हो जाता है
मौजूदा दस्तावेज़, बग रिपोर्ट और अभिलेखागार में एसवीएन संशोधन संख्याओं के लिए। अगर आप
अंततः एसवीएन से गिट में स्थानांतरित करने की योजना है और एसवीएन इतिहास को छोड़ने के बारे में निश्चित हैं,
विचार करना git-फ़िल्टर-शाखा(1) इसके बजाय। फ़िल्टर-शाखा भी पुन: स्वरूपण की अनुमति देती है
गैर-"svn.authorsFile" के लिए आसानी से पढ़ने और लेखकीय जानकारी को दोबारा लिखने के लिए मेटाडेटा
उपयोगकर्ताओं।
svn.useSvmProps, svn-रिमोट। .useSvmProps
यह अनुमति देता है Git SVN का उपयोग करके बनाए गए दर्पणों से रिपॉजिटरी यूआरएल और यूयूआईडी को फिर से मैप करना
मेटाडेटा के लिए SVN::मिरर (या svk)।
यदि एसवीएन संशोधन में एक संपत्ति है, "svm:headrev", तो संभावना है कि संशोधन था
एसवीएन द्वारा निर्मित::मिरर (एसवीके द्वारा भी उपयोग किया जाता है)। संपत्ति में एक भंडार यूयूआईडी और शामिल है
एक संशोधन. हम इसे ऐसा दिखाना चाहते हैं जैसे हम मूल यूआरएल को प्रतिबिंबित कर रहे हैं, इसलिए
एक सहायक फ़ंक्शन पेश करें जो मूल पहचान यूआरएल और यूयूआईडी लौटाता है, और उपयोग करता है
यह प्रतिबद्ध संदेशों में मेटाडेटा उत्पन्न करते समय होता है।
svn.useSvnsyncProps, svn-रिमोट। .useSvnsyncprops
उपयोगSvmProps विकल्प के समान; यह के उपयोगकर्ताओं के लिए है svnsync(1) आदेश
SVN 1.4.x और बाद के संस्करण के साथ वितरित किया गया।
एसवीएन-रिमोट. .रीराइटरूट
यह उपयोगकर्ताओं को वैकल्पिक URL से रिपॉजिटरी बनाने की अनुमति देता है। उदाहरण के लिए, ए
व्यवस्थापक चला सकता है Git SVN सर्वर पर स्थानीय रूप से (फ़ाइल के माध्यम से पहुंच: //) लेकिन इच्छा
मेटाडेटा में सार्वजनिक http:// या svn:// URL के साथ रिपॉजिटरी को वितरित करने के लिए
इसके उपयोगकर्ताओं को सार्वजनिक यूआरएल दिखाई देगा।
एसवीएन-रिमोट. .rewriteUUID
उपयोगSvmProps विकल्प के समान; यह उन उपयोगकर्ताओं के लिए है जिन्हें यूयूआईडी को रीमैप करने की आवश्यकता है
मैन्युअल रूप से। यह उन स्थितियों में उपयोगी हो सकता है जहां मूल यूयूआईडी उपलब्ध नहीं है
या तो उपयोग SvmProps या उपयोग SvnsyncProps के माध्यम से।
एसवीएन-रिमोट. .पुशूर्ल
Git के समान दूर। .पुशूर्ल, यह कुंजी उन मामलों में उपयोग करने के लिए डिज़ाइन की गई है
यूआरएल एक विकल्प प्रदान करने के लिए, केवल-पढ़ने योग्य परिवहन के माध्यम से एक एसवीएन रिपॉजिटरी की ओर इंगित करता है
परिवहन पढ़ें/लिखें। यह माना जाता है कि दोनों कुंजियाँ एक ही भंडार की ओर इशारा करती हैं।
विपरीत कमिटुरल, पुशर्ल एक आधार पथ है. या तो कमिटुरल or पुशर्ल हो सकता है
उपयोग किया गया, कमिटुरल प्रधानता मिलती है।
svn.brokenSymlinkवर्कअराउंड
यह संभावित रूप से महंगे चेक को चेक किए गए टूटे हुए सिम्लिंक के समाधान के लिए अक्षम कर देता है
टूटे हुए ग्राहकों द्वारा एसवीएन। यदि आप किसी एसवीएन रिपॉजिटरी को ट्रैक करते हैं तो इस विकल्प को "गलत" पर सेट करें
कई खाली बूँदें जो सिम्लिंक नहीं हैं। इस विकल्प को तब तक बदला जा सकता है Git SVN is
चल रहा है और अगले संशोधन पर प्रभावी होगा। यदि परेशान हो, Git SVN ऐसा मानता है
"सत्य" होने का विकल्प।
svn.पथनाम एन्कोडिंग
यह git svn को किसी दिए गए एन्कोडिंग में पथनामों को फिर से कोड करने का निर्देश देता है। इसका उपयोग किया जा सकता है
विंडोज़ उपयोगकर्ताओं और उन लोगों द्वारा जो दूषित फ़ाइल नामों से बचने के लिए गैर-यूटीएफ8 स्थानों में काम करते हैं
गैर-ASCII वर्णों के साथ. मान्य एनकोडिंग वे हैं जो पर्ल के एनकोड द्वारा समर्थित हैं
मॉड्यूल।
एसवीएन-रिमोट. .automkdirs
आम तौर पर, "git svn क्लोन" और "git svn rebase" कमांड खाली को फिर से बनाने का प्रयास करते हैं
निर्देशिकाएँ जो सबवर्सन रिपॉजिटरी में हैं। यदि यह विकल्प "गलत" पर सेट है,
तब खाली निर्देशिकाएँ केवल तभी बनाई जाएंगी जब "git svn mkdirs" कमांड चलाया जाएगा
स्पष्ट रूप से. यदि परेशान हो, Git SVN इस विकल्प को "सत्य" मानता है।
चूंकि noMetadata, rewriteRoot, rewriteUUID, useSvnsyncProps और useSvmProps विकल्प हैं
सभी उत्पन्न और उपयोग किए गए मेटाडेटा को प्रभावित करते हैं Git SVN; वे चाहिए में सेट किया जाए
किसी भी इतिहास को आयात करने से पहले कॉन्फ़िगरेशन फ़ाइल और ये सेटिंग्स कभी नहीं होनी चाहिए
सेट होने के बाद उन्हें बदल दिया जाता है।
इसके अतिरिक्त, इनमें से केवल एक विकल्प का उपयोग प्रति एसवीएन-रिमोट अनुभाग में किया जा सकता है क्योंकि वे
को प्रभावित गिट-एसवीएन-आईडी: मेटाडेटा लाइन, रीराइटरूट और रीराइटयूयूआईडी को छोड़कर जो हो सकती है
एक साथ प्रयोग किया जाता है।
बुनियादी उदाहरण
सबवर्सन-प्रबंधित प्रोजेक्ट के ट्रंक को ट्रैक करना और योगदान देना (टैग को अनदेखा करना)।
शाखाएँ):
# रेपो को क्लोन करें (जैसे git क्लोन):
गिट एसवीएन क्लोन http://svn.example.com/project/trunk
# नई क्लोन की गई निर्देशिका दर्ज करें:
सीडी ट्रंक
# आपको मास्टर ब्रांच पर होना चाहिए, 'गिट ब्रांच' से दोबारा जांचें
गिट शाखा
# कुछ काम करें और स्थानीय स्तर पर Git के लिए प्रतिबद्ध हों:
गिट प्रतिबद्ध...
# कुछ एसवीएन के लिए प्रतिबद्ध है, अपने स्थानीय परिवर्तनों को इसके विरुद्ध पुनः आधार बनाएं
# एसवीएन में नवीनतम परिवर्तन:
गिट एसवीएन रिबेस
# अब अपने परिवर्तन (जो पहले Git का उपयोग करके किए गए थे) SVN को भेजें,
# साथ ही आपके वर्किंग हेड को स्वचालित रूप से अपडेट करना:
गिट एसवीएन डीकमिट
# डिफ़ॉल्ट Git बहिष्कृत फ़ाइल में svn:ignore सेटिंग्स जोड़ें:
git svn शो-इग्नोर >> .git/info/exclude
संपूर्ण सबवर्सन-प्रबंधित प्रोजेक्ट पर नज़र रखना और उसमें योगदान करना (एक ट्रंक के साथ पूर्ण,
टैग और शाखाएँ):
# मानक एसवीएन निर्देशिका लेआउट (जैसे गिट क्लोन) के साथ एक रेपो क्लोन करें:
गिट एसवीएन क्लोन http://svn.example.com/project --stdlayout --उपसर्ग svn/
# या, यदि रेपो एक गैर-मानक निर्देशिका लेआउट का उपयोग करता है:
गिट एसवीएन क्लोन http://svn.example.com/project -टी टीआर -बी शाखा -टी टैग --उपसर्ग एसवीएन/
# आपके द्वारा क्लोन की गई सभी शाखाएँ और टैग देखें:
git शाखा -r
# एसवीएन में एक नई शाखा बनाएं
गिट एसवीएन शाखा वाल्डो
# अपने मास्टर को ट्रंक (या 'ट्रंक' की जगह किसी अन्य शाखा) पर रीसेट करें
# उचित नाम के साथ):
गिट रीसेट--हार्ड एसवीएन/ट्रंक
# आप एक समय में केवल एक शाखा/टैग/ट्रंक के लिए प्रतिबद्ध हो सकते हैं। प्रयोग
dcommit/rebase/show-ignore का # ऊपर जैसा ही होना चाहिए।
प्रारंभिक Git SVN क्लोन काफी समय लेने वाला हो सकता है (विशेषकर बड़े तोड़फोड़ के लिए)।
भंडार)। यदि कई लोग (या कई मशीनों वाला एक व्यक्ति) उपयोग करना चाहते हैं Git
SVN उसी सबवर्सन रिपॉजिटरी के साथ इंटरैक्ट करने के लिए, आप प्रारंभिक कार्य कर सकते हैं Git SVN क्लोन
एक सर्वर पर एक रिपॉजिटरी में और प्रत्येक व्यक्ति को उस रिपॉजिटरी को क्लोन करने के लिए कहें Git क्लोन:
# सर्वर पर आरंभिक आयात करें
एसएसएच सर्वर "सीडी/पब && गिट एसवीएन क्लोन http://svn.example.com/project [विकल्प...]"
# स्थानीय रूप से क्लोन करें - सुनिश्चित करें कि रेफरी/रिमोट/स्पेस सर्वर से मेल खाता है
एमकेडीआईआर परियोजना
सीडी परियोजना
जीआईटी init
गिट रिमोट मूल सर्वर जोड़ें:/पब/प्रोजेक्ट
गिट कॉन्फिग --रिप्लेस-ऑल रिमोट.ओरिजिन.फ़ेच '+रेफ्स/रिमोट्स/*:रेफ्स/रिमोट्स/*'
गिट फ़ेच
# भविष्य में दूरस्थ Git सर्वर से लाने/खींचने से रोकें,
# हम केवल भविष्य के अपडेट के लिए git svn का उपयोग करना चाहते हैं
गिट कॉन्फिग--रिमूव-सेक्शन रिमोट.ओरिजिन
# अभी लाई गई शाखाओं में से किसी एक से एक स्थानीय शाखा बनाएं
गिट चेकआउट -बी मास्टर FETCH_HEAD
# स्थानीय रूप से 'git svn' प्रारंभ करें (एक ही URL का उपयोग करना सुनिश्चित करें)।
# --stdlayout/-T/-b/-t/--उपसर्ग विकल्प जैसा कि सर्वर पर उपयोग किया गया था)
गिट एसवीएन init http://svn.example.com/project [विकल्प...]
# सबवर्सन से नवीनतम परिवर्तन निकालें
गिट एसवीएन रिबेस
रिबेस बनाम खींचो/मर्ज करो
उपयोग करना पसंद करें Git SVN रिबेस or Git रिबेस, बजाय Git खींच or Git मर्ज सेवा मेरे
अएकीकृत प्रतिबद्धताओं को ए के साथ सिंक्रनाइज़ करें Git SVN शाखा। ऐसा करने से इसका इतिहास बना रहेगा
अनइंटीग्रेटेड अपस्ट्रीम एसवीएन रिपॉजिटरी के संबंध में रैखिक प्रतिबद्धता करता है और उपयोग की अनुमति देता है
पसंदीदा का Git SVN dcommit एसवीएन में असंगठित प्रतिबद्धताओं को वापस धकेलने के लिए उपकमांड।
मौलिक रूप से, Git SVN अनुशंसा की गई कि डेवलपर्स को इससे हटा दिया जाए या विलय कर दिया जाए Git SVN डाली।
ऐसा इसलिए था क्योंकि लेखक ने git svn set-tree B को सिंगल हेड के बजाय प्रतिबद्ध करने का समर्थन किया था
एकाधिक कमिट करने के लिए git svn सेट-ट्री A..B नोटेशन। का उपयोग Git खींच or Git
मर्ज git svn सेट-ट्री A..B के साथ जब गैर-रेखीय इतिहास समतल हो जाएगा
एसवीएन में कमिट करना और इससे पिछले कमिट को अप्रत्याशित रूप से उलट कर मर्ज किया जा सकता है
एसवीएन में प्रतिबद्ध है।
मर्ज ट्रैकिंग
जबकि Git SVN रिपॉजिटरी के लिए कॉपी इतिहास (शाखाओं और टैग सहित) को ट्रैक कर सकता है
एक मानक लेआउट को अपनाते हुए, यह अभी तक गिट के अंदर हुए मर्ज इतिहास का प्रतिनिधित्व नहीं कर सकता है
एसवीएन उपयोगकर्ताओं के लिए अपस्ट्रीम पर वापस जाएं। इसलिए यह सलाह दी जाती है कि उपयोगकर्ता इतिहास को यथासंभव रैखिक रखें
एसवीएन के साथ संगतता को आसान बनाने के लिए गिट के अंदर संभव है (नीचे चेतावनी अनुभाग देखें)।
हैंडलिंग OF SVN शाखाओं
If Git SVN शाखाओं को लाने के लिए कॉन्फ़िगर किया गया है (और --follow-branches प्रभावी है), यह
कभी-कभी एक SVN शाखा के लिए कई Git शाखाएँ बनाता है, जहाँ अतिरिक्त शाखाएँ होती हैं
प्रपत्र के नाम हैं शाखानाम@nnn (एनएन एक एसवीएन संशोधन संख्या के साथ)। ये अतिरिक्त
शाखाएँ बनाई जाती हैं यदि Git SVN एसवीएन में पहली प्रतिबद्धता के लिए मूल प्रतिबद्धता नहीं मिल पा रही है
शाखा, शाखा को अन्य शाखाओं के इतिहास से जोड़ने के लिए।
आम तौर पर, एसवीएन शाखा में पहली प्रतिबद्धता में एक प्रतिलिपि ऑपरेशन होता है। Git SVN मर्जी
जिस एसवीएन संशोधन से शाखा बनाई गई थी, उसे प्राप्त करने के लिए इस प्रतिबद्धता को पढ़ें। इसके बाद कोशिश की जाएगी
इस एसवीएन संशोधन से मेल खाने वाली गिट प्रतिबद्धता ढूंढें, और इसे मूल के रूप में उपयोग करें
शाखा। हालाँकि, यह संभव है कि सेवा के लिए कोई उपयुक्त Git प्रतिबद्धता न हो
अभिभावक. ऐसा अन्य कारणों के साथ-साथ होगा, यदि एसवीएन शाखा संशोधन की एक प्रति है
जिसे प्राप्त नहीं किया गया था Git SVN (उदाहरण के लिए क्योंकि यह एक पुराना संशोधन है जिसे छोड़ दिया गया था
--संशोधन), या यदि एसवीएन में एक निर्देशिका की प्रतिलिपि बनाई गई थी जिसे ट्रैक नहीं किया गया है Git SVN (जैसे की
वह शाखा जिसे बिल्कुल भी ट्रैक नहीं किया गया है, या किसी ट्रैक की गई शाखा की उपनिर्देशिका)। ऐसे मामलों में,
Git SVN अभी भी एक Git शाखा बनाएगा, लेकिन मौजूदा Git कमिट का उपयोग करने के बजाय
शाखा का अभिभावक, यह उस निर्देशिका का एसवीएन इतिहास पढ़ेगा जिसे शाखा में कॉपी किया गया था
से और उपयुक्त Git कमिट बनाएँ। यह संदेश "इनिशियलाइज़िंग" द्वारा दर्शाया गया है
अभिभावक: ".
इसके अतिरिक्त, यह नाम की एक विशेष शाखा बनाएगा @, जहां
वह एसवीएन संशोधन संख्या है जिससे शाखा की प्रतिलिपि बनाई गई थी। यह शाखा करेगी
शाखा की नव निर्मित मूल प्रतिबद्धता को इंगित करें। यदि एसवीएन में शाखा हटा दी गई थी
और बाद में एक अलग संस्करण से पुनः निर्मित, ऐसी कई शाखाएँ होंगी
@.
ध्यान दें कि इसका मतलब यह हो सकता है कि एकल SVN संशोधन के लिए एकाधिक Git कमिट बनाए जाते हैं।
एक उदाहरण: एक मानक ट्रंक/टैग/शाखा लेआउट के साथ एक एसवीएन भंडार में, एक निर्देशिका
ट्रंक/उप r.100 में बनाया गया है। r.200 में, ट्रंक/उप को शाखाओं/ में कॉपी करके शाखाबद्ध किया जाता है।
Git SVN क्लोन -s फिर एक शाखा बनाएगा नीचे. यह नए Git कमिट भी बनाएगा
r.100 से r.199 तक और इन्हें शाखा के इतिहास के रूप में उपयोग करें नीचे. इस प्रकार दो Git होंगे
प्रत्येक संशोधन के लिए r.100 से r.199 तक प्रतिबद्ध है (एक ट्रंक युक्त, एक युक्त
ट्रंक/उप/). अंततः, यह एक शाखा बनाएगा उप@200 की नई मूल प्रतिबद्धता की ओर इशारा करते हुए
शाखा नीचे (अर्थात् r.200 और ट्रंक/उप/ के लिए प्रतिबद्धता)।
चेतावनियां
सरलता और सबवर्सन के साथ अंतरसंचालन के लिए, यह अनुशंसा की जाती है कि सभी
Git SVN उपयोगकर्ता सीधे एसवीएन सर्वर से क्लोन, फ़ेच और डीकमिट करते हैं, और सभी से बचते हैं Git
क्लोन/खींच/मर्ज/धक्का Git रिपॉजिटरी और शाखाओं के बीच संचालन। अनुशंसित
Git शाखाओं और उपयोगकर्ताओं के बीच कोड का आदान-प्रदान करने की विधि है Git प्रारूप-पैच और Git am,
या बस एसवीएन भंडार के लिए 'प्रतिबद्ध' होना।
रनिंग Git मर्ज or Git खींच जिस शाखा में आप जाने की योजना बना रहे हैं, उस पर इसकी अनुशंसा नहीं की जाती है dcommit से
क्योंकि सबवर्सन उपयोगकर्ता आपके द्वारा किए गए किसी भी मर्ज को नहीं देख सकते हैं। इसके अलावा, यदि आप विलय करते हैं या
Git शाखा से खींचें जो SVN शाखा का दर्पण है, dcommit गलत काम कर सकता है
डाली।
यदि आप विलय करते हैं, तो निम्नलिखित नियम पर ध्यान दें: Git SVN dcommit के शीर्ष पर प्रतिबद्ध होने का प्रयास करेंगे
एसवीएन कमिट में नामित
git लॉग --grep=^git-svn-id: --first-parent -1
आप चाहिए इसलिए सुनिश्चित करें कि जिस शाखा में आप प्रतिबद्धता करना चाहते हैं, उसकी नवीनतम प्रतिबद्धता सुनिश्चित करें
विश्व का सबसे लोकप्रिय एंव प्रथम विलय के जनक. अन्यथा अराजकता फैल जाएगी, खासकर यदि पहली बार
पैरेंट उसी एसवीएन शाखा पर एक पुरानी प्रतिबद्धता है।
Git क्लोन रेफरी/रिमोट/पदानुक्रम या किसी के अंतर्गत शाखाओं का क्लोन नहीं बनाता है Git SVN
मेटाडेटा, या कॉन्फ़िगरेशन। इसलिए रिपॉजिटरी का उपयोग करके बनाया और प्रबंधित किया गया Git SVN उपयोग करना चाहिए
rsync क्लोनिंग के लिए, यदि क्लोनिंग ही की जानी है।
जबसे dcommit आंतरिक रूप से रिबेस का उपयोग करता है, कोई भी Git आपको शाखा देता है Git धक्का पहले को dcommit on
दूरस्थ रिपॉजिटरी पर मौजूदा रेफरी को ओवरराइट करने के लिए मजबूर करने की आवश्यकता होगी। यह है
आम तौर पर बुरा अभ्यास माना जाता है, देखें गिट-पुश(1) विवरण के लिए दस्तावेज़ीकरण।
--संशोधन विकल्प का प्रयोग न करें Git-लिखें(1) उस परिवर्तन पर जो आप पहले ही प्रतिबद्ध कर चुके हैं। यह
--संशोधित प्रतिबद्धताओं को खराब अभ्यास माना जाता है जिन्हें आप पहले ही किसी दूरस्थ रिपॉजिटरी में भेज चुके हैं
अन्य उपयोगकर्ताओं के लिए, और एसवीएन के साथ डीकमिट उसी के अनुरूप है।
एसवीएन रिपॉजिटरी की क्लोनिंग करते समय, यदि रिपॉजिटरी का वर्णन करने के लिए कोई विकल्प नहीं है
लेआउट का उपयोग किया जाता है (--ट्रंक, --टैग, --शाखाएं, --stdlayout), Git SVN क्लोन एक Git बनाएगा
पूरी तरह से रैखिक इतिहास वाला भंडार, जहां शाखाएं और टैग अलग-अलग दिखाई देते हैं
कार्यशील प्रतिलिपि में निर्देशिकाएँ। जबकि संपूर्ण की प्रति प्राप्त करने का यह सबसे आसान तरीका है
रिपॉजिटरी, कई शाखाओं वाली परियोजनाओं के लिए यह कई बार कार्यशील प्रतिलिपि की ओर ले जाएगी
सिर्फ ट्रंक से भी बड़ा. इस प्रकार मानक निर्देशिका संरचना का उपयोग करने वाली परियोजनाओं के लिए
(ट्रंक/शाखाएं/टैग), विकल्प के साथ क्लोन करने की अनुशंसा की जाती है --stdlayout. यदि प्रोजेक्ट
एक गैर-मानक संरचना का उपयोग करता है, और/या यदि शाखाओं और टैग की आवश्यकता नहीं है, तो यह सबसे आसान है
केवल एक निर्देशिका (आमतौर पर ट्रंक) को क्लोन करने के लिए, बिना कोई रिपोजिटरी लेआउट दिए
विकल्प. यदि शाखाओं और टैग के साथ पूरा इतिहास आवश्यक है, तो विकल्प --तना /
--शाखाएँ / --टैग उपयोग किया जाना चाहिए।
एकाधिक --शाखाओं या --टैग का उपयोग करते समय, Git SVN स्वचालित रूप से नाम संभाल नहीं करता है
टकराव (उदाहरण के लिए, यदि अलग-अलग पथों से दो शाखाओं का एक ही नाम है, या यदि a
शाखा और टैग का एक ही नाम है)। इन मामलों में, उपयोग करें init अपना Git सेट करने के लिए
रिपॉजिटरी तो, आपके पहले से पहले लाना, $GIT_DIR/config फ़ाइल को संपादित करें ताकि
शाखाएँ और टैग विभिन्न नाम स्थानों से जुड़े हुए हैं। उदाहरण के लिए:
शाखाएँ = स्थिर/*:रेफ्स/रिमोट्स/एसवीएन/स्थिर/*
शाखाएँ = डीबग/*:रेफ्स/रिमोट्स/एसवीएन/डीबग/*
onworks.net सेवाओं का उपयोग करके ऑनलाइन git-svn का उपयोग करें