2010-07-21 15 views
39

से बाहर निर्देशिका मुझे एक समस्या है जो बहुत सरल लगती है लेकिन हल करना मुश्किल है। मुझे निर्देशिका हटाने के बाद उल्लिखित त्रुटि मिलती है। संघर्ष को हल करने के लिए मुझे अभी तक कोई समाधान नहीं मिला। इस प्रकार यह होता है:एसवीएन प्रतिबद्ध विफल:

 
svn add dir 
svn add dir/file1 
svn commit 
svn add dir/file2 
svn commit 
svn delete dir 
svn commit 
--> commit failed 
--> Directory '/dir' is out of date 

स्पष्ट समाधान 'svn update'does काम नहीं करते हैं। SVN अद्यतन के बाद एक अगली प्रतिबद्ध विफल रहता है के साथ:

 
Commit failed 
Directory '/dir' remains in conflict. 

इस बीच मैं एक समाधान पाया, लेकिन यह थोड़ा जटिल है:

 
svn resolve --accept working dir 
svn commit --> still fails 
svn update 
svn commit --> still fails 
svn resolve --accept working dir 
svn commit --> NO PROBLEM! 

दो सवाल: - क्योंकि मैं कर रहा हूँ किसी को भी इस व्यवहार की व्याख्या कर सकते हैं इसके बारे में बहुत उत्सुक - यह समस्या एक अधिक जटिल स्थिति में एक पर्ल स्क्रिप्ट में होती है। क्या कोई मुझे पर्ल स्क्रिप्ट में 'करने योग्य' के साथ एक सरल समाधान दे सकता है?

उत्तर

58

बस svn update बनाएं और फिर आपकी प्रतिबद्धता को काम करना चाहिए।

+2

मुझे यह करने के लिए मारो:

$ svn delete dir/file D dir/file $ svn ci -m "comment1" Deleting dir/file $ svn delete dir/ D dir $ svn ci -m "comment2" Deleting dir svn: Commit failed (details follow): svn: Item 'dir' is out of date 

मुद्दा मैं हल करने के लिए सूत्रों का कहना है फिर से अद्यतन और इस्तेमाल आदेश 'URL हटाने के'। और उसमें जोड़ने के लिए, एक अद्यतन आपके सामान्य वर्कफ़्लो का हिस्सा होना चाहिए। मैं आम तौर पर काम करने से पहले अद्यतन करता हूं। – hometoast

+0

यह उस स्पष्ट समाधान में से एक था जिसके बारे में मैंने सोचा था।लेकिन svn अद्यतन के बाद मुझे मिलता है: svn प्रतिबद्ध -> '\ dir' संघर्ष में रहता है –

+0

लेकिन 'svn update' आपकी कार्यशील निर्देशिका में परिवर्तन को हटा देता है, इसलिए आपका पूरा काम हटा दिया जाएगा और फिर कुछ भी करने के लिए नहीं किया जाएगा। क्या मैं सही हू? – VextoR

1

तुम बस अद्यतन करने के लिए और उसके बाद के लिए प्रतिबद्ध

+1

यह उस स्पष्ट समाधान में से एक था जिसके बारे में मैंने सोचा था। लेकिन svn अद्यतन के बाद मुझे मिलता है: svn प्रतिबद्ध -> '\ dir' संघर्ष में बनी हुई है –

1

आप अंतिम प्रतिबद्ध करने से पहले svn up dir की कोशिश की है की ज़रूरत है?

सबवर्सन प्रत्येक फ़ाइल और निर्देशिका अलग से वर्तमान संशोधन ट्रैक करता है:

+1

यह उन स्पष्ट समाधानों में से एक था जिनके बारे में मैंने सोचा था। लेकिन svn अद्यतन के बाद मुझे मिलता है: svn प्रतिबद्ध -> '\ dir' संघर्ष में बनी हुई है –

57

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

इसलिए फाइल जोड़ने के बाद आपके परिदृश्य में रेपो में मूल निर्देशिका में आपकी कार्यशील प्रति की तुलना में उच्च संशोधन है। जब आप किसी पुराने संस्करण पर काम कर रहे निर्देशिका को हटाने का प्रयास करते हैं।

हल करने के लिए:

एक svn update क्या फ़ाइल को जोड़ने के बाद, लेकिन dir को हटाने से पहले।

सामान्य रूप से यदि आप किसी और के परिवर्तनों को खींचना नहीं चाहते हैं, तो आप अद्यतन को निर्देशिका में ही प्रतिबंधित कर सकते हैं: svn up --depth empty dir

+0

इसके लिए बहुत धन्यवाद, @ स्टीफन फ्रेडरिक - बस यह ध्यान रखना चाहता था कि जब एक संपूर्ण निर्देशिका के 'svn mv' (जो मुझे लाया जाता है इस पोस्ट में), ऐड और डिलीट एक चरण में होता है; और दुर्भाग्यवश ऐसा लगता है कि "फ़ाइल जोड़ने के बाद एक svn अद्यतन करें, लेकिन डीआईआर हटाने से पहले" उस मामले में लागू नहीं किया जा सकता है। हालांकि, मेरे लिए क्या काम किया गया था 'पुरानी' निर्देशिका मैन्युअल रूप से हटाएं ('rm -rf' के साथ) और फिर फिर से प्रतिबद्ध करें। चीयर्स! – sdaau

+0

मैं इस जवाब को शीर्ष पर लाने के लिए खुशी से उत्साहित हूं। – Brandon

+0

@ स्टीफन फ्रेडरिक, अगर आप बर्गमो, इटली के पास होते हैं तो कॉल करें, मुझे आपका रात्रिभोज है ... –

0

इस समस्या को हल करने के लिए मैंने 'svn revert' का उपयोग किया, फिर फिर से प्रतिबद्ध करें, जिसे तब 'svn delete' में सामग्री से छुटकारा पाना चाहिए और फिर से प्रतिबद्ध होना चाहिए। मुझे यह समस्या एक निर्देशिका का नाम बदलने की कोशिश कर रही है लेकिन उम्मीद है कि यह काम करेगा।

0

अद्यतन, सफाई करें और फिर प्रतिबद्ध करें।

0

इसी समस्या मैं नए सिरे से कार्यक्षेत्र के साथ सामना:

$ svn delete --force https://server/path.../dir 
$ svn update 
संबंधित मुद्दे