2008-09-05 12 views
20

में "प्रेत" निर्देशिकाएं मैंने किसी भी तरह से एक खराब स्थिति में एक एसवीएन भंडार प्राप्त करने में कामयाब रहा है। मैंने एक निर्देशिका ले जाया है और अब मैं इसे अपने नए स्थान पर नहीं कर सकता।एसवीएन रिपोजिटरी

जहां तक ​​svn status संबंधित है, निर्देशिका अज्ञात है (निर्देशिका का नाम type है)।

 
$ svn status 
?  type 

जब मैं निर्देशिका जोड़ने की कोशिश करता हूं, तो सर्वर कहता है कि यह पहले से मौजूद है।

 
$ svn add type 
svn: warning: 'type' is already under version control 

अगर मैं निर्देशिका अद्यतन करने के लिए प्रयास करते हैं, इसे फिर से चला गया।

 
$ svn update type 
svn: '.' is not under version control 

यदि मैं इसे प्रतिबद्ध करने का प्रयास करता हूं, तो सर्वर शिकायत करता है कि यह पुरानी मूल निर्देशिका अब मौजूद नहीं है।

 
$ svn commit type -m "Moving type" 
svn: Commit failed (details follow): 
svn: '/prior/trunk/src/nyu/prior/cvc3/theorem_prover/expression' path not found 

रहस्य में जोड़ने के लिए, निर्देशिका की सामग्री को संशोधित के रूप में चिह्नित किया गया है।

 
$ svn status type 
A + type 
M + type/IntegerType.java 
M + type/BooleanType.java 
M + type/Type.java 
M + type/RationalRangeType.java 
M + type/RationalType.java 
M + type/IntegerRangeType.java 

यदि मैं निर्देशिका के भीतर से अद्यतन करने का प्रयास करता हूं, तो मुझे यह मिलता है।

 
$ cd type 
$ svn update 
svn: Two top-level reports with no target 

से भीतर निर्देशिका के रूप में ऊपर ही path not found त्रुटि देता स्वीकार हो रहे हैं।

क्या चल रहा है और मैं इसे कैसे ठीक कर सकता हूं?

संपादित करें: @ रोब ऑक्सप्रिंग ने मुझे पकड़ा: मुझे एक्लिप्स में चारों ओर घूमने वाली चीजें बहुत आक्रामक हो गईं।

अपडेट: मैं @ रोब ऑक्सप्रिंग के जवाब को "ऐसा न करें/बस शुरू करें" और उसकी सलाह ले रहा हूं। मैं अभी भी रुचि हो, तो किसी को भी मुझे बता सकते हैं चाहते हैं: (क) क्या उपरोक्त त्रुटि संदेश ठीक मतलब और (ख) कैसे करने के लिए वास्तव में ठीक समस्या।

उत्तर

14

ऐसा लगता है कि type कुछ सबवर्जन-जागरूक प्रतिलिपि कमांड द्वारा बनाया गया था, फिर एक सबवर्जन-अनजान प्रति का उपयोग कर वर्तमान निर्देशिका में स्थानांतरित हो गया। मेरे अनुभव में, इस तरह की चीज आम तौर पर तब होती है जब पैकेज रिफैक्टरिंग ऑपरेशंस को ग्रहण में एक साथ जोड़ दिया जाता है। आम तौर पर, जब आप स्थानीय रूप से प्रतिलिपि/स्थानांतरित फ़ाइल या फ़ोल्डर को प्रतिलिपि/स्थानांतरित करते हैं, तो सबवर्सन इसे अच्छी तरह से संभाल नहीं करता है, हालांकि मुझे लगता है कि संस्करण 1.5 इसे बेहतर तरीके से संभाल सकता है।

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

यदि यह बहुत अधिक काम नहीं है, तो मैं प्रत्येक चरण के बाद एक साफ काम करने वाली प्रतिलिपि वापस लेने और अपने परिवर्तनों को फिर से करने की अनुशंसा करता हूं। आप इतिहास, यानी की इजाजत दी नई IntegerType.java वर्ष IntegerType.java करने के लिए सभी पर लिंक नहीं किया जा करने के लिए कम करने के लिए खुश हैं, तो आप दृष्टिकोण BCS ने सुझाव दिया ले सकता है:

  • कुछ अस्थायी स्थान में अपने बदली हुई फ़ाइलें ले जाएं , किसी भी .svn निर्देशिका बाहर अलग करना
  • अद्यतन अपने काम एक साफ काम कर रहे राज्य
  • वापस अपने इच्छित स्थान पर अपने परिवर्तन कॉपी में कॉपी उन्हें होने की
  • प्रतिबद्ध जिसके परिणामस्वरूप काम कर प्रति
3

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

+2

धन्यवाद। इस जवाब ने मुझे यह महसूस किया कि मैंने क्या किया होगा (हालांकि मैंने निर्देशिका को स्थानांतरित करने के लिए ग्रहण का उपयोग किया था। आपको लगता है कि ग्रहण सही ढंग से करेगा। साफ करने के लिए क्या गड़बड़ है, लेकिन आप मुझे सही दिशा में जा रहे हैं। जीवन। – Marvo

9

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

उसके बाद, आप जो कुछ भी करने की कोशिश कर रहे थे वह कर सकते हैं, लेकिन इसे सही तरीके से करें :)।

0

मेरा अनुभव यह है कि कभी-कभी स्थानीय प्रति रिपोजिटरी के साथ सिंक हो जाती है। मैं आमतौर पर स्थानीय निर्देशिका पेड़ पर जा रहा है, समस्या के साथ निर्देशिका से शुरू करके इस को हल करने और हर कदम के साथ सफाई और अद्यतन करना करने की कोशिश।

1

मैं सुझाव दूंगा, हटाने के लिए (आरएम या इसी तरह के subversionso के बाहर), परीक्षण के ऊपर निर्देशिका, और फिर वहाँ svn अद्यतन चल रहा है।

यही है, अगर आप पूरी तरह से नई कामकाजी प्रति प्राप्त नहीं करना चाहते हैं, जैसा कि दूसरों ने सुझाव दिया है, जो सबसे सुरक्षित दृष्टिकोण हो सकता है।

0

क्या हुआ यह है कि आपने किसी फ़ोल्डर का चेकआउट किया है, फिर स्थानीय रूप से 'svn add'ed और/या इस फ़ोल्डर में कुछ संशोधित किया है, लेकिन इससे पहले कि आपने अपने परिवर्तन किए हैं, मूल फ़ोल्डर स्थानांतरित हो गया था (या हटा दिया गया था)) एसवीएन भंडार से।

आपको केवल अपने वर्तमान चेकआउट को एसवीएन भंडार में नए स्थान पर स्विच करने की आवश्यकता है। तो, आप पथ से foo फ़ोल्डर की एक चेकआउट करने के लिए/फ़ोल्डर 1/foo है कल्पना /, और कहा कि foo path/to/foo ले जाया गया था, तो आप सिर्फ चलाने की आवश्यकता:

$ svn switch path/to/foo 

यह है कि ... ;-)

+0

यह उचित लगता है। दुर्भाग्यवश, मेरे पास अभी परीक्षण करने के लिए एक काम करने वाली प्रतिलिपि नहीं है ... ;-) –

1

मुझे बस यही समस्या थी। मैंने प्रभावित फ़ोल्डर से .svn फ़ोल्डर को हटाकर इसे ठीक किया।

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