svn - मैं सबवर्सन में फ़ाइलों को कैसे नजरअंदाज करूं?




command (11)

मैं सबवर्सन में फ़ाइलों को कैसे नजरअंदाज करूं?

साथ ही, मैं उन फ़ाइलों को कैसे ढूंढूं जो संस्करण नियंत्रण में नहीं हैं?


  1. सीडी ~ / .subversion
  2. खुली कॉन्फ़िगरेशन
  3. 'वैश्विक-अनदेखा' जैसी रेखा खोजें
  4. इस प्रकार फ़ाइल प्रकार को अनदेखा करें: वैश्विक-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: कमांड लाइन से कई फ़ाइलों के लिए अनदेखा करें


इसके अलावा, अगर आप कछुए एसवीएन का उपयोग करते हैं तो आप यह कर सकते हैं:

  1. संदर्भ मेनू में "TortoiseSVN" का चयन करें, फिर "गुण"
  2. दिखाई देने वाली विंडो में "नया" क्लिक करें, फिर "उन्नत"
  3. "संपत्ति नाम" के विपरीत दिखाई देने वाली विंडो में "संपत्ति मूल्य" के विपरीत "svn: ignore" टाइप करें या इच्छित फ़ाइल नाम या फ़ोल्डर का नाम या फ़ाइल मास्क (मेरे मामले में यह "* / target" था) पर क्लिक करें, "लागू करें" पर क्लिक करें संपत्ति recursively "
  4. ठीक। ठीक।
  5. कमिट

एसवीएन 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

यह क्या करता है:

  1. एसवीएन से स्टेटस फाइलें प्राप्त करता है
  2. सभी फाइलों को बचाता है ? फ़ाइल में "svnignore.txt"
  3. पहले से ही अनदेखा फाइलें प्राप्त करता है और उन्हें "svnignore.txt" फ़ाइल में जोड़ता है
  4. "Svnignore.txt" में फ़ाइलों को अनदेखा करने के लिए svn को बताता है
  5. फ़ाइल को हटा देता है






command