फ़ाइल नाम के लिए SVN रिपॉजिटरी में खोजें


84

हमारे पास कोड के लिए एक थोक भंडार है जिसमें हजारों फ़ोल्डर और उप फ़ोल्डर हैं, मैं इस रिपॉजिटर को फ़ाइल नाम या किसी शब्द के साथ खोजना चाहता हूं।

Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt

मैं cd.txt की खोज करना चाहता हूं लेकिन यह नहीं जानता कि यह SVN रिपॉजिटरी में कहां है, इसके लिए मैं SVN के रूट फोल्डर पर एक खोज करना चाहता हूं जहां मैं फाइल का नाम cd.txt डालूंगा और कमांड चलाऊंगा, जांच करूंगा प्रत्येक फ़ोल्डर और फ़ाइल विवरण परिणाम प्रदर्शित करेगा ...।

आशा की आवश्यकता स्पष्ट है। क्या आप कृपया इस पर मेरी मदद कर सकते हैं।


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

जवाबों:


60

यदि फ़ाइल आपकी कार्य प्रतिलिपि में है, तो यदि आप svn 1.5 का उपयोग कर रहे हैं:

svn list --depth infinity | grep <filename>

या svn का पुराना संस्करण:

find . -name <filename> -not -path '*.svn*'

यदि आपको इतिहास में फ़ाइल ढूंढनी है (नष्ट या स्थानांतरित):

svn log -v | less

और इसके साथ खोजें:

\<filename><return>

3
svn सूची - depth infinity अच्छी तरह से काम करती है, निश्चित रूप से खिड़कियों में आप अभ्यस्त डिफ़ॉल्ट रूप से जीआरईपी है, मैंने इसे बस एक पाठ फ़ाइल में डंप किया और एक पाठ संपादक के साथ खोजा:
मैनड्रैक

4
Windows PowerShell में आप ... | select-string <filename>प्रतिस्थापन के रूप में उपयोग कर सकते हैं grep
MarnixKlooster

2
एक नियमित खिड़कियों में कमांड लाइन ... | find "<filename>"grep के प्रतिस्थापन के रूप में भी काम करेगी। नोट : "फ़ाइल नाम के आसपास की आवश्यकता है।
Raystorm

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

1
आप कर सकते हैं svn co --depth empty REPOURL RepoDir, cd RepoDirऔर svn list --depth infinityफिर SVN सर्वर से सभी फ़ाइल पथ प्राप्त करें (यदि आपके पास लाखों हैं, तो संभवतः लाखों लाइनें पैदा कर सकते हैं)।
इवान अकचेरोव

58

निम्नलिखित मेरे लिए काम करता है (svn संस्करण 1.4.6)

svn list -R <URL> | grep "<file_pattern>"

6
महान। यह कछुआ के लिए काम करता है। खिड़कियों में: svn list -R myurl >> results.txt
live-love

वास्तव में अच्छी तरह से काम करता है। इसके अलावा "-Repth अनन्तता" की तुलना में सिर्फ "-R" याद रखना ज्यादा आसान है।
MPV

बड़े रेपो के लिए धीमी गति से, फिर नीचे बेहतर svn-crawler का उपयोग करें।
कर्स्टन

17

रेपो के उपयोग के साथ ही (अपने svn होस्ट फ़ाइल sytem पर)

svnlook tree [path_to_repo] | grep [file_name]  

या सभी रिपोज को खोजने के लिए (यदि आपके पास मल्टिपल रिपोज सेटअप है)।

for i in \`ls [path_to_repos_dir]`; do echo $i; svnlook tree [path_to_repos_dir]/$i | grep -i [file_or_folder_name]; done 

विकल्प --full-पथ फ़ाइल को रेपो में पूर्ण पथ देगा (यदि पाया गया)

उदाहरण:

for i in `ls /u01/svn-1.6.17/repos`; do echo $i; svnlook tree --full-paths /u01/svn- 1.6.17/repos/$i | grep -i somefile.txt; done

यदि किसी स्थिर प्रति की आवश्यकता हो तो फ़ाइल को रीडायरेक्ट करना।
निक्स ओएस का उपयोग कर ग्रहण करता है।


