svn - मैं सबवर्सन में फ़ाइलों को कैसे नजरअंदाज करूं?
command (11)
मैं सबवर्सन में फ़ाइलों को कैसे नजरअंदाज करूं?
साथ ही, मैं उन फ़ाइलों को कैसे ढूंढूं जो संस्करण नियंत्रण में नहीं हैं?
- सीडी ~ / .subversion
- खुली कॉन्फ़िगरेशन
- 'वैश्विक-अनदेखा' जैसी रेखा खोजें
- इस प्रकार फ़ाइल प्रकार को अनदेखा करें: वैश्विक-ignores = * .o * .lo * .la * .al .libs * .so .so। [0-9] * .pyc * .pyo 88 * .rej ~ # #। # *। *। swp .DS_Store node_modules आउटपुट
(यह उत्तर एसवीएन 1.8 और 1.9 के व्यवहार से मेल खाने के लिए अद्यतन किया गया है)
आपके पास 2 प्रश्न हैं:
अनदेखा फ़ाइलों को चिह्नित करना:
"अनदेखा फ़ाइल" से मेरा मतलब है कि फ़ाइल "अनवरोधित" जैसी सूचियों में दिखाई नहीं देगी: आपका एसवीएन क्लाइंट फ़ाइल का नाटक करेगा फाइल सिस्टम में बिल्कुल मौजूद नहीं है।
अनदेखा फाइलें "फ़ाइल पैटर्न" द्वारा निर्दिष्ट की जाती हैं। एसवीएन के ऑनलाइन दस्तावेज़ीकरण में फ़ाइल पैटर्न का सिंटैक्स और प्रारूप समझाया गया है: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "सबवर्सन में फ़ाइल पैटर्न"।
संस्करण 1.8 (जून 2013) के रूप में उपवर्तन और बाद में, फ़ाइल पैटर्न निर्दिष्ट करने के 3 अलग-अलग तरीकों का समर्थन करता है। उदाहरणों के साथ सारांश यहां दिया गया है:
1 - रनटाइम कॉन्फ़िगरेशन क्षेत्र - global-ignores
विकल्प:
- यह क्लाइंट-साइड केवल सेटिंग है, इसलिए आपकी
global-ignores
सूची अन्य उपयोगकर्ताओं द्वारा साझा नहीं की जाएगी, और यह आपके कंप्यूटर पर चेकआउट के सभी रिपो पर लागू होती है। - यह सेटिंग आपके रनटाइम कॉन्फ़िगरेशन एरिया फ़ाइल में परिभाषित है:
- विंडोज़ (फ़ाइल-आधारित) -
C:\Users\{you}\AppData\Roaming\Subversion\config
- विंडोज़ (रजिस्ट्री-आधारित) -
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
दोनों मेंSoftware\Tigris.org\Subversion\Config\Miscellany\global-ignores
। - लिनक्स / यूनिक्स -
~/.subversion/config
- विंडोज़ (फ़ाइल-आधारित) -
2 - svn:ignore
संपत्ति को svn:ignore
, जो निर्देशिकाओं पर सेट है (फाइल नहीं):
- यह रेपो के भीतर संग्रहीत है, इसलिए अन्य उपयोगकर्ताओं के पास एक ही अनदेखी फाइलें होंगी। कैसे
.gitignore
काम करता है के समान। -
svn:ignore
निर्देशिकाओं पर लागू होता है और गैर-पुनरावर्ती या विरासत में होता है। फ़ाइल पैटर्न से मेल खाने वाली मूल निर्देशिका की कोई भी फ़ाइल या तत्काल उपनिर्देशिका बहिष्कृत की जाएगी। जबकि एसवीएन 1.8 "विरासत गुणों" की अवधारणा को जोड़ता है,
svn:ignore
संपत्ति को अनदेखा करते हैं, गैर-तत्काल वंशज निर्देशिका में अनदेखा किया जाता है:cd ~/myRepoRoot # Open an existing repo. echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt". svn status # Check to see if the file is ignored or not. > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored. svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory. svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory. echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt". svn status > ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored! > 1 unversioned file
(तो फ़ाइल
./subdirectory/ignoreThis
इसे अनदेखा नहीं किया गया है, भले ही "ignoreThis.txt
" को रेपो रूट पर लागू किया गया हो)।इसलिए, एक अनदेखी सूची को
svn propset svn:ignore <filePattern> . --recursive
लागू करने के लिए आपकोsvn propset svn:ignore <filePattern> . --recursive
उपयोग करना होगाsvn propset svn:ignore <filePattern> . --recursive
svn propset svn:ignore <filePattern> . --recursive
- यह प्रत्येक उपनिर्देशिका पर संपत्ति की एक प्रति बना देगा।
- यदि
<filePattern>
मान किसी बच्चे निर्देशिका में भिन्न है तो बच्चे का मान पूरी तरह से माता-पिता को ओवरराइड करता है, इसलिए कोई "additive" प्रभाव नहीं होता है। - तो यदि आप रूट पर
<filePattern>
को<filePattern>
.
, तो आपको इसे बच्चे और वंशज निर्देशिकाओं पर ओवरराइट करने के लिए--recursive
साथ बदलना होगा।
मुझे लगता है कि कमांड लाइन वाक्यविन्यास काउंटर-अंतर्ज्ञानी है।
- मैंने यह मानना शुरू कर दिया कि आप एसवीएन में किसी फ़ाइल को
svn ignore pathToFileToIgnore.txt
जैसे कुछ टाइप करकेsvn ignore pathToFileToIgnore.txt
हालांकि ऐसा नहीं है कि एसवीएन की अनदेखी सुविधा कैसे काम करती है।
- मैंने यह मानना शुरू कर दिया कि आप एसवीएन में किसी फ़ाइल को
3- svn:global-ignores
संपत्ति। एसवीएन 1.8 (जून 2013) की आवश्यकता है:
- यह
svn:ignore
समान हैsvn:ignore
, सिवाय इसके कि यह एसवीएन 1.8 की "विरासत गुण" सुविधा का उपयोग करता है। -
svn:ignore
तुलना करेंsvn:ignore
, फ़ाइल पैटर्न स्वचालित रूप से प्रत्येक वंशज निर्देशिका में लागू होता है (न केवल तत्काल बच्चों)।- इसका मतलब यह है कि
svn:global-ignores
सेट करने के लिए अनावश्यक हैsvn:global-ignores
--recursive
झंडा के साथ, जैसा विरासत में अनदेखा फ़ाइल पैटर्न स्वचालित रूप से लागू होते हैं क्योंकि वे विरासत में हैं।
- इसका मतलब यह है कि
पिछले उदाहरण के रूप में कमांड के समान सेट को चला रहा है, लेकिन
svn:global-ignores
का उपयोग करकेsvn:global-ignores
इसके बजाए:cd ~/myRepoRoot # Open an existing repo echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt" svn status # Check to see if the file is ignored or not > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored svn propset svn:global-ignores "ignoreThis.txt" . svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt" svn status > 0 unversioned files # the file is ignored here too!
TortoiseSVN उपयोगकर्ताओं के लिए:
यह पूरी व्यवस्था मेरे लिए भ्रमित थी, क्योंकि टोर्टोइज एसवीएन की शब्दावली (जैसा कि उनके विंडोज एक्सप्लोरर मेनू सिस्टम में उपयोग किया गया था) शुरू में मुझे भ्रामक था - मुझे यकीन नहीं था कि इग्नोर मेनू के "पुनरावर्ती जोड़ें", "जोड़ें *" और "जोड़ें" का महत्व क्या है विकल्प। मुझे उम्मीद है कि यह पोस्ट बताता है कि एसवीएन प्रॉपर्टी फीचर में इग्नोर फीचर कैसे जुड़ता है। उस ने कहा, मैं अनुशंसित फ़ाइलों को सेट करने के लिए कमांड लाइन का उपयोग करने का सुझाव देता हूं ताकि आप GUI का उपयोग करने के बजाय यह कैसे महसूस कर सकें और केवल कमांड लाइन के साथ सहज होने के बाद गुणों में हेरफेर करने के लिए GUI का उपयोग कर सकें।
उन फ़ाइलों को सूचीबद्ध करना जिन्हें अनदेखा किया गया है:
कमांड svn status
अनदेखा फाइलों को छिपाएगी (यानी, फाइलें जो आरजीए global-ignores
पैटर्न से मेल खाते हैं, या तत्काल मूल निर्देशिका निर्देशिका के एसवीएन से मेल खाते हैं svn:ignore
पैटर्न को svn:ignore
या किसी भी एन्सेसर निर्देशिका के svn:global-ignores
पैटर्न।
सूचीबद्ध फ़ाइलों को देखने के लिए --no-ignore
विकल्प का उपयोग करें। अनदेखा फाइलों में I
स्थिति है, फिर आउटपुट को केवल "I" से शुरू होने वाली रेखाओं को दिखाने के लिए grep
पर पाइप करें।
आदेश है:
svn status --no-ignore | grep "^I"
उदाहरण के लिए:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
टा-डा!
आप फ़ाइल या निर्देशिका जैसे .gitignore
को अनदेखा कर सकते हैं। बस उन निर्देशिकाओं / फ़ाइलों की सूची का टेक्स्ट फ़ाइल बनाएं जिन्हें आप अनदेखा करना चाहते हैं और नीचे दिए गए कोड को चलाएं:
svn propset svn:ignore -F ignorelist.txt .
या यदि आप एक टेक्स्ट फ़ाइल का उपयोग नहीं करना चाहते हैं, तो आप इसे इस तरह से कर सकते हैं:
svn propset svn:ignore "first
second
third" .
स्रोत: कर्स्टन ब्लॉग - सेट svn: कमांड लाइन से कई फ़ाइलों के लिए अनदेखा करें
इसके अलावा, अगर आप कछुए एसवीएन का उपयोग करते हैं तो आप यह कर सकते हैं:
- संदर्भ मेनू में "TortoiseSVN" का चयन करें, फिर "गुण"
- दिखाई देने वाली विंडो में "नया" क्लिक करें, फिर "उन्नत"
- "संपत्ति नाम" के विपरीत दिखाई देने वाली विंडो में "संपत्ति मूल्य" के विपरीत "svn: ignore" टाइप करें या इच्छित फ़ाइल नाम या फ़ोल्डर का नाम या फ़ाइल मास्क (मेरे मामले में यह "* / target" था) पर क्लिक करें, "लागू करें" पर क्लिक करें संपत्ति recursively "
- ठीक। ठीक।
- कमिट
एसवीएन ignore
TortoiseSVN में प्रबंधित करना आसान है। ओपन TortoiseSVN और फ़ाइल मेनू पर राइट-क्लिक करें, फिर सूची को अनदेखा करने के लिए जोड़ें का चयन करें।
यह svn:ignore
में फ़ाइलों को जोड़ देगा svn:ignore
संपत्ति को svn:ignore
। जब हम फ़ाइलों में जांच करते हैं तो वे फ़ाइल जो svn:ignore
से मेल खाती है svn:ignore
जिसे svn:ignore
कर दिया जाएगा और प्रतिबद्ध नहीं होगा।
विजुअल स्टूडियो प्रोजेक्ट में हमने अनदेखा करने के लिए निम्नलिखित फाइलें जोड़ दी हैं:
bin obj
*.exe
*.dll
*.pdb
*.suo
हम सफलतापूर्वक इस विधि का उपयोग कर Comparetrap एसवीएन पर स्रोत कोड का प्रबंधन कर रहे हैं
एसवीएन svn status
आपको बताएगी कि कौन सी फाइलें एसवीएन में नहीं हैं, साथ ही साथ क्या बदल गया है।
अनदेखी संपत्ति के लिए एसवीएन गुणों को देखो।
एसवीएन की सभी चीजों के लिए, लाल पुस्तक को पढ़ने की आवश्यकता है।
प्रोपेडिट का उपयोग करते समय सुनिश्चित करें कि कोई पिछली जगह नहीं है क्योंकि इससे अनदेखी सूची से फ़ाइल को बाहर रखा जा सकता है।
यदि आप फ़ाइल को बनाने के लिए फ़ाइल बनाने के लिए लिनक्स पर टैब-ऑटोकंपलेट का उपयोग करते हैं, तो ये स्वचालित रूप से डाले जाते हैं:
svn propset svn:ignore 'file1
file2' .
फ़ाइलों की स्थिति दिखाने के लिए अपनी कार्यशील प्रतिलिपि पर svn स्थिति का उपयोग करें, जो फ़ाइलें अभी तक संस्करण नियंत्रण में नहीं हैं (और अनदेखा नहीं हैं) उनके पास एक प्रश्न चिह्न होगा।
फ़ाइलों को अनदेखा करने के लिए आपको svn को संपादित करने की आवश्यकता है: संपत्ति को अनदेखा करें, http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html पर svnbook में अनवरोधित आइटम को अनदेखा करने के अध्याय को पढ़ें http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html पुस्तक svn स्थिति का उपयोग करने के बारे में और भी बताती है।
यदि आप TortoiseSVN का उपयोग कर रहे हैं, तो फ़ाइल पर राइट-क्लिक करें और फिर सूची को अनदेखा करने के लिए TortoiseSVN / जोड़ें चुनें। यह svn:ignore
में फ़ाइल / वाइल्डकार्ड जोड़ देगा svn:ignore
संपत्ति को svn:ignore
।
svn:ignore
जब आप फ़ाइलों में जांच कर रहे हों तो svn:ignore
जाएगा, और मिलान करने वाली फ़ाइलों को अनदेखा कर दिया जाएगा। मेरे पास विजुअल स्टूडियो .NET प्रोजेक्ट के लिए निम्न अनदेखा सूची है:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
आप इस सूची को TortoiseSVN / Properties पर संदर्भ मेनू में पा सकते हैं।
संस्करण नियंत्रण फ़ाइलों के तहत नहीं सूची बनाने के लिए निम्न आदेश का उपयोग करें।
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
फिर फ़ाइल को केवल उन फ़ाइलों को छोड़ने के लिए संपादित करें जिन्हें आप वास्तव में अनदेखा करना चाहते हैं । फिर फ़ाइल में सूचीबद्ध फ़ाइलों को अनदेखा करने के लिए इसका उपयोग करें:
svn propset svn:ignore -F ignoring.txt .
लाइन के अंत में बिंदु नोट करें। यह एसवीएन को बताता है कि संपत्ति वर्तमान निर्देशिका पर सेट की जा रही है।
फ़ाइल हटाएं:
rm ignoring.txt
अंत में प्रतिबद्ध,
svn ci --message "ignoring some files"
फिर आप जांच सकते हैं कि किस फाइल को अनदेखा किया जाता है:
svn proplist -v
बीकेबिली के उत्तर का एक और पठनीय संस्करण :
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
यह क्या करता है:
- एसवीएन से स्टेटस फाइलें प्राप्त करता है
- सभी फाइलों को बचाता है ? फ़ाइल में "svnignore.txt"
- पहले से ही अनदेखा फाइलें प्राप्त करता है और उन्हें "svnignore.txt" फ़ाइल में जोड़ता है
- "Svnignore.txt" में फ़ाइलों को अनदेखा करने के लिए svn को बताता है
- फ़ाइल को हटा देता है