SVN: कुछ निर्देशिकाओं की पुनरावृत्ति पर ध्यान न दें


106

मैं किसी भी निर्देशिका को नाम नहीं देना चाहता buildया distमेरे एसवीएन में जाना नहीं चाहे वह पेड़ में कितना भी गहरा क्यों न हो।

क्या यह संभव है? Git में मैंने अभी डाला

build
dist

मेरी .gitignoreजड़ में और यह पुनरावृत्ति की उपेक्षा करता है। मैं svn के साथ यह कैसे करूँ? कृपया मुझे हर माता पिता के लिए एक सहारा करने के लिए मत कहो ...


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

जवाबों:


57

1.8 में तोड़फोड़ के रूप में, अब ऐसी svn:global-ignoresसंपत्ति है जो काम करती है svn:ignoreलेकिन पुनरावर्ती की तरह (इसलिए इसे अपने शीर्ष-स्तरीय निर्देशिका पर सेट करें)


3
मैं एक बालक भ्रमित - वहाँ global-ignoresमें ~/.subversion/configफ़ाइल, लेकिन यह भी दाय svn:global-ignores एक SVN रेपो में एक निर्देशिका पर संपत्ति सेट, साथ ही svn:ignore- आप इन विभिन्न विकल्पों का एक सारांश प्रदान कर सकते हैं और कैसे वे तुलना? --recursiveध्वज उन्हें कैसे प्रभावित करता है?
दाई

2
मैंने अपना शोध किया है और इस QA उत्तर में अपने निष्कर्ष प्रकाशित किए हैं: stackoverflow.com/a/86052/159145
Dai

[मैंने कोशिश की, लेकिन विफल रहा, objफ़ोल्डर अभी भी दिखा] ( stackoverflow.com/questions/50960188/… ), क्या आप मुझे इस पर एक नज़र डालने में मदद कर सकते हैं?
ल्यूक

क्या मैं कह सकता हूं कि "बिल्ड / *" हर बिल्ड फ़ोल्डर में बिल्ड के नीचे सब कुछ अनदेखा कर सकता है?
जोहान्स स्काउब -

45

svn propset--recursiveएक विकल्प के रूप में लेता है , इसलिए आप इसे दो डाउनसाइड के साथ कर सकते हैं:

  1. आपको संपूर्ण रिपॉजिटरी (या कम से कम सभी निर्देशिकाओं) की जाँच करनी होगी, और
  2. svn:ignoreजब भी आप एक नई निर्देशिका जोड़ते हैं, तो आपको संपत्ति सेट करना याद रखना होगा

42

ऐसा करना संभव नहीं है। सबवर्सन में केवल दो अनदेखा तंत्र होते हैं, svn:ignore(जो कि अप्रतिसादी होता है) और global-ignores(जो कि रिपॉजिटरी के लिए विशिष्ट नहीं है)।


7
svn propset --recursive svn: svn_ignore_rules को अनदेखा करें। जहां svn_ignore_rules एक फ़ाइल है जिसमें नियमों की अनदेखी है - एक प्रति पंक्ति
georg

3
'svn propset --recursive svn: अनदेखा --file svn_ignore_rules।' मेरे लिए svn-1.7.6 के साथ, अन्यथा आप 'svn_ignore_rules' नाम की फ़ाइलों की अवहेलना कर रहे हैं [संपादित करें: नीचे टिप्पणी में 'wytten' के अनुसार]
elbeardmorez

9
टिप्पणीकारों के लिए: जैसा कि पूछने वाले ने कहा, "कृपया मुझे हर माता-पिता के लिए एक सहारा करने के लिए मत कहो ..."।
केविन रीड

5
यह अब तोड़फोड़ 1.8
गिलहरी

17

यह मेरे लिए काम करता है:

 svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>

2
इसके लिए धन्यवाद, शानदार काम करता है ... वैसे तो मुझे * .txt और * .pdf दोनों को नजरअंदाज करने का एकमात्र तरीका यह मिला कि उन पैटर्नों को एक फाइल में डाल दूं और फिर 'svn propset --file' विकल्प का उपयोग करें
wytten

13

अपनी ~ / .subversion / config या / etc / तोड़फोड़ / config फ़ाइल में जोड़ें:

[miscellany]
global-ignores = build dist

