2010-02-20 15 views
11

मेरे पास कम से कम एक गायब फ़ाइल के साथ एक सबवर्जन वर्किंग कॉपी है (स्थानीय प्रतिलिपि पेड़ संघर्ष को ठीक करते समय हटा दी गई है)। यह मजाकिया है क्योंकि फ़ाइल का संस्करण है, यह भंडार में दिखाई देता है, पेड़ संघर्ष संकल्प 100% स्थानीय था (यह अद्यतन पर हुआ और मैंने बाद में नहीं किया) और मैंने कई बार "svn cleanup" चलाया है, लेकिन मेरा कोई भी नहीं सबवर्जन क्लाइंट (कमांड लाइन एसवीएन और टोर्टोइज एसवीएन) काम कर सकते हैं कि कॉपी कॉपी दूषित है। सभी परिवर्तनों को वापस करने से फ़ाइल को वापस नहीं मिला।सबवर्सन वर्किंग कॉपी को सत्यापित करने के लिए कैसे करें

मैं इसे सामान्य रूप से ठीक कर दूंगा (कहीं और ताज़ा चेकआउट और WinMerge के साथ परिवर्तन कॉपी करें); मेरे पास वास्तव में एक अलग सवाल है:

आप एक कार्यशील प्रति की वैधता का परीक्षण कैसे कर सकते हैं?

बेशक, आप हमेशा एक नई प्रतिलिपि देख सकते हैं और फ़ाइल की उपयोगिता की तुलना कर सकते हैं लेकिन ... क्या कोई बेहतर तरीका नहीं है? svnadmin verify के समतुल्य कार्यशील प्रति को सत्यापित करने के लिए कोई उपकरण है?

=== अद्यतन ===

मैं चाल की नकल भ्रष्टाचार को रोकने के लिए काम कर के साथ अच्छा जवाब मिल गया है लेकिन मेरे सवाल का एक तरीका है पाने की लाइन पर अधिक होने की 100% यकीन है कि काम कर रहे था प्रति दोनों वास्तविक भंडार सामग्री के साथ सुसंगत और जुड़ा हुआ है; अन्य कार्यों में, svnadmin के बराबर एक कार्यशील प्रति कमांड सत्यापित करें।

अब तक, ऐसा लगता है कि:

  • सबवर्सन इस तरह के उपकरण प्रदान नहीं करता है और यह है कि SVN डेटा स्वरूप एक भी लिखने के लिए अनुमति नहीं है संभव है।

  • एक संशोधन के लिए अद्यतन करना एक ऐसी तकनीक है जो कुछ मुद्दों को ढूंढती है (और ठीक करती है), हालांकि आपको अक्सर पुराने संशोधन में पीछे हटना पड़ता है और मुझे लगता है कि यह केवल गायब फाइलों का पता लगा सकता है अगर वे बदल दिए गए हैं संशोधन सीमा में।

  • एक ताजा काम करने वाली प्रति की जांच करना केवल 100% विश्वसनीय विधि की तरह दिखता है।

+0

मुझे ऐसी ही समस्याएं थीं - फ़ोल्डरों का नाम बदलना कभी-कभी किसी समस्या का कारण बनता है, हालांकि हर बार नहीं। * आमतौर पर *, एक वापसी से कार्यशील प्रतिलिपि को एक वैध स्थिति में वापस लाया जाएगा, हालांकि विचलित वस्तुओं (नामित फ़ोल्डर की "प्रतिलिपि" पक्ष के साथ) पीछे छोड़ दिया गया है। लेकिन हाँ, मुझे एक वैधता जांच उपकरण भी चाहिए। – Steve314

+0

संभवतः, मुद्दा यह है कि कामकाजी प्रतिलिपि राज्य मान्य है, सिर्फ यह नहीं कि आपको क्या लगता है। उदाहरण के लिए, यह एक कार्यशील प्रतिलिपि के लिए मान्य है जो भंडार में मौजूद कुछ फ़ाइलों या फ़ोल्डरों को बाहर करने के लिए मान्य है। सिर्फ इसलिए कि एक राज्य उलझन में है और आप जो चाहते हैं वह नहीं है, इसका मतलब यह नहीं है कि यह वैध रूप से उत्पन्न नहीं हो सकता है, इस स्थिति में "त्रुटि" पता लगाने योग्य नहीं है। ए "इस कामकाजी प्रतिलिपि की स्थिति" उपकरण जो कुछ भी "रोचक" सूचीबद्ध करता है, वह अधिक उपयोगी हो सकता है। – Steve314

+0

@ स्टीव 314: कार्यशील प्रति की मूल सामग्री भंडार में उन लोगों के समान होनी चाहिए। सबवर्जन एक केंद्रीकृत संस्करण नियंत्रण प्रणाली है, इसलिए यह एक आवश्यक शर्त है और यह पता लगाने योग्य होना चाहिए। बेशक, आपके द्वारा वर्णित टूल भी बहुत अच्छा होगा (उदाहरण के लिए, मुझे सीखना अच्छा लगेगा जब मेरे पास अलग-अलग भंडारों से .svn dirs है) लेकिन यह एक अलग कहानी है। –

