2012-04-03 12 views
7

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

<one line to give the program's name and a brief idea of what it does.> 
Copyright (C) <year> <name of author> 

This program is free software: you can redistribute it and/or modify 
it under the terms [SNIP] 

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

क्या यह स्वचालित रूप से प्रबंधित करने का कोई तरीका है, ताकि मुझे केवल एक ही स्थान पर यह सामान संपादित करना पड़े और यह स्वचालित रूप से प्रतिलिपि हो जाए?

यदि आवश्यक हो, तो आप मान सकते हैं कि मैं किसी भी आधुनिक संशोधन नियंत्रण प्रणाली का उपयोग कर रहा हूं।

+0

कृपया यह स्पष्ट है, जो VCS और जो ओएस के तहत आप उपयोग करना चाहते। इसके अलावा - क्या आपके पास किसी भी सीआई | उपयोग करने की योजना है) उपकरण तैनात करें? –

+0

साइड नोट - कॉपीराइट सुरक्षा का वर्ष प्रति वर्ष नहीं है, यह (* गतिशील *) रेंज स्टार्ट-एंड (एफएसएफ सुझावों और शुद्ध सादे तर्क के अनुसार) –

+0

@LazyBadger: मैं मुख्य रूप से लिनक्स + गिट का उपयोग करता हूं, लेकिन मैं अन्य प्रणालियों के समाधान के बारे में भी उत्सुक हूं। और मान लें कि कोई सीआई/तैनाती नहीं है, लेकिन मुझे नहीं लगता कि यह कैसे प्रासंगिक हो सकता है, क्योंकि वे केवल बाद के चरण में काम करते हैं (मैं चाहता हूं कि वीसीएस में कॉपीराइट लाइनें हों, * पहले * मैं तैनात हूं)। कॉपीराइट वर्ष के संबंध में, कोई फर्क नहीं पड़ता कि प्रारूप केवल 2007-2011 या 2011 है, मुझे अभी भी इसे हर साल अपडेट करना होगा, है ना? –

उत्तर

4

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

यह निर्भर करता है।

  • फ़ाइल
  • प्रति लाइसेंस से संबंधित जानकारी का प्रबंधन का प्रबंधन एक केंद्रीय स्थान में लाइसेंसिंग जानकारी: सबसे पहले वहाँ ऐसा करने के दो (और अधिक) तरीके हैं।

यदि आप स्क्रैच से कोई प्रोजेक्ट प्रारंभ करते हैं, तो प्रति-फ़ाइल विधि अक्सर चीजों को स्पष्ट करते समय करना आसान होता है। जैसा कि आप लिखते हैं, उस समय के साथ चीजों का ट्रैक रखने के लिए यह और अधिक कठिन हो रहा है। इसलिए अधिक से अधिक परियोजनाएं केंद्रीय स्थान संस्करण पर स्विच करें।

फ़ाइल-दर-फ़ाइल विधि का लाभ यह है कि किसी कार्य का दायरा स्पष्ट है। अक्सर आप फ़ाइल-टिप्पणी में एप्लिकेशन का नाम लिखते हैं। अगर किसी कारण से एक फ़ाइल निकाली जाती है, तो जानकारी अभी भी वहां है और दस्तावेज़ीकरण श्रृंखला टूट नहीं है।

केंद्रीय स्थान विधि के साथ, लाभ यह है कि यह आमतौर पर आपके संस्करण नियंत्रण सॉफ्टवेयर द्वारा समर्थित है, उदाहरण के लिए जीआईटी। प्रतिबद्ध व्यक्ति द्वारा समितियों पर हस्ताक्षर किए जा सकते हैं, और लेखक को दिया जा सकता है। यह दस्तावेज है जिसने स्वचालित रूप से कौन सा कोड लिखा है और वह जानकारी केंद्रीय स्थान पर संग्रहीत है: वीसीएस।

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

