2012-10-02 16 views
9

मैंने जो कुछ सोचा था, उस पर काम करना शुरू कर दिया था, जो एक महीने के लिए चला गया था और अब मुझे एहसास हुआ कि यह वास्तव में एक पूरी साइड-प्रोजेक्ट है (बग से भरा है) जिसे वास्तव में अपनी शाखा की जरूरत है। इसके अलावा, एक बार जब मैंने इन परिवर्तनों को बंद कर दिया है, तो मैं अपनी कार्यशील प्रतिलिपि को वर्तमान में ट्रंक में रीसेट करने के लिए रीसेट करना चाहता हूं ताकि समय के साथ इस साइड प्रोजेक्ट पर वापस आने से पहले मैं मुख्य विकास प्रयास और उच्च प्राथमिकता वाले आइटमों की सहायता कर सकूं।मैं एसवीएन के साथ एक संशोधित कामकाजी प्रतिलिपि कैसे बना सकता हूं?

तो:

  1. मैं अपने काम की नकल में जांच किए बिना ही, एक नई शाखा, मेरे कार्य की नकल के आधार पर करना चाहते हैं (यह नवीनतम प्रमुख संशोधन के साथ तारीख तक हालांकि है)

  2. एक बार जब मैंने अपनी कामकाजी प्रतिलिपि बना ली है, तो मैं मूल रूप से शाखा में मौजूद सभी परिवर्तनों को हटाना चाहता हूं, और इसे ट्रंक में वर्तमान HEAD संशोधन से मिलान करने के लिए सेट कर दूंगा।

प्रक्रिया क्या है? मैं TortoiseSVN का उपयोग कर रहा हूँ, लेकिन कमांड लाइन निर्देश भी सहायक होंगे।

+0

