मैं एसवीएन के साथ एक निर्देशिका को कैसे अनदेखा कर सकता हूं?


760

मैंने एसवीएन का उपयोग करना शुरू कर दिया है, और मेरे पास एक कैश डायरेक्टरी है जिसे मुझे स्रोत नियंत्रण की आवश्यकता नहीं है। मैं SVN के साथ पूरी निर्देशिका / फ़ोल्डर को कैसे अनदेखा कर सकता हूं?

मैं OS X और कमांडलाइन पर संस्करणों और TextMate का उपयोग कर रहा हूं ।


3
इसी तरह के प्रश्न का उत्तर यहाँ दिया गया है [SVN चेकआउट
इग्नोर

के संभावित डुप्लिकेट मैं सबवर्सन में फ़ाइलों को कैसे उपेक्षा करते हैं? (मुझे इस बात की बहुत परवाह नहीं है कि डुप्लिकेट किस रास्ते पर जाता है; न तो उत्तर का सेट स्पष्ट रूप से दूसरे की तुलना में बेहतर है।)
जेफरी बोसबोम सिप

जवाबों:


796

svn:ignoreमूल निर्देशिका की संपत्ति सेट करें :

svn propset svn:ignore dirname .

यदि आपके पास अनदेखा करने के लिए कई चीजें हैं, तो प्रॉपर्टी के मूल्य में नई सीमाएं अलग करें। उस मामले में बाहरी संपादक का उपयोग करके संपत्ति के मूल्य को संपादित करना आसान है:

svn propedit svn:ignore .

2
@Kouber: आपकी समस्या यह है कि शेल विस्तार svn के बारे में नहीं जानता है: गुणों को अनदेखा करें। इसलिए '*' को पैरामीटर एक्सप्लिसिव के रूप में इस्तेमाल करने से कमिट को कमांड मिलता है। 'Svn प्रतिबद्ध -m "अधिक उच्चारण" जैसे कुछ आज़माएँ।'
मार्कसचैबर

4
जवाब के लिए धन्यवाद। पिको एक संपादक के रूप में: svn propedit svn: अनदेखा करें। --editor-cmd पिको
हेड

157
नोट: यह काम नहीं करेगा यदि निर्देशिका पहले से ही "svn" में है। svn rm --keep-local dirnameप्रथम। (मेरी svn स्टेट आउटपुट बहुत बड़ा था और मैंने थोड़ी देर के लिए इसमें अपना सिर
घुसा दिया

10
यदि आप एक से अधिक फ़ाइल / फ़ोल्डर को अनदेखा करना चाहते हैं, तो उनके सभी नामों को एक txt फ़ाइल, एक पंक्ति में प्रत्येक में जोड़ें, और निम्न प्रकार का उपयोग करें:svn propset svn:ignore -F file.txt .
petervaz

2
सावधान रहें कि आपने सेट किया था svn:ignoreऔर न svn::ignoreकि जैसा मैंने किया था। आप मनमानी गुण सेट कर सकते हैं, इसलिए बाद वाला ठीक सेट हो जाएगा, और आप संपत्ति देख और संपादित कर सकते हैं, लेकिन यह एसवीएन आपके द्वारा सूचीबद्ध फ़ाइलों की उपेक्षा नहीं करेगा।
रिचर्ड टर्नर

406

यहाँ एक उदाहरण निर्देशिका संरचना है:

\project
    \source
    \cache
    \other

जब projectआप देखते हैं कि आपकी कैश डायरेक्टरी नहीं जोड़ी गई है और इस तरह दिखाई देती है।

> svn st
M  source
?  cache

प्रॉपर्टी को इग्नोर करने के लिए करें

svn propset svn: कैश पर ध्यान न दें।

जहाँ svn:ignoreआप सेट कर रहे हैं, उस संपत्ति का नाम है, संपत्ति cacheका मूल्य है, और .वह निर्देशिका है जिस पर आप यह संपत्ति सेट कर रहे हैं। यह उस निर्देशिका की मूल निर्देशिका होनी चाहिए cacheजिसे संपत्ति की आवश्यकता है।

यह जाँचने के लिए कि क्या गुण सेट हैं:

> svn proplist
Properties on '.':
  svn:ignore

का मान देखने के लिए svn:ignore:

> svn propget svn:ignore
cache

पहले से तय संपत्तियों को हटाने के लिए:

svn propdel svn:ignore

17
एक मुश्किल बिंदु यहाँ है कि मैं पर ठोकर खाई। सुनिश्चित करें कि आप एक अनुगामी स्लैश नहीं जोड़ते हैं dirname। उदाहरण के लिए, टाइप करते समय svn propset svn:ignore dirname, यदि आप (bash) शेल को आपके लिए dirname में भरने की अनुमति देते हैं, तो यह उस अनुरेखण स्लैश को जोड़ देगा, जो आपको कमांड के साथ छोड़ देगा svn propset svn:ignore dirname/, जिसके परिणामस्वरूप फ़ोल्डर को अनदेखा नहीं किया जाएगा। मुझे ऐसा अनुभव हुआ।
डेविड वेन्रब

4
'कैश' डीआईआर अभी भी 'svn सेंट' में सूचीबद्ध किया जाएगा। क्या इसे देखने से हटाने का कोई तरीका है? (डिस्क से हटाए बिना)
टॉम ब्रिटो

131

उल्लेख करने के लिए महत्वपूर्ण:

कमांडलाइन पर आप उपयोग नहीं कर सकते

svn add *

यह अनदेखा फ़ाइलों को भी जोड़ देगा, क्योंकि कमांड लाइन का विस्तार होता है *और इसलिए svn addविश्वास करता है कि आप चाहते हैं कि सभी फाइलें जोड़ी जाएं। इसलिए इसके बजाय इसका उपयोग करें:

svn add --force .

बिल्कुल वैसा ही करें जैसा @binco ने कहा: svn add --force *WON'T काम। बिंदी का प्रयोग करें, स्टार का नहीं।
मनुवेल

80

चूंकि मैंने इसे काम करने के लिए कोशिश करते हुए बिताया है, इसलिए यह ध्यान दिया जाना चाहिए कि यदि फाइलें पहले से ही एसवीएन में मौजूद हैं, तो आपको svn deleteउनकी आवश्यकता है , और फिर svn:ignoreसंपत्ति को संपादित करें ।

मुझे पता है कि स्पष्ट प्रतीत होता है, लेकिन वे ?मेरी svn statusसूची में दिखाई देते रहे, जब मुझे लगा कि यह सिर्फ उन्हें स्थानीय रूप से अनदेखा करेगा।


8
यदि आप केवल उन्हें अनदेखा करना चाहते हैं और वास्तव में उन्हें हटाना नहीं चाहते हैं, तो फ़ाइलों को हटाते समय - प्रशासन-स्थानीय विकल्प का उपयोग करना न भूलें।
डायलन होम्स

71

थोड़ा विस्तार करने के लिए, यदि आप svn कमांड-लाइन टूल के साथ ऐसा कर रहे हैं, तो आप टाइप करना चाहते हैं:

svn propedit svn:ignore path/to/dir

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


8
बहुत अच्छी बात है, धन्यवाद। अन्य सभी उत्तर नेस्टेड निर्देशिकाओं के मामले में चूक गए। तो उपरोक्त उदाहरण (काम करना) तब आप संपादक पर ध्यान नहीं देते हैं (जो कि पथ / / से नीचे तक एक स्तर मानकर है)। हालांकि यह काम नहीं करेगा: svn propedit svn: उपेक्षा। और फिर टाइपिंग पाथ / / to / dir / अनदेखा_निर्माता संपादक में। IOW: SVN एक समय में एक स्तर से नीचे की वस्तुओं से मेल खाता है।
ग्रीनल्डमैन

30

svn:ignoreसंपत्ति को मूल निर्देशिका पर सेट करें :

$ cd parentdir
$ svn ps svn:ignore . 'cachedir'

यह किसी भी वर्तमान मूल्य को अधिलेखित कर देगा svn:ignore। आप इसके साथ मान संपादित करते हैं:

$ svn pe svn:ignore .

जिससे आपका एडिटर खुल जाएगा। आप प्रति पंक्ति एक से अधिक पैटर्न जोड़ सकते हैं।

आप इसके साथ वर्तमान मूल्य देख सकते हैं:

$ svn pg svn:ignore .

यदि आप GUI का उपयोग कर रहे हैं तो ऐसा करने के लिए एक मेनू विकल्प होना चाहिए।


3
svn ps svn:ignore . 'cachedir'में परिणाम cachedir is not under version controlsvn ps svn:ignore 'cachedir' .मेरे लिए काम करने के लिए बदल रहा है
डिकैप्रियो

21

उपरोक्त सभी योगदानों के लिए धन्यवाद। मैं फाइलों की अनदेखी करते हुए अपने अनुभवों से कुछ अतिरिक्त जानकारी साझा करना चाहूंगा।


जब फोल्डर पहले से रिवीजन कंट्रोल में हो

बाद SVN आयात और SVN सह फ़ाइलें, क्या हम आम तौर पर पहली बार के लिए करते हैं।

सभी रनटाइम कैश, अटैचमेंट फोल्डर संस्करण नियंत्रण में होंगे। इसलिए, svn ps svn से पहले : अनदेखा करें , हमें इसे भंडार से हटाने की आवश्यकता है।

एसवीएन संस्करण 1.5 से ऊपर हम उपयोग कर सकते हैं svn del --keep-local your_folder, लेकिन पुराने संस्करण के लिए, मेरा समाधान है:

  1. svn अपने फ़ोल्डर्स की एक साफ प्रतिलिपि निर्यात करें ( .svnछिपे फ़ोल्डर के बिना )
  2. svn डेल स्थानीय और भंडार,
  3. svn ci
  4. फ़ोल्डर वापस कॉपी करें
  5. क्या sv और सेंट की पुष्टि फोल्डर के रूप में की जाती है? '
  6. अब हम समाधान के अनुसार svn ps कर सकते हैं

जब हमें अनदेखा किए जाने के लिए एक से अधिक फ़ोल्डर की आवश्यकता होती है

  • एक निर्देशिका में मेरे पास दो फ़ोल्डर हैं जिन्हें सेट करने की आवश्यकता है svn:ignore
  • यदि हम एक सेट करते हैं, तो दूसरा हटा दिया जाएगा।
  • फिर हमें आश्चर्य है कि हमें svn पे की जरूरत है

svn peपाठ फ़ाइल को संपादित करने की आवश्यकता होगी, और आप vi का उपयोग करके अपने पाठ संपादक को सेट करने के लिए आवश्यक होने पर इस कमांड का उपयोग कर सकते हैं :

export SVN_EDITOR=vi
  1. "ओ" के साथ आप एक नई लाइन खोल सकते हैं
  2. सभी फ़ोल्डर नामों में लिखें जिन्हें आप अनदेखा करना चाहते हैं
  3. संपादित मोड से भागने के लिए 'esc' कुंजी को हिट करें
  4. टाइप करें ": wq" फिर Enterबचाने और छोड़ने के लिए मारा

फ़ाइल कुछ इस तरह दिखती है:

runtime
cache
attachments
assets

आप भी उपयोग कर सकते हैं svn propset svn:ignore -F .ignorethesefiles ., जो फ़ाइल की सामग्री का उपयोग करेगा। मैं इसे इधर-उधर रखना पसंद करता हूं ताकि आप जान सकें कि इसे क्या नजरअंदाज किया जाता है। एडिट्स के लिए फॉलोअप सहारा चाहिए।
गेरार्ड ओनेइल

20

पहले इसे हटाओ ...

यदि आपकी निर्देशिका fooपहले से ही संस्करण नियंत्रण में है, तो इसे पहले निकालें:

svn rm --keep-local foo

... फिर अनदेखा करें:

svn propset svn:ignore foo .

12

... और यदि आप एक से अधिक निर्देशिका (कहना build/ temp/और *.tmpफ़ाइलें) को अनदेखा करना चाहते हैं , तो आप इसे दो चरणों में कर सकते हैं (पहले को अनदेखा करना और गुणों को अनदेखा करना और अन्य उत्तर यहां देखें) या कोई ऐसा लिख ​​सकता है

svn propset svn:ignore "build
temp
*.tmp" .

कमांड लाइन पर।


12

यदि आप विशेष SVN क्लाइंट TortoiseSVN का उपयोग कर रहे हैं , तो प्रतिबद्ध होने पर, आपके पास आइटम राइट क्लिक करने और "सूची को अनदेखा करने के लिए जोड़ें" का चयन करने का विकल्प है।


9

कई प्रविष्टियों को अनदेखा करने के लिए आदेश थोड़ा मुश्किल है और बैकस्लैश की आवश्यकता है।

svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .

यह आदेश नामित कुछ भी ध्यान नहीं देगा cache, tmp, null, और and_so_onवर्तमान निर्देशिका में।


6
और स्पष्ट करने के लिए: यहाँ बैकस्लैश svn की विशेषता नहीं है; यह केवल शेल पर एक मल्टी-लाइन स्ट्रिंग दर्ज करने का एक तरीका है। आप एक संपादक का उपयोग भी कर सकते हैं और बस कई लाइनें लिख सकते हैं।
25:11

बैश के लिए बैकस्लैश की आवश्यकता नहीं है। bash यह जानने के लिए काफी स्मार्ट है कि "एक खुली है और लाइन को प्रोसेस करने के लिए नहीं है। आपको बस इतना करना है कि कैश, tmp, और null के बाद एंटर दबाना है। आप देखेंगे कि bash प्रॉम्प्ट को a> में बदल देता है ताकि आप जान सकें। अभी भी कमांड में प्रवेश कर रहे हैं। एक विकल्प कमांड (svn) लिखना शुरू करना है, फिर esc दबाएं। v। जो आपको संपादक में कमांड दर्ज करने की अनुमति देगा। कमांड को निष्पादित करने के लिए ZZ दबाएं। यदि आप अपना मन बदलते हैं। और निष्पादित नहीं करना चाहते हैं, तब: q--
माइकल पॉटर

1
svn propset svn:ignore -F .ignorethesefiles .आपको एक फ़ाइल का उपयोग करने की अनुमति देगा। और जैसा कि उल्लेख किया गया है, आपने हमेशा प्रचार किया है।
गेरार्ड ओनिल

5

मुझे नेस्टेड डायरेक्ट्रीज़ को नजरअंदाज करने में समस्याएँ हो रही थीं; शीर्ष निर्देशिका जिसे मैं अनदेखा करना चाहता था, वह 'svn स्टेटस' के साथ प्रदर्शित नहीं होगी, लेकिन सभी उप-कलाकारों ने किया। यह शायद हर किसी के लिए स्वयं स्पष्ट है, लेकिन मुझे लगा कि मैं इसे साझा करूंगा:

उदाहरण:

/सूँ ढ

/ ट्रंक / कैश

/ ट्रंक / कैश / subdir1

/ ट्रंक / कैश / subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci

4

"धन्यवाद"इस तरह के एक घृणित, संगीन और मुश्किल तरीके से फाइलों को नजरअंदाज करने के लिए यू svn।

इसलिए मैंने एक स्क्रिप्ट लिखी- svn-ign-all :

#!/bin/sh

# svn-ignore-all

# usage: 
#   1. run svn status to see what is going on at each step 
#   2. add or commit all files that you DO want to have in svn
#   3. remove any random files that you don't want to svn:ignore
#   4. run this script to svn:ignore everything marked '?' in output of `svn status`

svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

इसके अलावा, फ़ाइलों / मार्गों की विशिष्ट सूची को अनदेखा करने के लिए, हम इस संस्करण svn- उपेक्षा का उपयोग कर सकते हैं । मुझे लगता है कि svn-ign-all वास्तव में xargs svn-ign की तरह होना चाहिए।

#!/bin/sh

# svn-ignore

# usage:
#   svn-ignore file/to/ignore ...

for f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

एक और बात: मैं कई यादृच्छिक फाइलों के साथ अपने svn चेकआउट को प्रदूषित करता हूं। जब यह करने का समय आ गया है, तो मैं उन फाइलों को एक 'पुराने' उपनिर्देशिका में स्थानांतरित करता हूं, और svn को 'पुराने' को नजरअंदाज करने के लिए कहता हूं।


हे सैम, यह एक अच्छी स्क्रिप्ट है। मेरे सिर में सवाल उठता है: क्या यह शायद इस तथ्य से आता है कि रिपॉजिटरी का हिस्सा होने वाले संपूर्ण फ़ोल्डर को अनदेखा करने से काम नहीं चलता है, इसलिए हम उन लोगों के साथ समाप्त हो जाते हैं? ' फ़ाइलें जो मूल रूप से फ़ोल्डरों में संशोधित फाइलें हैं जिन्हें हमने अनदेखी सूची में जोड़ा है? मुझे आश्चर्य है कि अगर आपकी स्क्रिप्ट के आसपास कोई रास्ता है, क्योंकि यह हर समय इसे चलाने के लिए थकाऊ होगा। क्या आप?
स्क्वायरकट

नहीं, मैं वास्तव में इसका इस्तेमाल नहीं करता! बस मेरी फ़ाइलों को साफ करने की कोशिश करें
सैम वॉटकिंस

4

कई उपेक्षा के लिए बैश ऑनलाइनर:

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"

3

यदि आपकी परियोजना निर्देशिका का नाम / परियोजना है, और आपकी कैश निर्देशिका का नाम / परियोजना / कैश है, तो आपको / परियोजना पर एक तोड़फोड़ संपत्ति स्थापित करने की आवश्यकता है। संपत्ति का नाम "svn: ign" होना चाहिए और संपत्ति का मूल्य "कैश" होना चाहिए।

गुणों पर अधिक के लिए तोड़फोड़ मैनुअल में इस पृष्ठ का संदर्भ लें ।


3

जेसन का जवाब ट्रिक करेगा। हालांकि, svn स्थापित करने के बजाय: "पर ध्यान न दें।" कैश निर्देशिका पर, आप मूल निर्देशिका के svn में "कैश" को शामिल करना चाह सकते हैं : संपत्ति को अनदेखा करें, अगर कैश निर्देशिका हमेशा मौजूद नहीं होती है। मैं "थ्रोअवे" फ़ोल्डरों की संख्या पर ऐसा करता हूं।


3

SVN के माध्यम से महिलाओं को निर्देश देने के लिए:

  1. यह रिपॉजिटरी से फ़ाइलों को हटा देगा, लेकिन एसवीएन नियंत्रण के तहत निर्देशिका को रखेगा:

svn हटाएँ - प्रशासन-स्थानीय पथ / directory_to_keep / *

  1. फिर निर्देशिका (और सभी सामग्री) को अनदेखा करने के लिए सेट करें:

svn propset svn: उपेक्षा "*" पथ / निर्देशिका_to_keep


2

यदि आप TortoiseSVN जैसे SVN के लिए एक फ्रंटेंड का उपयोग कर रहे हैं, या IDE एकीकरण के कुछ प्रकार हैं, तो कमिट / ऐड ऑपरेशन के समान मेनू में एक अनदेखा विकल्प भी होना चाहिए।


1

Svn सेट करें: संपत्ति की उपेक्षा करें । अधिकांश UI svn टूल के पास लिंक में कमांड लाइन चर्चा के साथ-साथ ऐसा करने का एक तरीका है।


1

जब से आप संस्करणों का उपयोग कर रहे हैं यह वास्तव में बहुत आसान है:

  • अपनी चेक-आउट कॉपी ब्राउज़ करें
  • अनदेखा करने के लिए निर्देशिका पर क्लिक करें
  • "राइट बॉक्स पर ध्यान न दें संपादित करें" में
  • प्रकार *। * सभी फ़ाइलों को अनदेखा करने के लिए (या * बस jpg फ़ाइलों के लिए .jpg, आदि)

1

अपनी ट्रेलिंग स्लैश भी देखें। मैंने पाया कि images/*मेरी इग्नोर सेटिंग फाइल में शामिल नहीं है ./images/। जब मैं भागा svn status -uतब भी यह दिखा? images । इसलिए, मैंने सिर्फ अनदेखी सेटिंग को बदल दिया है images, कोई स्लैश नहीं। रैन स्टेटस चैक किया और उसको साफ कर दिया।


1

ग्रहण के साथ हलअगले तरीके से :

सबसे पहले, परियोजना के लिए अपने फ़ोल्डर का एक सिंक्रनाइज़ेशन करें:

टीम -> सिंक्रनाइज़ करें

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

इसलिए, उस संसाधन के संसाधन फ़ोल्डर का चयन करें जिसे आप अनदेखा करना चाहते हैं, और फिर आप इसका उपयोग करके अनदेखा कर सकते हैं

टीम -> में जोड़ें svn:ignore

उसके बाद, पुष्टि विंडो में, पहला विकल्प चुनें: "नाम से अनदेखा करें"।

उदाहरण के लिए, यदि मैं लक्ष्य फ़ोल्डर और उनके .class संसाधनों को अनदेखा करना चाहता हूं, तो मैं सिंक्रनाइज़ करूंगा, और सिंक्रनाइज़ दृश्य में, मैं लक्ष्य फ़ोल्डर का चयन करूंगा। उसके बाद, मैं चयन करूँगा

टीम> ऐड

, svn:ignoreऔर फिर मैं पुष्टि विंडो में पहले विकल्प की पुष्टि करूँगा।


0

इस सरल गतिविधि को कैसे करना है, इसकी तलाश में बहुत समय गंवाने के बाद, मैंने यह तय करने का फैसला किया कि एक अच्छी व्याख्या खोजना मुश्किल नहीं है।

पहले नमूना संरचना दें

$ svn सेंट? परियोजना / ट्रंक / लक्ष्य? परियोजना / ट्रंक / myfile.x

1 - सबसे पहले संपादक को mycase vim export SVN_EDITOR = vim में कॉन्फ़िगर करें

2 - "svn propedit svn: अनदेखा प्रोजेक्ट / ट्रंक /" एक नई फ़ाइल खोलेगा और आप अपनी फ़ाइलें और उपनिर्देशिका हमें मामले में टाइप कर सकते हैं "लक्ष्य" सहेजें और बंद करें फ़ाइल और काम करता है

$ svn सेंट? परियोजना / ट्रंक / myfile.x

धन्यवाद।

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