तोड़फोड़: क्या मैं जांच कर सकता हूं, संशोधित कर सकता हूं और फिर इसे शाखा बना सकता हूं?


80

मैंने अपने ट्रंक से एक स्थानीय डीआईआर के लिए एक चेकआउट किया और वहां बहुत सारे स्थानीय परिवर्तन किए। अब मैं इसे ट्रंक में वापस नहीं करना चाहता, लेकिन मैं इस स्थानीय संस्करण से एक शाखा बनाऊंगा। क्या यह संभव है?

क्या मैं ट्रंक को एक शाखा में कॉपी कर सकता हूं, और फिर cd DIRऔर svn switchशाखा को?

अद्यतन : जवाब के लिए धन्यवाद, यह काम किया! चरणों का संक्षेप में वर्णन करने के लिए:

  • cd DIR
  • svn copy . new-branch-URL
  • svn switch new-branch-URL .

(नोट नोट करें)


हाँ तुम कर सकते हो। मैं tortoiseSVN का उपयोग करता हूं और आप इसमें कर सकते हैं।
निक

मैंने उपयोग करके बहुत अधिक संघर्ष पाया svn switch, इसलिए मैंने new-branch-URLउसके बाद से नई कॉपी जांचना चुना svn copy
fikr4n

जवाबों:


39

इसकी कमांड लाइन हेल्प के अनुसार svn copy डायरेक्टरी से रिपॉजिटरी URL पर कॉपी कर सकता है। इसलिए आपको अपनी कार्यशील प्रति शाखा में कॉपी करने में सक्षम होना चाहिए, जैसे:

svn copy working_directory url_to_branch

52

SVN बुक ( http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create ) स्थानीय कार्य प्रतिलिपि से शाखा बनाने की अनुशंसा नहीं करता है।

हालांकि svn copyवर्किंग कॉपी के भीतर डायरेक्टरी को डुप्लिकेट करने के लिए ब्रांच बनाना भी संभव है , लेकिन इस तकनीक की सिफारिश नहीं की जाती है। यह काफी धीमा हो सकता है, वास्तव में! क्लाइंट साइड पर एक निर्देशिका को कॉपी करना एक रैखिक-समय का संचालन है, जिसमें वास्तव में स्थानीय डिस्क पर उस काम करने वाली कॉपी निर्देशिका के भीतर हर फ़ाइल और उपनिर्देशिका को डुप्लिकेट करना पड़ता है।

इसके बजाय, पहले शाखा बनाएं और फिर svn switchकमांड का उपयोग करें ताकि आप अपने बदलाव कर सकें। यदि आपकी वर्किंग कॉपी ट्रंक के साथ काफी पुरानी है तो "@REV" को उस स्रोत URL पर जोड़ें जहां "REV" आपके द्वारा रिपोर्ट की गई वर्किंग कॉपी का संशोधन है svn info

सर्वर पर निर्देशिका को कॉपी करना, हालांकि, एक निरंतर-समय का संचालन है, और यह वह तरीका है जिससे अधिकांश लोग शाखाएं बनाते हैं।

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/my-calc-branch \
      -m "Creating a private branch of /calc/trunk."

2
इस उत्तर के लिए धन्यवाद। यह बेहतर समाधान है क्योंकि यह संशोधन इतिहास को बनाए रखता है।
ईवानफ्लेश

3
क्या इसका मतलब है कि अगर मेरी स्थानीय कार्यशील प्रति में परिवर्तन हुआ है, तो मैं svn copy <trunk-URL> <newBranch-URL>ट्रंक को svn सर्वर पर एक नई शाखा svn switchमें कॉपी करने के लिए कर सकता हूं , फिर बिना किसी बदलाव को खोए नई शाखा में स्विच करने के लिए अपनी कार्यशील प्रति में उपयोग कर सकता हूं? या स्विच मेरी अनकही संशोधित फ़ाइलों को मार देगा?
कासापो

3
@ कासापो, हाँ यह सही है। और यह भी नोट करें कि आप ट्रंक के साथ डेट से बाहर हैं; यदि ऐसा है, तो स्रोत URL में "@REV" जोड़ें जैसा कि मैंने नोट किया है कि शाखा में जाने के बाद आपके स्थानीय परिवर्तन केवल मतभेद के रूप में दिखाई देते हैं।
लुकास

मुझे बस एक बहुत ही उपयोगी लिंक जोड़ना चाहिए जो अधिक विस्तार से बताता है लुकास का समाधान: svnbook.red-bean.com/en/1.6/svn.branchmerge.switchwc.html (तल पर जानकारीपूर्ण बॉक्स देखें)। स्थानीय संशोधनों से एक शाखा बनाने के लिए यह वास्तव में सबसे साफ और सबसे सुविधाजनक समाधान है।
स्पिरोस

9

मेरे SVN क्लाइंट में: TortoiseSVN यह करने के लिए पर्याप्त है:

  • मैं उस शीर्ष निर्देशिका पर क्लिक करना चाहता हूं जिसे मैं शाखा देना चाहता हूं
  • "URL में" अपने रिपॉजिटरी में शाखा निर्देशिका का चयन करें
  • फ्रेम में "रिपॉजिटरी में कॉपी बनाएं:" वर्किंग कॉपी "का चयन करें"

किया हुआ :)

यह स्थानीय संस्करण को निर्दिष्ट रिपॉजिटरी यूआरएल को कॉपी करने जैसा है।


1

हां, आप इसे एसवीएन कमांडलाइन के साथ-साथ कछुआ एसवीएन द्वारा भी कर सकते हैं ।

आपको अपने एसवीएन वर्कचॉपी को src और अपनी नई शाखा को गंतव्य के रूप में निर्दिष्ट करना होगा

svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>

आज्ञा।

TortoiseSVN में सिर्फ अपनी वर्किंग कॉपी को इंगित करें, रेफरेंसु से "ब्रांच / टैग" चुनें और सेक्शन में "वर्किंग कॉपी" चुनें "से रिपॉजिटरी में कॉपी बनाएं:"

ध्यान दें कि इस तरह से टैग बनाने के लिए यह एक अच्छा विचार नहीं है (ट्रेसबिलिटी कारणों से), लेकिन शाखाओं के लिए यह पूरी तरह से ठीक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.