मैं एक शाखा कैसे बनाऊँ?


जवाबों:


349

तोड़फोड़ में शाखाकरण एक बहुत ही हल्के और कुशल नकल सुविधा द्वारा किया जाता है।

ब्रांचिंग और टैगिंग प्रभावी रूप से समान हैं। svn copyकमांड के उपयोग से रिपॉजिटरी में कहीं और रिपॉजिटरी में पूरे फोल्डर को कॉपी करें ।

मूल रूप से इसका मतलब है कि यह कन्वेंशन से है कि एक फ़ोल्डर की नकल करने का क्या मतलब है - चाहे वह बैकअप, टैग, शाखा या जो भी हो। इस बात पर निर्भर करता है कि आप चीजों के बारे में कैसे सोचना चाहते हैं (सामान्य तौर पर इस बात पर निर्भर करता है कि आपने अतीत में एससीएम टूल का उपयोग किया है) आपको अपनी शैली का समर्थन करने के लिए अपने रिपॉजिटरी के भीतर एक फ़ोल्डर संरचना स्थापित करने की आवश्यकता है।

आम शैलियों बुलाया अपने भंडार के शीर्ष पर फ़ोल्डरों का एक समूह है करने के लिए कर रहे हैं tags, branches, trunkहै कि आप अपने पूरे कॉपी करने के लिए अनुमति देता है - आदि, trunkमें (या उप सेट) tagsऔर / या branchesफ़ोल्डरों। यदि आपके पास एक से अधिक प्रोजेक्ट हैं, तो आप प्रत्येक प्रोजेक्ट के तहत इस तरह की संरचना को दोहराना चाहते हैं:

अवधारणा का उपयोग करने में थोड़ा समय लग सकता है - लेकिन यह काम करता है - बस यह सुनिश्चित करें कि आप (और आपकी टीम) उन सम्मेलनों पर स्पष्ट हैं जो आप उपयोग करने जा रहे हैं। एक अच्छा नामकरण सम्मेलन होना भी एक अच्छा विचार है - ऐसा कुछ जो आपको बताता है कि शाखा / टैग क्यों बनाया गया था और क्या यह अभी भी उपयुक्त है - पुरानी शाखाओं के उन तरीकों पर विचार करें जो अप्रचलित हैं।


211
"svn copy" का यह फायदा है कि यह इतिहास को ब्रांचिंग के पहले बनाए रखेगा। मैन्युअल रूप से किसी अन्य निर्देशिका में प्रतिलिपि नहीं होगी।
WhyNotHugo

5
यह भी ध्यान दें कि आमतौर पर "ट्रंक" के टैग या शाखा उपनिर्देशिका के लिए एक बुरा विचार है। इससे यह पता लगाना मुश्किल हो जाता है कि किस उपनिर्देशिका को ट्रैक किया गया था, और अधिकांश उपकरण इन शाखाओं द्वारा भ्रमित हो जाएंगे (जैसे स्विचिंग शाखाओं का अर्थ होगा डब्ल्यूसी परिवर्तनों की निर्देशिका संरचना, जो आईडीई को भ्रमित करेगी और उपकरण बनाएगी)। बस हमेशा "ट्रंक" शाखा।
21

1
@Will वास्तव में svn cpसस्ती प्रतियों का उपयोग करता है, यह शाखा के दौरान वास्तविक फ़ाइलों की प्रतिलिपि नहीं बनाता है । Svnbook.red-bean.com/en/1.1/ch04s02.html
Walty Yeung

607

svn copyनिम्नानुसार कमांड का उपयोग करके एक नई शाखा बनाएं :

$ svn copy svn+ssh://host.example.com/repos/project/trunk \
           svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
      -m "Creating a branch of project"

24
अगला उपयोग svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .(यदि आप वर्तमान चेकआउट को नई शाखा में बदलना चाहते हैं) या svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH(यदि आप अलग निर्देशिका में नई शाखा रखना चाहते हैं) तो नई बनाई गई शाखा पर काम करना शुरू करें।
याकूब नारबस्की

