2009-03-20 13 views
5

पर अपने स्थानीय संस्करण को नवीनतम रूप से कैसे मजबूर करें मैंने कुछ बदलाव किए और उन्हें (संस्करण 2 में) किया, और पाया कि उन्होंने कुछ मिनट बाद अपने कार्यक्रम में नई बग पेश की। इसलिए मैंने कुछ फ़ाइलों को पुराने संस्करण में स्विच किया ताकि कुछ फाइलें मेरे स्थानीय प्लेटफ़ॉर्म पर संस्करण 1 पर वापस आ सकें। तब से मैंने बहुत सारे बदलाव किए हैं जिन्हें मैं खोना नहीं चाहता हूं, और मैंने सर्वर पर अपने स्थानीय परिवर्तन प्राप्त करने के लिए प्रतिबद्ध (संस्करण 3) का उपयोग किया है।एसवीएन

मेरे पास स्थानीय रूप से संस्करण है जो मैं मुख्य संशोधन के रूप में भंडार पर होना चाहता हूं, भले ही कुछ फाइलें आधिकारिक तौर पर "संस्करण 1" पर हों। मुझे लगता है कि मुझे किसी भी तरह से एसवीएन विलय का उपयोग करना चाहिए, लेकिन मुझे सच में यकीन नहीं है कि इसे कैसे किया जाए। कोई सलाह?

संपादित करें: जब मैं diff का उपयोग करता हूं, तो यह स्थानीय संस्करण से प्रतिनिधि संस्करण में परिवर्तन दिखाता है। मैं अद्यतन कर सकता था, लेकिन फिर मेरे पास स्थानीय रूप से एक गैर-वर्किंग संस्करण होगा। तो मैं जो चाहता हूं वह कुछ प्रकार की मजबूर प्रतिबद्धता है, जो कहता है "यह नवीनतम संस्करण है, अवधि"।

संपादित 2: "प्रतिबद्ध" करते समय, एसवीएन रिपोर्ट करता है कि इसमें कोई बदलाव नहीं है। प्रश्न के लिए नील बटरवर्थ के लिए धन्यवाद।

संपादित 3: मैंने आखिरकार क्या किया, एफवाईआई: मुझे अभी टिम के सुझाव का उपयोग करना चाहिए था, लेकिन मैं वास्तव में क्या कर रहा था इसके बारे में सोचने के बिना अद्यतन करने के लिए पर्याप्त गूंगा था। बेशक, सब कुछ वास्तव में मरम्मत से परे गड़बड़ कर दिया गया था। तो मैंने अंततः परियोजना को एक नई निर्देशिका में निर्यात करने के लिए किया था। जाहिर है कि आपको ऐसा करने का तरीका नहीं है, लेकिन मैं अब इस सामान से गड़बड़ नहीं करना चाहता था। अंत में मुझे वास्तविक परियोजना पर वास्तविक प्रगति करने के लिए वापस जाना पड़ा ;-) मुझे पता है कि जब मैं एक बड़ी टीम में काम कर रहा हूं, तो मैं ऐसी चीजें नहीं कर सकता, लेकिन मैं नहीं हूं :)

+0

जब आप अपने परिवर्तन करते हैं तो क्या होता है? –

+0

यह कहता है: कोई बदलाव नहीं। अच्छा सवाल – panschk

उत्तर

9

ब्रूट फोर्स रास्ता:

  1. अपनी स्थानीय फ़ाइलों की प्रति बनाएं।
  2. सभी निर्देशिकाओं में सभी .svn फ़ाइलों को हटाएं
  3. HEAD संस्करण देखें।
  4. अपनी स्थानीय फ़ाइलों को चेक आउट हेड पर कॉपी करें।
  5. अपनी स्थानीय फ़ाइलों को वापस भंडार में जांचें।

यदि आपने इसे सही तरीके से किया है, तो एसवीएन क्लाइंट को बदली गई फ़ाइलों को रिपोजिटरी के अपडेट के रूप में समझना चाहिए। हालांकि यह अन्य लोगों द्वारा किए गए किसी भी बदलाव को ओवरराइट करेगा जिसे आप रखना चाहते हैं। यदि आप उन परिवर्तनों को रखना चाहते हैं, तो अंतिम कार्य करने से पहले सभी फ़ाइलों पर पहले एक अंतर करें और सभी हालिया परिवर्तनों को शामिल करें।

