2008-09-10 11 views
19

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

यह हमें थोड़ा डराता है, क्योंकि यह संभव है कि यह विलय, किसी भी संकलन त्रुटियों का उत्पादन नहीं करते समय, कम से कम कुछ तर्क त्रुटियों को पेश कर सकता है जिन्हें आसानी से नहीं पहचाना जा सकता है।

बहुत ही सरल उदाहरण: मैं विधि के बाद के भाग में कुछ तर्क बदलने के लिए सी # विधि के भीतर काम कर रहा हूं, और कोई और उस मान को बदलता है जो एक चर को विधि की शुरुआत में शुरू किया जाता है। दूसरे व्यक्ति का परिवर्तन कोड की तर्ज पर नहीं है जिस पर मैं काम कर रहा हूं इसलिए कोई संघर्ष नहीं होगा; लेकिन विधि के आउटपुट को नाटकीय रूप से बदलना संभव है।

हम उम्मीद कर रहे थे कि स्थिति क्या होगी यदि एक विलय की आवश्यकता हो, तो दोनों फाइलें दिखाई देंगी और कम से कम एक सरल स्वीकृति/अस्वीकार परिवर्तन विकल्प प्रस्तुत किया जाएगा, ताकि कम से कम हम जानते हों कि कुछ बदल गया है और यह देखने के लिए विकल्प दिया गया है कि यह हमारे कोड को प्रभावित करता है या नहीं।

क्या सबवर्सन/टोर्टोइज एसवीएन के साथ ऐसा करने का कोई तरीका है? या फिर हम बहुत ज्यादा हमारे वर्तमान काम करने के तरीके में फंस और बस यह बात है कर देना चाहिए रहे हैं ...

उत्तर

6

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

+3

इससे पहले कि आप किसी भी बदलाव को नोट करें, svn खुशी से आपकी फाइलों को मर्ज करेगा। वैसे भी यह जांचना एक अच्छा विचार है कि क्या बदल गया :-) – aku

+17

एसवीएन मुद्दे शिक्षा के हर जवाब क्यों है? क्या यह इंगित नहीं करता है कि उपकरण को संचालित करने के लिए बड़ी संख्या में जनजातीय ज्ञान की आवश्यकता है और इसे ठीक किया जाना चाहिए? – whitey04

+2

"_Then आप देख सकेंगे कि आपके संस्करण और नवीनतम भंडार संस्करण_ के बीच क्या बदल गया है", जो बहाल करने के लिए तुच्छ नहीं हो सकता है, खासतौर पर उस मामले में जहां फ़ाइल में सवाल है जैसे ग्राफिकल की तरह कुछ के लिए डिजाइनर-जेनरेट एक्सएमएल ईएआई उपकरण। ग्राफिकल ईएआई उपकरण द्वारा उत्पन्न कुछ फ़ाइलों को अपडेट करते समय अनुमान लगाए जाने के लिए अंक :-)। – Sepster

10

यहाँ TortoiseSVN के लिए एक चाल है:

How to turn off “auto-merge” in Subversion

svn.exe के लिए चाल स्थापित करने के लिए है एक कार्यक्रम के लिए svn बाहरी diff उपकरण जो लगातार असफल हो जाएगा।

svn --diff-cmd=/bin/false 

यदि बाहरी diff प्रोग्राम विफल रहता है, तो svn निष्कर्ष निकाला है कि संघर्ष अनजान है और इसे विलय नहीं करेगा।

+0

इस मामले में svn 1.8 खाली परिणाम फ़ाइल –

+0

कोई विचार है कि मैं इस तरह कुछ कैसे उपयोग कर सकता हूं लेकिन 'svn up' के साथ? –

1

मैं सुझाव दूंगा कि यदि संभव हो तो आपको प्राकृतिक सबवर्जन मॉडल के साथ काम करना सीखना चाहिए। व्यावहारिक रूप से हम पाते हैं कि विवाद दुर्लभ हैं, और तर्कसंगत संघर्ष का प्रकार जो आप लगभग अस्तित्व में नहीं बोलते हैं (मुझे अपने भंडार में पिछले 4 वर्षों में एक उदाहरण याद नहीं है)।

टीम के सदस्यों को पूरे दिन बैच करने के बजाए जितना संभव हो सके छोटे पैमाने पर परिवर्तन (सहीता बनाए रखने के दौरान) में चेक-इन करना चाहिए ताकि इसे एक बार में जांच सकें। इससे किसी और के काम पर कदम उठाने की संभावना कम हो जाएगी।

यदि आप किसी विशेष बदलाव के बारे में चिंतित हैं, तो आप लॉकिंग तंत्र को फ़ाइल में अन्य परिवर्तनों को रोकने के लिए लॉकिंग करते हैं। locking पर Red Book अध्याय देखें।

+5

यह "उपवर्तन मॉडल" के साथ एक बड़ी समस्या है। यह मानता है कि एक स्वचालित विलय संभवतः सफल है। मुझे कभी ऐसा टूल नहीं मिला है जो विश्वसनीय रूप से कोड को कम से कम 50% मानव हस्तक्षेप के बिना विलय कर सकता है। – whitey04

+2

मैं बार-बार चेक-इन करता हूं और फिर भी यह पता चलता हूं कि प्रत्येक बार जब यह स्वचालित रूप से विलय हो जाता है तो एसवीएन बहुत सारी चीजें तोड़ देता है। सबसे अधिक आधिकारिक उत्तर के लिए – Sam

13

यह सवाल जवाब में बताया गया है: How can I prevent Subversion from doing automatic merges?

  1. TortoiseSVN- में> सेटिंग-> जनरल> सबवर्सन विन्यास फाइल, संपादित करें बटन पर क्लिक करें।
  2. बदलें [helpers] अनुभाग

    diff-cmd = "C:\\false.bat" 
    

    जोड़कर (ध्यान दें डबल बैकस्लैश)

  3. फ़ाइल सी बनाएँ: \ false.bat दो पंक्तियों

    @type %9 
        @exit 1 
    
शामिल है जो
+0

मेरा +1। – Sepster

+0

मैं इसे जांचता हूं और समाधान svn 1.8 –

0

यही कारण है कि स्वचालित (इकाई) परीक्षण एक फंड है वितरित सॉफ्टवेयर विकास का आकस्मिक हिस्सा। उदाहरण में आप देते हैं, कम से कम एक इकाई परीक्षण svn अद्यतन पर असफल होना चाहिए और आपको त्रुटि के बारे में चेतावनी देना चाहिए।

याद रखें कि सबवर्सन क्या है: एक संस्करण नियंत्रण प्रणाली, पूरी तरह से काम करने वाला कोड-विलय-उपकरण नहीं है।

+4

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

+6

यूनिट परीक्षण गलत स्वचालन को उचित नहीं ठहराता है। – Sam

+0

यूनिट परीक्षण कभी भी इसके कारण होने वाली हर चीज़ को पकड़ने में सक्षम नहीं होगा। यह सिर्फ खराब व्यवहार है। – User

संबंधित मुद्दे