3
नोट: कुछ मामलों में आपको--parentsविकल्पका उपयोग करना होगाsvn copy!
जकुब नारबस्की

1
किसी कारण के लिए मैंने इस cmd का उपयोग किया और यह काम नहीं किया, लेकिन जब मैंने svn + ssh को सिर्फ https में बदल दिया तो यह काम नहीं किया। क्या मैंने कुछ गलत किया था? svn + ssh का अर्थ क्या है? धन्यवाद!
अवील सकल

आप पहली बार अपने शाखा में एक नया निर्देशिका बनाने के लिए -> SVN mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "शाखाओं निर्देशिका सभी शाखाओं धारण करने के लिए बनाने के"
सिल्वियो Troia

यदि मैं -mविकल्प को छोड़ देता हूं , तो यह पसंद करता है svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist। इसके साथ -mकहते हैं svn: E205009: Local, non-commit operations do not take a log message or revision properties(मैंने पते बदल दिए हैं, लेकिन वे मौजूद हैं, छोड़कर, inc, नई शाखा निर्देशिका, और संपूर्ण पथ + url जो किसी कारण से त्रुटि में विलय हो गया है)
हाय-एंजेल

33

यदि आप रेपो https के माध्यम से उपलब्ध हैं, तो आप इस कमांड को शाखा में उपयोग कर सकते हैं ...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"

26
svn cp /trunk/ /branch/NEW_Branch

यदि आपके पास ट्रंक में कुछ स्थानीय परिवर्तन हैं तो Rsyncपरिवर्तनों को सिंक करने के लिए उपयोग करें

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch

2
rsyncइस तरह से उपयोग करने की कोई आवश्यकता नहीं है । svn cpकिसी भी स्थानीय परिवर्तन की नकल भी करेगा।
केविन पेंको

@ केविनपैंको यह बिना बदलाव के नकल नहीं करेगा।
पराग बाफना

4
यह svn के साथ पुष्टि करता है, संस्करण 1.8.5
केविन पेंको

मैं इस बारे में सोच रहा हूं। यह सबसे आसान विकल्प लगता है, और AFAI याद है, यह वही है जो मैंने किया था जब मैं 3 साल पहले SVN के साथ काम कर रहा था। लेकिन इस और सर्वर के साथ सीधे काम करने वालों के बीच अंतर क्या है?
ऑलिगॉफ्रेन

@KevinPanko क्या आप जानते हैं कि क्या यह नई बनाई गई फ़ाइलों की भी प्रतिलिपि बनाता है?
जॉन हैमिल्टन

16

मान लें कि आप एक ट्रंक नाम ("टेस्ट" के रूप में) से एक शाखा बनाना चाहते हैं तो उपयोग करें:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST

14

आम तौर पर आप इसे svn + ssh: //host.example.com/repos/project/branches/mybranch पर कॉपी करेंगे ताकि आप रिपॉजिटरी में कई शाखाएं रख सकें, लेकिन आपका सिंटैक्स मान्य है।

अपने रिपॉजिटरी लेआउट को सेट करने के तरीके के बारे में कुछ सलाह यहाँ दी गई है ।


13

नए एसवीएन उपयोगकर्ताओं के लिए शीर्ष टिप; यह जल्दी से सही URL प्राप्त करने में थोड़ी मदद कर सकता है।

svn infoवर्तमान चेक-आउट शाखा के बारे में उपयोगी जानकारी प्रदर्शित करने के लिए चलाएँ ।

URL चाहिए (यदि आप रूट फ़ोल्डर में svn चलाते हैं) तो आपको वह URL देना होगा जिसकी आपको प्रतिलिपि बनाने की आवश्यकता है।

इसके अलावा नई बनाई गई शाखा में जाने के लिए, svn switchकमांड का उपयोग करें :

svn switch http://my.repo.url/myrepo/branches/newBranchName

3
आप रिपॉजिटरी रूट के स्थान पर ^ का उपयोग भी कर सकते हैं
chim

