"स्थानीय संपादन, अद्यतन पर आने वाली डिलीट" संदेश को कैसे हल करें


293

जब मैं एक काम करता svn status .हूं, मुझे यह मिलता है:

!     C auto-complete-config.elc
      >   local edit, incoming delete upon update
!  +  C auto-complete.elc
      >   local edit, incoming delete upon update
!  +  C popup.elc
      >   local edit, incoming delete upon update
!  +  C fuzzy.elc
      >   local edit, incoming delete upon update

मूल रूप से, ये फ़ाइलें रिपॉजिटरी में नहीं होनी चाहिए। एक डेवलपर ने उन्हें हटा दिया है। फिर, मुझे लगता है कि मैंने svn rm ...गलती से इस तथ्य के बाद किया था ( svn update .इसके बजाय किया जाना चाहिए )।

तो अब, जब मैं करता svn status .हूं, मुझे ये पेड़ संघर्ष संदेश मिलते हैं।

मुझे यहां डॉक मिला लेकिन यह सुनिश्चित नहीं था कि डॉक के अनुसार इसे "मर्ज" कैसे किया जाए।

उनसे कैसे छुटकारा पाया जाए?

मुझे लगता है कि मेरी वर्किंग कॉपी रिपॉजिटरी के साथ सिंक में है। पता नहीं क्यों इन संदेशों से पता चलता है। इन फ़ाइलों को हटा दिया जाना चाहिए और जहाँ तक मुझे पता है हर जगह हटा दिया जाता है। मैंने कोशिश की svn update .और svn revert .जब मैं करता हूं तब भी मुझे यह संदेश मिलता है svn status .


1
lesmana का जवाब संदेश के लिए भी काम करता है"local missing or deleted or moved away, incoming dir edit upon merge"
वॉरिएंट चिंपांज़ी

जवाबों:


434

लघु संस्करण:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar

यदि संघर्ष फ़ाइलों के बजाय निर्देशिकाओं के बारे में है, तो touchसाथ mkdirऔर rmसाथ बदलें rm -r


नोट: निम्न प्रक्रिया के लिए भी यही प्रक्रिया काम करती है:

$ svn st
!     C foo
      >   local delete, incoming delete upon update
!     C bar
      >   local delete, incoming delete upon update

दीर्घ संस्करण:

ऐसा तब होता है जब आप किसी फाइल को एडिट करते हैं जबकि किसी और ने फाइल डिलीट की और पहले कमिट किया। एक अच्छे svn नागरिक के रूप में आप एक कमिट से पहले एक अपडेट करते हैं। अब तुम्हारा संघर्ष है। यह महसूस करते हुए कि फ़ाइल को हटाना आपके काम की कॉपी से फ़ाइल को हटाना सही काम है। सामग्री के बजाय svn अब शिकायत करती है कि स्थानीय फाइलें गायब हैं और यह एक परस्पर विरोधी अद्यतन है जो अंततः हटाए गए फ़ाइलों को देखना चाहता है। अच्छी नौकरी svn।

svn resolveकाम नहीं करना चाहिए , जो भी कारण से, आप निम्न कार्य कर सकते हैं:

प्रारंभिक स्थिति: स्थानीय फाइलें गायब हैं, अपडेट विरोधाभासी है।

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

परस्पर विरोधी फ़ाइलों को फिर से बनाएँ:

$ touch foo bar

यदि संघर्ष निर्देशिकाओं के बारे में है, तो इसके touchसाथ बदलें mkdir

नई स्थिति: रिपॉजिटरी में जोड़ी जाने वाली स्थानीय फाइलें (हाँ, सही, svn, जो भी आप कहते हैं), अभी भी परस्पर विरोधी अपडेट करें।

$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update

राज्य svn को फ़ाइलों को वापस करना उन्हें पसंद है (इसका मतलब है कि हटा दिया गया है):

$ svn revert foo bar

नई स्थिति: स्थानीय फाइलें svn के लिए ज्ञात नहीं हैं, अब परस्पर विरोधी अपडेट नहीं करें।

$ svn st
?       foo
?       bar

अब हम फ़ाइलों को हटा सकते हैं:

$ rm foo bar

यदि संघर्ष निर्देशिकाओं के बारे में है, तो इसके rmसाथ बदलें rm -r

अब कोई शिकायत नहीं:

$ svn st

किया हुआ।