एक समान प्रश्न [यहां] (http://stackoverflow.com/q/1308791/2047122) – Ashley

उत्तर

3

तो मैं उस में जाँच के बिना मेरे कार्य प्रतिलिपि शाखाओं के लिए दो तरीकों की कोशिश की है, यकीन नहीं है जो एक सबसे अच्छा तरीका जा रहा है खत्म करने जा रहा है:

विधि 1: नई शाखा

को पूरी निर्देशिका कॉपी
  • अपने काम की नकल फ़ोल्डर पर राइट-क्लिक करें और कछुआ SVN> रेपो ब्राउज़र
  • रेपो ब्राउज़र में एक नया निर्देशिका "ट्रंक"
  • "शाखाओं" अंदर निर्देशिका के रूप में एक ही स्तर पर "शाखाओं" कहा जाता है बनाने , "एन" के साथ एक नया डीआईआर बनाएँ एएम "आपकी शाखा (" नाम "से मेरा मतलब है, एक लेबल जो इस शाखा की पहचान करेगा, उदाहरण के लिए: यदि आप इस शाखा में एक विशेष अधिसूचना प्रणाली पर काम कर रहे हैं, तो इसे" सूचनाएं "आदि पर कॉल करें ...)
  • अब, अभी भी रेपो ब्राउज़र में राइट क्लिक करें और "फ़ोल्डर जोड़ें" चुनें और अपनी स्थानीय कामकाजी प्रतिलिपि चुनें
  • इसमें कुछ समय लगेगा, क्योंकि सभी फ़ाइलों (.svn फ़ाइलों सहित) की प्रतिलिपि बनाई जा रही है। यह अविश्वसनीय फ़ाइलों और फ़ाइलों की भी प्रतिलिपि बनाता है जिनके पास आपके पास svn है: अनदेखा, जो वांछित नहीं हो सकता है।

विधि 2: उपयोग शाखा/टैग

  • अधिकार अपने काम की नकल फ़ोल्डर क्लिक करें और कछुआ SVN> शाखा/टैग ...
  • यह रेपो ब्राउज़र को खोलता है, तो एक नया बनाने निर्देशिका "शाखाएं" और उसके अंदर, आपकी शाखा के "नाम" के साथ एक नया डीआईआर
  • आप "संग्रह से प्रतिलिपि बनाएँ" अनुभाग में "कार्यशील प्रतिलिपि" बटन का चयन करें। यह इस शाखा में आपके स्थानीय परिवर्तनों के अंतर को प्रतिबद्ध करेगा
  • ऐसा लगता है कि केवल उन फ़ाइलों की प्रतिलिपि बनाई गई है जो HEAD संशोधन में भिन्न हैं।
  • हालांकि, अगर आप फिर क्या, वहाँ में है पूरे प्रमुख संशोधन + अपने स्थानीय परिवर्तन

यह विधि 2 की तरह दिखता है में सभी कर रहे हैं देखने के लिए फिर से रेपो ब्राउज़र का उपयोग निश्चित रूप से बेहतर है।

फिर, साफ करने के लिए, यह कछुआ SVN के एक मामले> वापस लाएं ... और "सभी unversioned हटाएँ" था

+0

विधि 2 मेरे लिए बहुत अच्छा काम करता है - UI '17 में थोड़ा अलग है लेकिन निर्देश मुझे प्राप्त कर चुके हैं। – Conrad

3

कमांड लाइन में आप तोड़फोड़ "diff" कमांड के साथ एक पैच बना सकते हैं और फिर इसे अपनी नई शाखा में उपversण "पैच" कमांड के साथ लागू करें। (आप 'svn help diff' और 'svn help पैच' निष्पादित करके इन आदेशों के बारे में पढ़ सकते हैं)। आइए मान लें कि आपके पास ट्रंक और एक ही मूल निर्देशिका में new_branch नामक एक शाखा है।

cd trunk 
svn diff > ..\my_stuff.diff 

अब आपके पास पैच है, फिर इसे अपनी नव निर्मित शाखा में लागू करें।

cd new_branch 
svn patch ..\my_stuff.diff 

आप पैच आदेश को --dry रन झंडा जोड़कर पहला पैच चलाने के लिए, कुछ भी अजीब वास्तव में लागू करने से पहले होता है अगर देखने के लिए सूखी कर सकते हैं।

svn patch ..\my_stuff.diff --dry-run 
+0

कूल। लेकिन ऐसा लगता है कि आप ट्रंक रिपॉजिटरी से एक diff फ़ाइल बना रहे हैं, कामकाजी प्रति नहीं? या क्या मैं इसे गलत तरीके से पढ़ रहा हूं? –

+0

कोई svn diff कमांड "एक कार्यशील प्रतिलिपि में स्थानीय संशोधन प्रदर्शित नहीं करता है": http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.diff.html इसलिए मुझे अपने स्थानीय परिवर्तन मिलते हैं। – crunchdog

+1

मुझे आपके समाधान में रूचि है। ऐसा लगता है कि आप ऐसा कर रहे हैं जो new_branch को पैच कर रहा है, इसलिए यह काम करने की प्रतिलिपि की तरह बन जाता है। तो आप पहली जगह में new_branch कैसे प्राप्त करते हैं? –

1

मामले में आप एक ही फ़ोल्डर में पर काम जारी रखने के पसंद करते हैं, इस post कैसे को दर्शाता है।

मूल रूप से svn copy एक शाखा svn switch बनाने के लिए एक ही काम करने वाली प्रति और svn commit से नई शाखाओं को इंगित करने के लिए अपनी परिवर्तन करने के लिए।

सुनिश्चित करें कि आपने उसी शाखा/संशोधन से अपनी शाखा को संशोधित करना शुरू किया है (svn info चेक करने के लिए) या स्विच के बाद आप कई संघर्षों के साथ समाप्त हो सकते हैं।

+0

हो सकता है कि आप उस पोस्ट को अपने उत्तर में सारांशित कर सकें - अन्यथा यदि वह लिंक कभी मर जाता है, तो आपका उत्तर आपके समाधान में रुचि रखने वाले भविष्य के लोगों के लिए बेकार हो जाता है। –