11

यदि आप भी अपनी शाखा के विलय की योजना बनाते हैं, तो मेरा सुझाव है कि आप इसे देखें:

Svnmerge.py

मुझे लगता है कि तोड़फोड़ 1.5 मर्ज ट्रैकिंग के अधिक बनाता है, मैं उस के साथ कोई अनुभव नहीं है। मेरी परियोजना 1.4.x पर है और svnmerge.py एक जीवन रक्षक है!


6
  • अपने वर्तमान प्रोजेक्ट के बाहर एक नया फ़ोल्डर बनाएँ। आप इसे कोई भी नाम दे सकते हैं। (उदाहरण: आपके पास "अनुकूलन" नामक एक परियोजना के लिए एक चेकआउट है। और इसमें कई परियोजनाएं हैं, जैसे "प्रोजेक्ट 1", "प्रोजेक्ट 2" .... और आप "प्रोजेक्ट 1" की एक शाखा बनाना चाहते हैं। तो पहले "खोलें" अनुकूलन ", राइट क्लिक करें और एक नया फ़ोल्डर बनाएं और इसे एक नाम दें," प्रोजेक्ट 1ब्रांच ")।
  • "Myproject1" .... TortoiseSVN -> शाखा / टैग पर राइट क्लिक करें।
  • वर्किंग कॉपी चुनें।
  • ओपन ब्राउजर .... "टू यूआरएल" के समानांतर ही सही।
  • अनुकूलन का चयन करें ..... राइट क्लिक करें फिर फ़ोल्डर जोड़ें। और उस फ़ोल्डर के माध्यम से जाएं जिसे आपने बनाया है। यहाँ यह "Project1Branch" है। अब जोड़ने के लिए ओके बटन पर क्लिक करें।
  • इस नए प्रतिबंध की जांच करें।
  • फिर से अपने प्रोजेक्ट पर जाएं कि आप कौन सी ब्रांच बनाना चाहते हैं। राइट क्लिक TorotoiseSVN -> शाखा / टैग। फिर वर्किंग कॉपी का चयन करें। और आप URL को अपनी शाखा के नाम के रूप में दे सकते हैं। जैसे {आपका IP पता / svn / AAAA / अनुकूलन / Project1Branch}। और आप URL में नाम सेट कर सकते हैं, इसलिए यह केवल इस नाम से फ़ोल्डर बनाएगा। जैसे {आपका IP पता / svn / AAAA / अनुकूलन / Project1Branch / MyProject1Branch}।
  • OK बटन दबाएं। अब आप लॉग देख सकते हैं ... आपकी कार्यशील प्रति आपकी शाखा में संग्रहीत की जाएगी।
  • अब आप चेक आउट कर सकते हैं ... और आपको अपने काम का आनंद लेने देंगे। :)

-1

नीचे विंडोज मशीन में TortoiseSVN का उपयोग करके ट्रंक से एक शाखा बनाने के चरण हैं। यह स्पष्ट रूप से TortoiseSVN क्लाइंट को स्थापित करने की आवश्यकता है।

  1. स्थानीय विंडो मशीन से अपडेट किए गए ट्रंक पर राइट क्लिक करें
  2. TortoiseSVN का चयन करें
  3. शाखा / टैग पर क्लिक करें
  4. एसवीएन रिपॉजिटरी में पथ का चयन करें। ध्यान दें कि गंतव्य URL दिए गए पथ और शाखा के नाम के अनुसार अपडेट किया गया है
  5. रिपॉजिटरी ब्राउज़र में शाखाओं के अंदर फ़ोल्डर न बनाएं
  6. शाखाओं पथ जोड़ें। उदाहरण के लिए, शाखाएँ /
  7. अपने संदर्भ के लिए एक सार्थक लॉग संदेश जोड़ें
  8. ठीक क्लिक करें, यह स्थानीय सिस्टम पर नया फ़ोल्डर बनाता है
  9. नए फ़ोल्डर में बनाई गई शाखा को चेकआउट करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.