2011-09-08 12 views
8

क्या svn: कीवर्ड डिफ़ॉल्ट रूप से सक्षम करने का कोई तरीका है ताकि हर बार जब कोई नई स्रोत फ़ाइल जोड़ दी जाए तो प्रत्येक प्रॉपर्टी के लिए इस प्रॉपर्टी को चालू करने की आवश्यकता नहीं है?डिफ़ॉल्ट कैसे करें svn: सक्षम करने के लिए कीवर्ड?

उत्तर

2

ऊपर उल्लेख किया है, आप उपयोग कर सकते ऑटो गुण यह करने के लिए, लेकिन आप अपने आप को एक बड़ा सवाल पूछना चाहिए:

  • क्यों आप कीवर्ड का उपयोग करना चाहते हैं?

जब आप विकास कर रहे हैं, तो आप आसानी से विभिन्न svn कमांड का उपयोग कर सकते हैं ताकि आपको कोई भी जानकारी मिल सके जो कीवर्ड में संग्रहीत की जाए, इसलिए यह वास्तव में आवश्यक नहीं है।

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

मुझे यह भी पता है कि मैं शैल स्क्रिप्ट में निहित कीवर्ड पर भरोसा नहीं कर सकता जो कि ग्राहक साइट में हो सकता है। शेल स्क्रिप्ट एक संशोधन संख्या कह सकती है, लेकिन खोल स्क्रिप्ट संपादित किया जा सकता था।

यदि आपको वास्तव में, वास्तव में इसकी आवश्यकता है, और यह ऐसी चीज है जिसे आपकी साइट पर लागू करने की आवश्यकता है, तो कीवर्ड प्रॉपर्टी फ़ाइल पर नहीं होने पर आपको विफल होने के लिए पूर्व-प्रतिबद्ध ट्रिगर की आवश्यकता होगी। ऑटो-गुण केवल क्लाइंट के लिए सेट किए जा सकते हैं। इसका मतलब है कि आपको यह सुनिश्चित करना होगा कि आपके प्रत्येक डेवलपर के पास यह सेट है। हर बार जब वे एक नया कंप्यूटर प्राप्त करते हैं, तो आपको इसे फिर से सत्यापित करना होगा।

न ही, यह गारंटी देता है कि संपत्ति फ़ाइल पर है। भंडार में पुरानी फाइलें इसे संपादित नहीं होने पर भी जादूगर रूप से जोड़ नहीं पाएंगी। (स्वतः गुण केवल तब जोड़ा जाता है जब फ़ाइल को भंडार में जोड़ा जाता है)। ऐसा कुछ भी नहीं है जो डेवलपर को इसे हटाने से रोकता है। या, अपने सेटअप में अपने ऑटो-गुणों को संपादित करना।

आपको यह सुनिश्चित करने के लिए पूर्व-प्रतिबद्ध ट्रिगर का उपयोग करना होगा कि svn: कीवर्ड प्रॉपर्टी प्रत्येक फ़ाइल पर है जहां यह आवश्यक है और यह सही ढंग से सेट है। प्री-प्रतिबद्ध हुक बस एक लेनदेन करने से इनकार कर देगा जहां यह संपत्ति सेट नहीं है। डेवलपर को संपत्ति जोड़ने के लिए मजबूर किया जाएगा। कुछ पकड़ने के बाद, डेवलपर ऑटो-प्रॉपर्टीज का उपयोग करने और इसे स्वयं बनाए रखने के लिए अपने सबवर्जन क्लाइंट को सेट अप करेंगे।

मुझे बस pre-commit trigger है जो इसे लागू कर सकता है।ट्रिगर पर्ल में लिखा गया है, लेकिन मानक मॉड्यूल के अलावा कुछ भी नहीं चाहिए, इसलिए इसे सेटअप करना आसान है। आप इसे यह कहने के लिए कॉन्फ़िगर कर सकते हैं कि कौन सी फाइलों को कीवर्ड की आवश्यकता होती है और इसे किस पर सेट किया जाना चाहिए। यदि कोई फ़ाइल प्रतिबद्ध की जा रही है और इसमें svn नहीं है: कीवर्ड विशेषता सही मान पर सेट की गई है, तो प्रतिबद्धता विफल हो जाएगी, और त्रुटि संदेश समझाएगा कि प्रतिबद्धता क्यों विफल रही और डेवलपर को क्या करना है।

+0

+1 बहुत अच्छा बिंदु –