यदि मैं कर सकता / सकती हूँ तो मैं इसे प्रति-रेपो करूँगा
पॉल टार्जन

1
हम्म यकीन नहीं है कि अगर यह प्रति-रेपो करने का एक आसान तरीका है, तो एक पूर्व-प्रतिबद्ध हुक कुछ पैटर्न को अस्वीकार कर सकता है, लेकिन यह एक पूर्ण समाधान नहीं है। svn: प्रत्येक माता पिता के काम पर ध्यान न दें, लेकिन पुनरावृत्ति नहीं। जब आप अलग-अलग रिपोज पर काम कर रहे हों, तो स्क्रिप्ट के साथ अपनी कॉन्फिग फाइल को स्वैप कर सकते हैं, लेकिन यह एक अतिरिक्त कदम है।
jspcal

1
निर्माण का मतलब क्या है ?
इगोरगानापोलस्की

9

संस्करण नियंत्रण से निर्देशिकाओं को हटाकर बिल्ड और डिस्ट को अनदेखा करना संभव है। ट्रिक को वर्क कॉपी में डायरेक्टरी को छोड़ने के लिए --keep-local विकल्प का उपयोग करना है। उदाहरण के लिए:

svn rm dist --keep-local
svn ci -m'removed build directory from version control'

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

चीयर्स, जो


7

उदाहरण के लिए फ़ोल्डर संरचना:

Project/
Project/dist/

cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"

इग्नोर कमांड से पहले डिस्टेंट कंटेंट को svn डिलीट करना अच्छा होता है, इसलिए ब्रांच के लिए डिस्ट खाली होगा।

मेरे लिए काम किया, आज परीक्षण किया। यहाँ पृष्ठ इसे थोड़ा समझा रहा है


6

सभी रिपॉजिटरी में ऐसी सभी फाइलों को अनदेखा करने के लिए, आप global-ignoresअपने प्रति-उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइल में जोड़ सकते हैं ।

यूनिक्स जैसी प्रणालियों पर, यह क्षेत्र उपयोगकर्ता के घर निर्देशिका में .subversion नामक एक निर्देशिका के रूप में दिखाई देता है। Win32 सिस्टम पर, सबवर्सन, सबवर्सन नाम का एक फोल्डर बनाता है, जो आमतौर पर उपयोगकर्ता की प्रोफाइल डायरेक्टरी के एप्लिकेशन डेटा क्षेत्र के अंदर होता है

कॉन्फ़िगरेशन विकल्प देखें

दुर्भाग्य से, ऐसा करने के लिए कोई प्रति-रिपॉजिटरी विकल्प नहीं है। यह मूल रूप से प्रति-उपयोगकर्ता, या प्रति-निर्देशिका है, इसलिए एकाधिक svn:ignoresसंभवत: जाने का तरीका है, जितना कष्टप्रद हो सकता है।


1
यदि मैं कर सकता हूँ तो मैं इसे प्रति-रेपो करूँगा
पॉल टार्जन

ओह, तो तुम भाग्य से बाहर हो। जैसा कि @ केविन रीड कहते हैं - आपको प्रति-निर्देशिका या प्रति-उपयोगकर्ता मिला है।
ब्लेयर कॉनरैड

6

आपको सबसे पहले अपनी वर्किंग कॉपी के टॉप फोल्डर में जाना होगा और वहां एक फाइल बनानी होगी (जैसे .svnignore) जहां आपको उन सभी पैटर्नों को रखना चाहिए जिन्हें आप नजरअंदाज करना चाहते हैं, उदाहरण के लिए (एंड्रॉइड प्रोजेक्ट के लिए):

bin
gen
proguard
.classpath
.project
local.properties
Thumbs.db
*.apk
*.ap_
*.class
*.dex

फिर आप निम्न कमांड चलाते हैं (याद रखें कि आपको अपनी वर्किंग कॉपी के टॉप फोल्डर में होना चाहिए):

svn propset svn:ignore -R -F .svnignore .

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

svn rm --keep-local <path>

यह सब इस महान लेख से है कि यह सब बताते हैं: http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/


यह बेहद मददगार था। यह सबसे अच्छा तरीका है जिसे मैंने svn में व्यवहार की उपेक्षा करने के लिए पाया है। बहुत बहुत धन्यवाद।
जोनाथन विल्सन

6