रिवर्स मूल संशोधन के लिए वापस विलय:

  • प्रत्येक परिवर्तित फ़ाइल के लिए,
    1. diff, सूचना में परिवर्तनों आप रखना चाहते हैं की तुलना करें, और अपने स्थानीय प्रतिलिपि तदनुसार बदल जाते हैं।
    2. अपनी स्थानीय फाइलों की एक प्रति बनाएं।
    3. रिवर्स हेड वापस वांछित मूल संस्करण में विलय करें।
    4. स्थानीय फ़ाइलों की अपनी प्रतिलिपि विलय की गई स्थानीय प्रतिलिपि पर पेस्ट करें। (हटाएं।SVN पहले)
    5. प्रतिबद्ध

यह शायद अधिक मैनुअल है जब तक आप बस वापस सब कुछ वापस लौटने में कोई भी परिवर्तन के लिए जाँच के बिना।

सबवर्जन, AFAIK के पास अभी तक एक निरपेक्ष आदेश के लिए कोई प्रावधान नहीं है, इसलिए सभी परिवर्तन हमेशा HEAD की स्थानीय प्रतिलिपि के साथ होते हैं।

वापस वापस करना एक रिवर्स विलय है, और सभी विलय हमेशा आपकी स्थानीय प्रतिलिपि पर होते हैं। एक आदर्श प्रणाली में, विलय को ट्रैक किया जाएगा, लेकिन सबवर्जन विलय जानकारी ट्रैक नहीं करता है, इसलिए आप विधि 1 भी कर सकते हैं, और केवल प्रतिबद्ध लॉग में टिप्पणी कर सकते हैं।

कुछ URL को देखने के लिए:

+0

यह योजना बी होगी, अगर कुछ और काम नहीं करता है। लेकिन काफी मैनुअल श्रम होगा। मैं इसे और अधिक चालाक तरीके से करना पसंद करूंगा ;-) – panschk

+0

हाँ, प्रदर्शन करने के लिए थोड़ा परेशान है, लेकिन यह हमेशा काम करता है। –

+0

यह वास्तव में मैनुअल नहीं है। मैंने इसे कई बार पहले किया है। खिड़कियों को मानना, सभी का चयन करें, कॉपी करें, कहीं और पेस्ट करें। सभी .svn के लिए खोजें, हटाएं। सिर पर अपडेट करें। पुराने संस्करण की प्रतिलिपि बनाएँ, वापस पेस्ट करें। प्रतिबद्ध होते हैं। – Tim

3

वहाँ दो संभावनाएं यहां हैं:

  • आप प्रभावी रूप से स्विच रेपो के पिछले संस्करण में एड करें, इसलिए आपने संस्करण 1 पर काम किया है;
  • या आपने संस्करण 2 पर फ़ाइलों के पुराने संस्करणों की जांच की, उन्हें बदल दिया और एक नए संस्करण के रूप में प्रतिबद्ध किया।

किसी भी मामले में, यदि आपने सफलतापूर्वक परिवर्तन किए हैं, तो यह सर्वर पर होना चाहिए।

यदि आप सुनिश्चित नहीं कर रहे हैं, हालांकि, मैं सलाह देते हैं:

  • अपने वर्तमान फ़ाइलों का बैकअप रखें;
  • रेपो की एक नई प्रति जांचें;
  • यदि आप देखते हैं कि यह आपकी प्रतिलिपि के समान है, तो कुछ और करने के लिए नहीं।
  • यदि नहीं, तो (.svn छिपे फ़ोल्डर के अलावा!)
+0

यह वास्तव में स्वीकार किए गए उत्तर से मुझे अधिक समझ में आता है। मैंने इसे कुछ बार खुद किया है। – WakeUpScreaming

2

अपने बैकअप के साथ नई प्रतिलिपि में सभी फाइलों के ऊपर लिख तो मैं के एक पुराने संस्करण फ़ाइलों में से कुछ में स्विच करने से कुछ प्राप्त करने के लिए मेरे स्थानीय प्लेटफ़ॉर्म पर संस्करण 1 पर वापस फ़ाइलें।

इसके बजाय आपको विशेष संशोधन से परिवर्तनों को वापस करना चाहिए था। आपको अभी भी अद्यतन करने में सक्षम होना चाहिए और उसके बाद उस संशोधन से परिवर्तनों को वापस करना चाहिए।