2008-09-19 12 views
50

का उपयोग करते हुए एक सबवर्जन रिपॉजिटरी में एसवीएन "निष्पादन" बिट सेट करना मुझे एक ओपन-सोर्स ऐप मिला है जो code.google.com पर होस्ट किया गया है। यह क्रॉस प्लेटफॉर्म (लिनक्स/विंडोज/मैक) है। मैंने प्रारंभ में WinTP मशीन से TortiseSVN का उपयोग करके कोड अपलोड किया और ऐसा लगता है कि लिनक्स बिल्ड के लिए उपयोग की जाने वाली "कॉन्फ़िगर" बैच फ़ाइलों में से कोई भी "निष्पादित" बिट सेट सेट नहीं करता है।TortiseSVN या कमांड लाइन SVN

इन फ़ाइलों को उन फ़ाइलों के लिए सेट करने का सबसे आसान तरीका क्या होगा? TortiseSVN का उपयोग करना आसान होगा, मुझे लगता है, लेकिन अगर इसका उपयोग नहीं किया जा सकता है, तो मैं अपने लिनक्स मशीन पर कमांड लाइन एसवीएन का भी उपयोग कर सकता हूं।

for file in `find . -name configure`; do 
    svn ps svn:executable yes ${file} 
done 

या सिर्फ एक फ़ाइल के लिए (configure फ़ाइल नाम यहाँ है):

उत्तर

20
कछुआ SVN के साथ

, यह काफी आसान है: आप कई फाइलों का चयन कर सकते हैं (खोज परिणामों से हो सकते हैं, इसलिए उन्हें एक ही निर्देशिका में नहीं होना चाहिए), TortoiseSVN मेनू में "गुण" का चयन करें, आवश्यक संपत्ति जोड़ें (अधिकांशतः उपयोग की जाने वाली ड्रॉप-डाउन सूची है गुण, इस मामले में "svn: निष्पादन योग्य") और मान सेट करें (इस मामले में "*")। यदि बदली गई फ़ाइलों को कर रहे हैं और लिनक्स के तहत उन्हें जांच रहे हैं, तो निष्पादन योग्य बिट सेट हो जाएगा।

यदि आप एक से अधिक संपत्तियों को एक साथ सेट करना चाहते हैं, तो यह अधिक सुरक्षित हो सकता है (गलतियों के मामले में) पहले एक फ़ाइल के लिए गुणों को सही ढंग से सेट करने के लिए, उन्हें एक फ़ाइल में निर्यात करें, सभी आवश्यक फ़ाइलों का चयन करें, चुनें "गुण" मेनू और पहले सहेजे गए गुण आयात करें।

find . -type f -name "*.bat" -exec svn propset svn:executable yes '{}' \; 

क्या किसी को पता है कि क्यों इस संपत्ति वैध के रूप में की आवश्यकता है "हाँ":

83

यहाँ कैसे कमांड लाइन पर यह करने के लिए है

svn ps svn:executable yes configure 
+3

आपका देवदार: निम्नलिखित खोल स्क्रिप्ट का उपयोग कर सभी निष्पादन योग्य के लिए निष्पादन योग्य st संस्करण whitespace के साथ किसी भी पथ या फ़ाइल नामों पर असफल हो जाएगा ... – tobyodavies

+2

आप फ़ाइलों की सूची पर प्रोपेसेट का भी उपयोग कर सकते हैं - http://stackoverflow.com/a/5757365/134647 – khedron

+10

देखें कि निष्पादन योग्य बिट को साफ़ करने के लिए आप ध्यान दें svn propdel svn का उपयोग करना होगा: निष्पादन योग्य । आप इसे "नहीं" पर सेट कर सकते हैं। –

4
find . -type f -name "*.bat" -exec svn propset svn:executable yes "${}" \; 

बेशक .exe के लिए एक ही चला जाता है, आदि

+0

यह विंडोज संस्करण है? बस सोच रहा है, कि [एरिक का जवाब] (https://stackoverflow.com/a/4624864/384674), जो कि छोटे है, के पास अधिक वोट हैं, मेरे लिए बहुत समान लगता है ... – Betlista

7

यूनिक्स उपयोग पर {} resulset पता करने के लिए तर्क? 'के बजाय हाँ के साथ' एक और उदाहरण मिला, भी काम करता है ... निष्पादन योग्य अनुमतियों कि SVN आयात के दौरान खो रहे हैं बहाल करने के लिए

+7

THE svn: निष्पादन योग्य संपत्ति एक बूलियन मान है। इसे "हां" या "*" या _anything_ पर सेट करना पर्याप्त है। svn जांचता है कि संपत्ति सेट है या नहीं, इसकी सामग्री नहीं - अधिकांश ग्राहक मूल्य को '*' के रूप में रिपोर्ट करते हैं, भले ही आप इसे 'हां' पर सेट करते हैं। – Grhm

1

विधि: आपकी मूल स्रोत से

प्रतिलिपि अनुमतियों है कि आप SVN आयात के दौरान इस्तेमाल किया (वर्तमान dir version1 के लिए):

find . -type f | xargs -I {} chmod --reference {} ../version1/{} 

तो सेट SVN:

for file in `find . -executable -type f`; do 
    svn ps svn:executable yes ${file} 
done 
संबंधित मुद्दे