1.8 ओवर में, वर्तमान भंडार के लिए वैश्विक-उपेक्षा सेट करना संभव है।

svn propset svn:global-ignores build .
svn propset svn:global-ignores dist .

इसके अलावा, आप .svnignore नामक एक फ़ोल्डर बना सकते हैं, और शर्तें लिख सकते हैं।

build
dist

प्रति पंक्ति एक शर्त याद रखें, बिल्ड / * या डिस्ट / डिबग सेट करना व्यर्थ है। फिर कमांड करें:

svn propset svn:global-ignores -F .svnignore .

निर्दोष रूप से काम करता है! सिर्फ नए चेक किए गए रेपो पर पहले कमांड को चलाएं।
गौरव

3

एक फाइल बनाएं और उसमें अपने इग्नोर जोड़ें

ingore-सूची:

file1 
directory1
file2
etc...

फिर निम्न कमांड लागू करें

for n in directory; do svn propset svn:ignore -F ignore-list $n; done

निर्देशिका आपकी निर्देशिका का नाम है, आप अच्छी तरह से निर्देशिका / उप-निर्देशिका को वर्गीकृत कर सकते हैं। या वर्तमान निर्देशिका को नोट करने के लिए * का उपयोग करें।

यह मान रहा है कि आप अपने खोल के रूप में बैश का उपयोग कर रहे हैं


यहाँ $ n क्या है ?
इगोरगानापोलस्की

1
@ ताक गणपकोल्स्की - $ n लूप के लिए परिवर्तनशील है। इसे उस अनुक्रम के रूप में सेट किया जाएगा जिस क्रम में आप लूपिंग कर रहे हैं; इस मामले में उपरोक्त निर्देशिका में "निर्देशिका" द्वारा निर्दिष्ट निर्देशिका।
jncc99

3
svn propset --recursive svn:ignore svn_ignore_rules .

जहां svn_ignore_rules एक फ़ाइल है जिसमें नियमों की अनदेखी होती है - एक प्रति पंक्ति

निश्चित रूप से आपको हर बार जब आप अपने रेपो में एक नई निर्देशिका जोड़ते हैं तो उसे फिर से चलाना होता है

svn_ignore_rules को रेपो में जाँच करने के लिए भी माना जा सकता है, अन्य उपयोगकर्ताओं द्वारा रेपो तक पहुँच लिखने के लिए पुन: प्रयोज्य होने के लिए


2
सीडी parent_dir # निर्देशिका जिसमें फ़ोल्डर को पुनरावर्ती रूप से अनदेखा किया जाना है
svn propedit svn: उपेक्षा। # स्वाइल svn-prop.tmp खोलें
फ़ोल्डर सूचीबद्ध करें
^ एक्स
Y
प्रतिबद्ध -m 'लक्षित डेरीकोट की उपेक्षा करें'

मेरी मदद की, मुझे फोल्डर पैटर्न सेट करने में समस्या थी, एसवीएन उस फोल्डर का अनुपालन कर रहा था, न कि रेपो में set EDITOR=notepad, svn propedit svn:ignore .अच्छी तरह से काम किया ...
बेतालिस्टा

1

चूँकि यह शायद सामान्य समस्या का कोई समाधान नहीं है, इसलिए मैं हमारे समाधान को साझा करना चाहूंगा। जैसा कि दूसरों ने पहले ही स्पष्ट कर दिया है, आप या तो svn:ignoreसंपत्ति का उपयोग कर सकते हैं, यह एक ही निर्देशिका पर लागू होता है (और इसलिए नए लोगों के लिए नहीं), या आप उपयोग करते हैं global-ignoresजो किसी एकल उपयोगकर्ता पर लागू होता है (लेकिन भंडार से संबंधित नहीं है)।

जीवन को थोड़ा आसान बनाने के लिए मैंने नाम की एक रेज फाइल बनाई Settings.Svn.regऔर इसे रिपॉजिटरी की जड़ में जोड़ा। अब हर कोई एक बार इस रिफ़ाइल को दोगुना कर सकता है, और सेटिंग कर सकता है।

REGEDIT4

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"

मैं वास्तव में एसवीएन भंडार के भीतर एक समाधान की सराहना करता हूं, इसलिए यदि कोई जानता है, तो क्या आप इसे साझा करना चाहेंगे?


0

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

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