3
+1 "svnlook tree --full-path <path_to_repo> | grep <filename>" का उपयोग करने के लिए। यह सबसे तेज़ तरीका है जो मैंने एक फ़ाइल खोज को एक तोड़फोड़ रेपो में करने का पाया है।
निक ग्रीली

बिजली की तेजी से खोज, बहुत उपयोगी है।
डस्टिन कुक

12

svn list --depth infinity <your-repo-here>रेपो में फ़ाइलों की सूची प्राप्त करने के लिए, और फिर svn catसामग्री प्राप्त करने के लिए। पार्सिंग को थोड़ा सरल बनाने के --xmlलिए आप listकमांड जोड़ सकते हैं ।


grepयदि आप 1 फ़ाइल देखना चाहते हैं, तो उपयोग करना याद रखें , खासकर यदि आपके पास ओपी जैसे भंडार में हजारों फाइलें हैं। इसके अलावा, एक --incrementalमोड है यदि आपको बाद में / पहले एक्सएमएल आउटपुट के साथ आउटपुट में शामिल होने की आवश्यकता है।
ट्राइसिस

6

हाल ही में मैंने रिपॉजिटरी को सूचीबद्ध करने के लिए अपनी उपयोगिता प्रकाशित की है, यह "svn ls --depth infinity" दृष्टिकोण की तुलना में बहुत तेज है। यहाँ बेंचमार्क हैं । यह सिर्फ एक फ़ंक्शन को कॉल करता है जो सबवर्सन इंटरनल एपीआई में उपलब्ध है, लेकिन अब एक कमांड लाइन के माध्यम से सुलभ है।

तो तुम दौड़ सकते हो

$ svn-crawler <URL> | grep "<file_pattern>"

अच्छा उपकरण। मैंने CentOS7 के साथ परीक्षण किया। मुझे CMakeLists.txt में libsvn_delta और libsvn_subr को target_link_lbooks सूची में जोड़ना था, साथ ही LIBAPR_LIBRARY_INCLUDE को "शामिल / apr-1.0" से "/ / apr-1" शामिल करना था।
कर्स्टन

4

यदि आप TortoiseSVN का उपयोग कर रहे हैं, तो आप यह प्रयास कर सकते हैं यदि आप प्रोजेक्ट द्वारा प्रोजेक्ट देखने के इच्छुक हैं - मेरे लिए काम करता है:

  1. अपने रिपॉजिटरी शीर्ष स्तर URL के तहत एक रिक्त प्रोजेक्ट बनाएं, इसे BLANK कहें
  2. बाएं फलक पर रेपो URL पर क्लिक करें
  3. दाहिने हाथ के फलक पर अपनी BLANK परियोजना और अपनी इच्छित परियोजना चुनें - ट्रंक कहें
  4. ब्राउज़र मेनू को पॉप अप करने के लिए राइट क्लिक करें और 'तुलना URL' चुनें, आपके रेपो के आकार के आधार पर इसे लोड करने में एक मिनट लग सकता है। लेकिन आपको मूल रूप से 'रेडी-टू-सर्च' सूची में अपनी पूरी परियोजना सूची मिलती है।
  5. खोज फ़िल्टर में अपना फ़ाइल नाम या अन्य स्ट्रिंग दर्ज करें

0

VisualSVN सर्वर 4.2 वेब इंटरफ़ेस में नाम से फ़ाइलों को खोजने का समर्थन करता है। डेमो सर्वर पर नई सुविधा का प्रयास करें

आप VisualSVN सर्वर 4.2.0 को https://www.visualsvn.com/server/download/pre-release/ पर डाउनलोड कर सकते हैं । Https://www.visualsvn.com/server/download/ पर रिलीज़ नोट्स देखें

यहाँ छवि विवरण दर्ज करें


-2

यदि आपका रिमोट रिपॉजिटरी विशाल नहीं है, तो एक आसान तरीका है: आप स्थानीय रिपॉजिटरी प्राप्त करने के लिए "चेकआउट" कर सकते हैं। यदि आप विंडोज़ मशीन में हैं, तो आप "खोज" या लिनक्स मशीन का उपयोग "फाइंड" कमांड का उपयोग करते हैं।

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