2008-10-01 17 views
8

मैं इस लंबी आदेश का उपयोग किया गया है:आप svn में सभी अनचाहे फ़ाइलों को कैसे जोड़ते हैं? गिट ऐड-ए की तरह कुछ?

svn st | awk '/\?/ {print $2}' | xargs svn add 

इसी तरह, मैंने गलती के साथ सामान्य rm साथ नष्ट कर दिया rm फ़ाइलों svn करने के लिए:

svn st | awk '/\!/ {print $2}' | xargs svn rm --force 

मुझे लगता है मैं एक पार्टी समारोह लिख सकते हैं इन करने के लिए दो, लेकिन मैं एक गिट की तरह एक इंटरैक्टिव एड/आरएम पसंद करेंगे।

+0

ध्यान दें कि आपके एक लाइनर अनचाहे फ़ाइलों के लिए अपने नाम – freespace

+4

में रिक्त स्थान के साथ तोड़ते हैं 'svn st | grep '^?' | sed's/^ [?] */"/ '| sed's/$ /" /' | xargs svn add' जो whitespace समस्या से पीड़ित नहीं है – freespace

उत्तर

6

मैं आपके द्वारा चलाए जाने वाले कमांड लाइन के सामान्यीकरण का उपयोग करता हूं, जिसे svnapply.sh कहा जाता है। मैंने इसे नहीं लिखा, लेकिन मुझे याद नहीं आया कि मुझे यह कहां मिला। उम्मीद है, मूल लेखक इसे यहाँ reposting के लिए मुझे माफ कर दो होगा:

#!/bin/bash 
# 
# Applies arbitrary commands to any svn status. e.g. 
# 
# Delete all non-svn files (escape the ? from the shell): 
# svnapply \? rm 
# 
# List all conflicted files: 
# svnapply C ls -l 

APPLY=$1 
shift 

svn st | egrep "^\\${APPLY}[ ]+" | \ 
sed -e "s|^\\${APPLY}[ ]*||" | \ 
sed -e "s|\\\\|/|g" | \ 
xargs -i "[email protected]" '{}' 

टिप्पणियों के अनुसार, स्क्रिप्ट आप एक ही स्थिति के साथ सभी फ़ाइलों के खिलाफ मनमाना आदेशों को चलाने के लिए अनुमति देता है।

अद्यतन:

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

0

एक जीयूआई का उपयोग करें जो आपको सभी अनचाहे फ़ाइलों को दिखा सकता है, फिर सभी का चयन करें और जोड़ें। किसी भी सभ्य एसवीएन gui को इस कार्यक्षमता प्रदान करना चाहिए।

उसने कहा, सावधान रहें कि आप वास्तव में उन सभी फ़ाइलों को चाहते हैं।

0

टोर्टोइज एसवीएन में कमिट और शो चेंज डायलॉग में अनवरोधित फ़ाइलों को दिखाने का विकल्प है। आप फ़ाइल को 'जोड़ें' पर राइट क्लिक कर सकते हैं या इसे अनदेखा के रूप में चिह्नित कर सकते हैं।

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

+2

यदि आप TortoiseSVN प्रतिबद्धता संवाद में हैं तो आप भी आलसी हो सकते हैं। TortoiseSVN आपके द्वारा किए जाने पर संवाद में चेक की गई किसी भी गैर-संस्करण वाली फ़ाइलों को स्वचालित रूप से जोड़ देगा। –

7

एक आसान लाइन है ...

svn add `svn status | grep ?` 

तो आप इसे सेट अप करने में उपनाम के रूप में ~ /.bashrc ऐसे

alias svn-addi='svn add `svn status | grep ?`' 
+2

यह काम नहीं करता –

+2

मैंने यह करने के लिए समाप्त किया: एक 'svn स्थिति में | grep? | नॉक '{प्रिंट $ 2}' '; एसवीएन $ एक जोड़ें; –

0

के रूप में एक similar question जो एक nice Ruby script है कि आप जोड़ने, उपेक्षा या नई फ़ाइलों को छोड़ने का विकल्प देता है शामिल नहीं है। मैंने कोशिश की है और यह मेरे लिए काम किया है। कोई जीयूआई की आवश्यकता नहीं है, केवल रूबी।

5

यह मौजूदा निर्देशिका में सभी SVN-ट्रैक न किए गए और -unversioned फ़ाइलें कहते हैं, सभी सबडायरेक्टरियों के माध्यम से recursing:

svn add --force ./* 

MacOS 10.6+ और Ubuntu 10+ में मेरे लिए काम करता है, SVN 1.6+ के साथ। यह कोई प्रति फ़ाइल, उपयोगकर्ता-अंतःक्रियाशीलता प्रदान नहीं करता है; मुझे नहीं पता कि यह कैसे करना है।

इससे बेहतर या बदतर के लिए svn-ignored फ़ाइलों को भी जोड़ा जाएगा।

+0

किया गया है जो अनदेखा फ़ाइलों को भी जोड़ देगा, जो शायद अधिकांश लोग नहीं चाहते हैं। –

+0

@IanDunn धन्यवाद, मैंने तदनुसार जवाब अपडेट किया है। –

संबंधित मुद्दे