2009-05-12 21 views
105

जब मैं svn status करता हूं तो मुझे टिल्ड प्रतीक मिल रहा है।सबवर्जन स्थिति प्रतीक "~" का क्या अर्थ है?

एक्सकोड में इसे संपादित करने के बाद परियोजना का आउटपुट यहां दिया गया है।

svn status 
M  build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree 
M  build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header 
M  build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols 
~  build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings 
M  main.m 
//more changed files 

किसी भी विचार यह है कि क्या मतलब है? इसे Google या किसी भी svn धोखा शीट पर नहीं लग रहा है।

दिलचस्प बात यह है कि मैंने केवल मुख्य.एम संपादित किया है, लेकिन कई संशोधित फ़ाइलें हैं। डुनो क्यों होगा। एसवीएन और एक्सकोड के साथ काम करने के लिए किसी के पास कोई सुझाव है? क्या मुझे केवल अपनी स्रोत फ़ाइलों को संस्करण नियंत्रण में रखना चाहिए?

संपादित करें: - एक फ़ाइल के कारण जो पहले से ही संस्करण नियंत्रण में था, किसी अन्य प्रकार की फ़ाइल द्वारा प्रतिस्थापित किया जा रहा था। इस मामले में, strings.pbxstrings एक फ़ाइल के रूप में प्रयोग किया जाता था और अब एक निर्देशिका बन गया। कहानी का नैतिकता आपके निर्माण फ़ोल्डर को संस्करण नियंत्रण में नहीं डालता है।

+0

हम्म, मुझे यकीन नहीं है कि इसे ठीक करने के विपरीत, "ठीक" करने का कोई तरीका है या नहीं। आप एक और सवाल पोस्ट करना चाह सकते हैं कि क्या इस स्थिति को हल करने का कोई अच्छा तरीका है, आपको अधिक ध्यान मिलेगा (क्योंकि वर्तमान प्रश्न पहले से ही उत्तर दिया गया है)। –

उत्तर

86

SVN Book का कहना है:

मद वस्तु (फ़ाइल, निर्देशिका, लिंक) में से एक प्रकार के रूप में संस्करणीकृत है, लेकिन वस्तु के विभिन्न प्रकार के द्वारा बदल दिया गया है।

तो शायद यह मूल रूप से एक फ़ाइल थी, लेकिन आपने इसे एक निर्देशिका में बदल दिया, या उन पंक्तियों के साथ कुछ बदल दिया?

+1

ऐसा लगता है कि आप सही हैं। यह अब एक .svn फ़ाइल के बिना एक निर्देशिका है। इसे ठीक करने के बारे में कोई विचार? क्या मुझे इसे उपversण से हटाने और इसे फिर से जोड़ने की आवश्यकता है? – jergason

+0

कोई फर्क नहीं पड़ता कि आपको इसे ठीक करने का कोई तरीका मिल गया है? –

+0

@Phill - मैंने भंडार को नष्ट कर दिया ... * श्वास * –

15

svn help status 

'~' से एक अलग तरह के कुछ आइटम से बाधित संस्करणीकृत आइटम

मैं केवल यह देखा है जहां फाइल अनुमति बदल गया था और SVN कोई उस पर पहुँच को अंजाम दिया था मेरा मानना ​​है कि ।

उम्मीद है कि इससे मदद मिलती है।

+3

अच्छा आरटीएफएम उत्तर :) +1 – nuqqsa

11

इसे ठीक करने का सबसे आसान तरीका बैकअप के लिए है, फिर उस स्थिति या फ़ाइल को हटाएं जिसमें यह स्थिति है और फिर "svn up" करें: यह आवश्यक रूप से एक फ़ाइल द्वारा स्थानांतरित फ़ोल्डर नहीं है, यह बस .svn फ़ोल्डर हो सकता है गुम या दूषित है।

2

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

+1

तो आप इसे कैसे ठीक करते हैं? – 5upa

10

यह तब हो सकता है जब आप किसी फ़ोल्डर में .svn फ़ोल्डर को हटाते हैं (उदाहरण के लिए जब आप कोई निर्देशिका हटाते हैं, और फिर आप एक ही निर्देशिका बनाते हैं), या जब आप एक प्रतीकात्मक लिंक के साथ निर्देशिका को प्रतिस्थापित करते हैं, या फ़ाइल एक ही नाम के साथ।

मान लें कि यह एक फ़ोल्डर एक-फ़ोल्डर बुलाया है, तो आप मूल फ़ोल्डर में निम्न कमांड जारी करके इसे ठीक कर सकते हैं:

$ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf 
$ svn up --force . 
svn: Directory 'logs/.svn' containing working copy admin area is missing 
$ svn up --force . 
E a-folder 
... 
Updated to revision n. 

और फिर यह SVN जोड़ने/हटाने और फिर

परिवर्तन करने से की बात है
33

यहाँ मैं क्या किया है: फ़ोल्डर टेस्ट

  1. mv है

    हैं टेस्ट Test1

  2. SVN निकालें टेस्ट
  3. mv Test1 टेस्ट
+0

धन्यवाद, आपके समाधान अच्छी तरह से काम करते हैं। :-) – Anand

+5

यह तब तक मेरे लिए काम करता था जब तक मैंने हटाने और जोड़ने के बीच में प्रतिबद्ध किया। 1. एमवी टेस्ट टेस्ट 1 2. svn टेस्ट हटाएं 3. svn commit -m "हटाया गया परीक्षण" 4. एमवी टेस्ट 1 टेस्ट 5. एसवीएन टेस्ट जोड़ें 6. svn commit -m "जोड़ा गया टेस्ट" –

+1

@sancelot द्वारा उत्तर बहुत बेहतर है; 'svn delete --keep-local fileName' का उपयोग करते समय आपको नाम बदलने की आवश्यकता नहीं है। –

3

ने वही समस्या थी, SVN एक ताला के बारे में शिकायत की गई थी। यहाँ हम क्या किया है:

  • फ़ाइलें
  • ऊपर समर्थन से निकाला गया rm -r (लिनक्स)
  • निर्देशिका
  • Ran SVN अप पर Ran SVN सफाई साथ सवाल में निर्देशिका - निर्देशिका निर्देशिका
3

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

mv foo foo-bak 
svn up foo 
svn revert foo 

# just for good measure. Foo should not show up in the two following commands. 
ls | grep foo 
svn st | grep foo 

mv foo-bak foo 
svn add foo 
11
svn delete --keep-local x 
svn commit -m "del x" 
svn add x 
svn commit -m "blah" 
+0

नाम बदलने की कोई आवश्यकता नहीं है। आपने सबसे अच्छा जवाब दिया। –

+0

बेस्ट जवाब! यह इस मुद्दे को हल करता है। मेरे मामले में यह एक नियमित फ़ाइल के रूप में एक मुलायम लिंक था। – 5upa

0
~ versioned item obstructed by some item of a different kind 
    Second column: Modifications of a file's or directory's properties 
2

मैं अक्सर इस था के तहत (जैसे।) जूमला !, Wordpress या Drupal मॉड्यूल अपग्रेड करते समय। कभी-कभी .svn निर्देशिका अपग्रेडिंग प्रक्रिया द्वारा हटा दी जाती है।

# rename updated directory 
mv foo foo.new 

# restore the old directory 
svn up foo 

# merge/update the old directory with new items 
# notice that the above command will preserve the obsolete files 
# so you should do a diff -r in order to remove them 
cp -r foo.new/* foo 

# Add files commit, etc 
svn add foo/* 
svn delete foo/xx 
svn commit -m "updated module" 
संबंधित मुद्दे