11

हाँ, सबवर्सन ऑटो गुणों के साथ: http://www.dcepler.net/post.cfm/subversion-auto-properties

[auto-props] खंड के प्रत्येक प्रविष्टि एक फ़ाइल ग्लोब सबवर्सन गुण के बाद स्वचालित रूप से लागू करने के लिए जब भी ग्लोब मिलान एक फाइल जोड़ा है। उदाहरण के लिए, अगर आप चाहते हैं डिफ़ॉल्ट रूप से गुण की एक निश्चित सेट करने के लिए सभी सीपीपी फ़ाइलें, तो http://www.dcepler.net/post.cfm/subversion-auto-properties पर निर्देशों का पालन और निम्न पंक्ति को संशोधित अपनी प्राथमिकताओं के अनुसार:

 
*.cpp  = svn:eol-style=native; svn:keywords="Author Date Id Rev URL"; svn:mime-type=text/plain 

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

+0

नए विंडोज़ ओएस के लिए, कॉन्फ़िग फ़ाइल सी में हो सकता है: \ Users \ _user_ \ AppData \ रोमिंग \ सबवर्सन – sartoris

1

हमारे पीएल/एसक्यूएल प्रोग्राम (और एसक्यूएल स्क्रिप्ट) में एसवीएन कीवर्ड संग्रहीत करने से विकास प्रक्रियाओं और सिस्टम अखंडता में महत्वपूर्ण मूल्य जोड़ा गया है। जब उत्पादन में कोई परिवर्तन भेजा जाता है, तो इसे संशोधित कीवर्ड द्वारा ट्रैक और प्रबंधित किया जाता है। इसे लागू करने से पहले, फ़ाइलों को स्थानांतरित करने की प्रक्रिया, और यह सुनिश्चित करना कि सही फ़ाइल तैनात की जा रही थी, बहुत ही त्रुटि प्रवण थी। इसके अतिरिक्त, हम संस्करण डेटा के लिए डेटाबेस से पूछताछ कर सकते हैं (नीचे एसक्यूएल देखें)।

-- 
    --------- Begin Version Control Data---------------------------------------- 
    -- $LastChangedDate: 2014-06-27 13:45:09 -0500 (Fri, 27 Jun 2014) $ 
    -- $Revision: 1750 $ 
    -- $LastChangedBy: kilarvk $ 
    -- $URL: svn://jdcsubv01/SQL/JDC/Trunk/JDC_UTIL.pks $ 
    --------- End Version Control Data ----------------------------------------- 
    -- 

--select SVN Keyword Info 
SELECT OWNER, 
     NAME, 
     TYPE, 
     SUBSTR(TEXT,INSTR(TEXT,'$')-1) AS KEYWORD 
FROM ALL_SOURCE 
WHERE OWNER = UPPER(NVL('&owner',OWNER)) 
    AND NAME = UPPER(NVL('&&pgm_name',NAME)) 
    AND (text LIKE '%$Revision%' 
    OR TEXT LIKE '%$URL%' 
    OR TEXT LIKE '%$Id%' 
    OR TEXT LIKE '%$LastChanged%') 

उदाहरण:

JDCSCHEMA API_TESTER_AGNT PROCEDURE $LastChangedDate: 
2014-04-08 15:33:38 -0500 (Tue, 08 Apr 2014) $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $Revision: 1445 $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $LastChangedBy: vamsisx $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $URL:svn://jdcsubv01/SQL/JDC/Trunk/API_TESTER_AGNT.prc $ 
+0

सहमत - मैं डेवलपर्स लगता है जो निर्देशिका संरचनाओं से निष्पादन योग्य संकलित करते हैं, कभी-कभी इस तरह के परिदृश्य के बारे में भूल जाते हैं, जहां वृद्धिशील पैच हो सकते हैं, कई बार उत्पादन से वातावरण की प्रतिलिपि बनाई जा सकती है, और यह वास्तविक शाखा को देखने में सक्षम होने के लिए बहुत उपयोगी है और एक नज़र में संशोधन जानकारी। हां, वहां एक मजबूत तैनाती प्रक्रिया होनी चाहिए, हां यह हमेशा संभव है कि कोड पोस्ट-परिनियोजन संपादित किया गया हो (हालांकि आप निश्चित रूप से आशा नहीं करेंगे), लेकिन स्रोत में स्वचालित रूप से जेनरेट की गई जानकारी जैसी कोई चीज़ नहीं है। –

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