/** 
* Flux Deluxe v3.2.0 - Vector Drawing Redefined 
* 
* Copyright 2010, 2012 by it's authors. 
* Some rights reserved. See COPYING, AUTHORS. 
*/ 

आप एक नए साल में एक नया संस्करण जारी यदि यह अद्यतन करने के लिए एक नहीं brainer है सारे दस्तावेज।

+1

खैर मेरा सवाल यह है कि आप सभी फाइलों को अपडेट करने के "नो-ब्रेनर" को कैसे प्रबंधित करते हैं, बेशक, इसे हाथ से कर रहे हैं। क्या इसके लिए कोई उपकरण है? क्या आप प्रत्येक संस्करण परिवर्तन के लिए अपना खुद का regexp लिखते हैं और उम्मीद है कि यह बहुत अधिक मेल नहीं खाता है? क्या आप प्रत्येक फाइल को हाथ से संपादित करते हैं? –

+0

टेक्स्ट (एकाधिक) फ़ाइलों में टेक्स्ट को प्रतिस्थापित करने के लिए आप ['sed'] (http://www.grymoire.com/Unix/Sed.html) का उपयोग कर सकते हैं। इसके अतिरिक्त आप जिस आईडीई का उपयोग करते हैं उसके आधार पर फाइलों में अक्सर खोज और प्रतिस्थापन होता है। मेरा मतलब है "नो-ब्रेनर": मल्टी-फाइल-सर्च-एंड-रीप्लेस। यदि हेडर समान रहते हैं (कम से कम इसका मुख्य भाग), तो यह केवल एक सीधी आगे की खोज है और प्रतिस्थापित है। – hakre

+0

ठीक है, धन्यवाद। मैं इस समाधान से संतुष्ट नहीं था क्योंकि हमेशा जोखिम होता है कि यह बहुत अधिक मेल खाता है (v.3.2.1 के साथ सभी "फ्लक्स डीलक्स v.3.2.0" को प्रतिस्थापित करें? आपकी चेंजेलॉग फ़ाइल और आपके संगतता त्रुटि संदेशों के विरुद्ध कुछ हो सकता है। ..), इसलिए मैंने पूछा कि क्या कोई उपकरण विशेष रूप से उस के लिए लिखा गया है। मैं जवाब दूंगा "नहीं, हम सभी अपने स्वयं के regexp रोल" जवाब देंगे। :) –

0

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

के बाद लिंक उपयोगी हो सकता है:
http://abhijitjana.net/2010/12/05/add-document-header-for-files-automatically-in-visual-studio/
http://stylecop.codeplex.com/

ग्रहण में, वहाँ भी मैक्रो समर्थन है, इसलिए आप भी ऐसा ही करने में सक्षम होना चाहिए के रूप में बनाम के लिए सुझाव हालांकि, मुझे इसके साथ कोई अनुभव नहीं है।
http://stylecop.codeplex.com/

मैं किसी भी SVN-उपकरण है कि फाइलों में ही अनुकूलन के बारे में सुना नहीं किया है:

जावा के लिए, वहाँ StyleCop के लिए एक विकल्प है। अपने संपादक में मैक्रो का उपयोग करना आप जो चाहते हैं उसकी सबसे नज़दीकी चीज है।

+0

मैक्रोज़ हेडर बनाने के लिए पहली बार काम करता है (साथ ही कॉपी-एंड-पेस्ट), लेकिन इसे अद्यतन करने के लिए नहीं, जब तक कि मुझे कुछ याद नहीं आ रहा है। और उन्हें अभी भी ओ (एन) के बजाए फाइलों की संख्या के साथ ओ (एन) के रूप में स्केल की मात्रा की आवश्यकता होती है। –

3

उपयोग License Header Manager

+0

उत्तर के लिए धन्यवाद। यह विजुअल स्टूडियो उपयोगकर्ताओं के लिए एक अच्छा समाधान प्रतीत होता है। –

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