2013-07-25 2 views
10

मुझे एक विशिष्ट समस्या है, मुझे यहां या कहीं और समाधान नहीं मिला। मेरे पास एक एसवीएन रिपोजिटरी है और मैं इसे एक्सेस करने और उस पर काम करने के लिए गिट-एसवीएन का उपयोग कर रहा हूं।मैं git-svn में खाली निर्देशिका कैसे हटा सकता हूं?

कुछ समय पहले, एसवीएन भंडार (खाली, केवल उपफोल्डर) में कुछ खाली निर्देशिकाएं थीं। गिट उनको ट्रैक नहीं करता है। फिर उन्हें एसवीएन भंडार से हटा दिया गया। लेकिन मैं अभी भी उन्हें

git svn rebase 

चलाने के बाद भी और जब मैं उन्हें हाथ से हटाने के लिए, वे के दौरान निर्मित कर रहे हैं अगले

git svn rebase 

कैसे मैं उनमें से छुटकारा पा सकते हैं?

मैंने शुद्ध एसवीएन का उपयोग करके जांच की और वे भंडार में नहीं हैं।

+0

हम्म, यह अजीब है। गिट निर्देशिकाओं के बारे में नहीं जानता या ट्रैक नहीं करता है। क्या आपने जांच की है कि क्या उन निर्देशिकाओं में कोई पुरानी अदृश्य फाइलें हैं जिन्हें आपके मालिक ने उन्हें हटा दिए जाने पर याद किया होगा? छिपी हुई फाइलों की जांच के लिए निर्देशिका में 'ls -la' करने का प्रयास करें। – Leif

+0

आधी रात कमांडर सामान छिपाता नहीं है;) फ़ोल्डर्स खाली हैं। क्या यह एक बग हो सकता है? :/ – Paladin

+0

मेरे पास गिट के साथ कई (कई) निराशाएं हैं, लेकिन मैंने अभी तक एक कानूनी "बग" पर ठोकर खाई है। मेरी अधिकांश निराशा समझने की कमी के कारण हुई है। यदि आप गिट कमांड लाइन से 'गिट स्टेटस' करते हैं तो क्या होता है; फ़ोल्डरों को किसी भी मौके से "अनचाहे" के रूप में दिखाया गया है? यदि आप इन निर्देशिकाओं पर 'git ls-files directory_name --error-unmatch' करते हैं; क्या यह 'सत्य' या 'झूठा' वापस करता है? यह देखने के लिए कि फ़ोल्डरों को ताजा क्लोन के साथ शामिल किया गया है, गिट के साथ भंडार ('गिट क्लोन') को फिर से क्लोन करने का प्रयास करें; हो सकता है कि वे सिर्फ पुराने संशोधन से लटक रहे हों। मैं बस यहाँ जंगली अनुमान लगा रहा हूँ। – Leif

उत्तर

1

यह थोड़ा किसी न किसी तरह है, लेकिन मैं ने पाया है कि निम्नलिखित मेरी समस्या का हल:

rm .git/svn/refs/remotes/trunk/unhandled.log 
git clean -df 

किसी भी बाद में

git svn rebase 

कुछ भी पुन: नहीं होंगे।

चूंकि मुझे नहीं पता कि इस फ़ाइल को फिर से क्लोन करने के बिना पुन: उत्पन्न करने के लिए, मैं सुझाव देता हूं कि पहले इसका बैकअप लें। यह एक पाठ फ़ाइल है, इसलिए मुझे लगता है कि यह खाली निर्देशिका पुन: बनाने की कोशिश नहीं करनी चाहिए आप भी अपनी सामग्री को संपादित कर सकता प्रविष्टियों को बनाने

+1

' .git' में सामग्री को न हटाएं। –

11

मुझे लगता है कि आपको this blog post में आपका उत्तर मिल जाएगा।

[...]

Remove directories from the SVN tree if there are no files left behind. SVN can version empty directories, and they are not removed by default if there are no files left in them. git cannot version empty directories. Enabling this flag will make the commit to SVN act like git. config key: svn.rmdir

To fix the root of the problem set the git config globally:

git config --global svn.rmdir true

[...]

+2

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

+0

मुझे लगता है कि यह वास्तव में "करने के लिए सही काम नहीं है", लेकिन हो सकता है कि आप (गिट का उपयोग करके) फ़ोल्डरों में एक डमी टेक्स्ट फाइलें जोड़ सकें, 'एड' और 'उन्हें' प्रतिबद्ध करें ताकि उन्हें ट्रैक किया जा सके और फिर हटाएं ('git आरएम') फाइलें और हटाने को प्रतिबद्ध करते हैं। तो हो सकता है कि आप फ़ोल्डर्स से छुटकारा पाएं, लेकिन यह आपके इतिहास को थोड़ा गंदे कर देगा। – Leif

+0

मैं देख सकता हूं कि बॉस मुझे इस दृष्टिकोण के साथ कहां भेज देगा: डी – Paladin

1

टेल Git svn अंत दूर करने के लिए लगता है:

git config svn-remote.svn automkdirs false 

यह वह जगह है आदमी पृष्ठ के प्रासंगिक अनुभाग:

svn-remote.<name>.automkdirs

Normally, the "git svn clone" and "git svn rebase" commands attempt to recreate empty directories that are in the Subversion repository. If this option is set to "false", then empty directories will only be created if the "git svn mkdirs" command is run explicitly. If unset, git svn assumes this option to be "true".

ध्यान दें कि यह करने से/नहीं SVN को खाली निर्देशिका करने से (जो क्या svn.rmdir के लिए है) के विषय के साथ इस विषय को भ्रमित करने के लिए आसान है।

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