8
यह तब भी काम करता है जब संघर्ष एक निर्देशिका के लिए होता है। के बजाय स्पर्श foo बार कर mkdir foo और mkdir बार । बाकी हर कोई एक जैसा है।
विपिन जोनी

आप svn st | grep ! | cut -f 7 -d' ' | xargs touchसभी लापता फ़ाइलों को छूने के लिए एक लाइनर के रूप में उपयोग कर सकते हैं
टिबर ब्लीसी

निर्देशिकाओं के लिए भी याद रखें rm -r foo bar(या rmdir foo barविंडोज पर या यदि आपको विंडोज पसंद है)।
14

इस जवाब ने मेरी पवित्रता को बचा लिया। धन्यवाद।
सैम

159

का उपयोग करके संघर्ष को हल करने का प्रयास करें

svn resolve --accept=working PATH

धन्यवाद। यह सही समाधान लगता है। (पहले "समाधान" विकल्प के बारे में नहीं पता था। मैंने इसे उत्तर के रूप में चिह्नित किया। हालांकि, किसी कारण से मेरे लिए काम नहीं किया, शायद इसलिए कि मेरे काम करने वाले कॉपी पेड़ को दूषित कर दिया गया है या क्या ... अंत में मैंने इसे हल किया सिर्फ डायर को हटाकर एक अपडेट करें।
Xah Lee

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

मेरी समझ यह है कि अगर रिपॉजिटरी में मूल को हटा दिया गया था या नहीं, तो इससे कोई फर्क नहीं पड़ता था, क्योंकि "हल" केवल काम करने वाली कॉपी पर काम करता है।
गोवी

मेरे लिए सही समाधान
सर्जियो अल्वारेज़

20

मुझे बस यही मुद्दा मिला और मैंने यही पाया

$ svn revert foo bar

समस्या का हल किया।

svn संकल्प मेरे लिए काम नहीं किया:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

$ svn resolve --accept working .

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working foo
Resolved conflicted state of 'foo'

$ svn st
!  +    foo
!  +  C bar
      >   local edit, incoming delete upon update

2

आप विरोध हुआ निर्देशिका के अंदर कोई परिवर्तन नहीं किया है, तो आप भी कर सकते हैं rm -rf conflicts_in_here/और उसके बाद svn up। इसने मेरे लिए कम से कम काम किया।


1

आप अपनी स्थानीय निर्देशिका को svn में वापस लाने के लिए बाध्य कर सकते हैं।

 svn revert -R your_local_path

धन्यवाद, मुझे हल करने में भी मदद मिली A + C path/to/dirऔर> local dir edit, incoming dir delete or move upon update
RAM237

0

तो आप केवल उस फ़ाइल को वापस कर सकते हैं जिसे आपने हटा दिया था, लेकिन याद रखें, यदि आप किसी सेट प्रोजेक्ट फ़ाइल (जैसे iOS) के साथ किसी भी प्रकार की परियोजना पर काम कर रहे हैं, तो फ़ाइल को वापस लाना आपके सिस्टम फ़ोल्डर संरचना में जोड़ देगा, लेकिन आपकी परियोजना फ़ाइल संरचना नहीं। यदि आप इस मामले में हैं, तो अतिरिक्त चरणों की आवश्यकता हो सकती है


0

यह समस्या अक्सर तब होती है जब हम किसी अन्य शाखा परिवर्तन को गलत निर्देशिका से मर्ज करने का प्रयास करते हैं।

उदाहरण के लिए:

Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1
         ^^^^^^^^^^^^
   Merging at wrong location

एक निष्पादन जो इसके निष्पादन पर फेंक दिया जाता है:

Tree conflict on 'Branch1_SubDir'
   > local missing or deleted or moved away, incoming dir edit upon merge

और जब आप रिज़ॉल्यूशन छोड़ने के लिए q चुनते हैं , तो आपको निम्न स्थिति प्राप्त होती है:

 M      .
!     C Branch1_SubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge
!     C Branch1_AnotherSubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge

जो स्पष्ट रूप से मतलब है कि मर्ज से संबंधित परिवर्तन होता है Branch1_SubDirऔर Branch1_AnotherSubDir, और इन फ़ोल्डर के अंदर नहीं पाया जा सका Branch1_SubDir(स्पष्ट रूप से एक निर्देशिका के अंदर ही नहीं किया जा सकता)।

पहली जगह पर इस समस्या से कैसे बचें:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location

मेरे लिए काम करने वाली इस समस्या के लिए सबसे सरल समाधान :

svn revert -R .
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.