उत्तर

1

अब तक, मुझे लगता है वहाँ ऐसा करने के लिए एक विश्वसनीय तरीका नहीं है कि होगा यह तब तक जब तक आप एक नई प्रतिबद्धता न करें और निर्देशिका पेड़ दोनों की तुलना करें। यदि .snv निर्देशिका में डेटा गुम है लेकिन वास्तव में क्षतिग्रस्त नहीं है, तो कुछ फ़ाइलों को पहचानने के लिए कार्यशील प्रति में पर्याप्त जानकारी नहीं है।

हालांकि यह संभव है कि WC-NG बेहतर (या नहीं) के लिए इसे बदलता है, वर्तमान प्रारूप रॉक-ठोस नहीं है।

2

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

यदि आप चाहें तो कमांड लाइन से भी diff निष्पादित कर सकते हैं।

+0

दिलचस्प है ... यदि मैं रिपोजिटरी ट्रंक के साथ काम करने वाली प्रति की तुलना करने के लिए टोर्टोइस एसवीएन के "यूआरएल के साथ डिफ" मेनू आइटम का उपयोग करता हूं तो मुझे अंत में मिलता है एक त्रुटि संदेश: पथ डी: /Project/working-copy/missing-file.php पैचफ़ाइल में मौजूद नहीं है। TortoiseMerge ने उपसर्ग को अलग करके पैच को लागू करने का प्रयास किया लेकिन कोई मिलान पथ नहीं मिला। –

+0

@ स्टीव 314: क्या आपको 'tortoisesvn' टैग याद आया? – sbi

+0

@ एसबीआई - हाँ, और ऐसा लगता है कि मैं दूसरी गिनती पर भी गलत हूं - ओह ठीक है। – Steve314

1

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

जो मुझे नहीं पता था कि जब आप ऐसा करते हैं, तो आप .svn मेटाडेटा निर्देशिका के साथ प्रतिलिपि बनाते हैं। यह उपversण अंतहीन भ्रम का कारण बनता है - यदि आप एक ग्राफिकल क्लाइंट के साथ काम करते हैं, तो नई निर्देशिका में ठीक से जांच की जाती है, और ग्राहक प्रत्येक प्रतिबद्धता के बाद आपको एक साफ प्लेट दिखाता है। लेकिन, नई निर्देशिका को कभी भी में चेक नहीं किया जाता है।

जब आप किसी अन्य कामकाजी प्रतिलिपि की जांच करते हैं तो आप इसे देखते हैं, और फिर आप खराब हो जाते हैं क्योंकि उन फ़ाइलों को कभी भी संस्करण नियंत्रण में नहीं था। फिर मुझे ठीक करने के लिए आधा दिन खर्च करें।

जब आपको एक कार्यशील प्रतिलिपि में निर्देशिका को डुप्लिकेट करने की आवश्यकता होती है, तो हमेशा इसे पहले निर्यात करें, फिर इसे वापस जोड़ें।

3

यह एक समस्या यह है कि मैं कुछ समय पहले अनुभवी की तरह दिखता है: svn - file in working copy seems "lost"

शब्दशः wcoenen के जवाब उद्धृत: एक बग

SVN 1.6.1 ग्राहकों ( TortoiseSVN सहित) था जहां फ़ोल्डरों कभी कभी होगा गलती से गहराई "खाली" पर सेट हो। यह आपके द्वारा वर्णित लक्षणों का कारण बनता है। (ध्यान दें कि यह SVN 1.6.1 द्वारा संभव है कि फ़ोल्डर बनाया गया था "खाली" है और कि जिस तरह से भले ही आप पहले है में एक नए SVN ग्राहक करने के लिए उन्नत समय मतलब रह गया है।)

इसे ठीक करने के लिए, TortoiseSVN में " संशोधन करने के लिए अद्यतन" मेनू आइटम का उपयोग करें और गहराई "पूरी तरह से पुनरावर्ती" का चयन करें

+0

यह पहली नजर में अच्छा लग रहा है। मेरी टेस्ट कॉपी में, इस विधि ने लापता फाइल को पुनर्प्राप्त कर लिया है। –

+0

झूठा अलार्म।मैंने दो कामकाजी प्रतियों में परीक्षण किया है, मेरे पास एक ही स्थान और संशोधन के लिए यह बिंदु है: उनमें से एक में एक संस्करण वाली फ़ाइल गायब है और "संशोधन में अपडेट करें" फ़ाइल को पुनर्प्राप्त करने के लिए कुछ भी नहीं करता है (या चेतावनी भी देता है कि कुछ गड़बड़ है)। –

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