हार्डवेयर परियोजनाओं के लिए संस्करण नियंत्रण प्रणाली?


59

हार्डवेयर परियोजनाओं के लिए कुछ अच्छी संस्करण प्रणालियां क्या हैं? क्या Google कोड, CVS और SVN के समकक्ष हैं? क्या ऐसे संस्करण नियंत्रण प्रणालियां पीसीबी फाइल, योजनाबद्ध .. (यहां तक ​​कि फर्मवेयर कोड) को शामिल करने वाली हार्डवेयर परियोजनाओं के लिए उपयुक्त हैं?


5
बड़ा अच्छा सवाल! उत्तर में शामिल कुछ रिपॉजिटरी उदाहरण देखना पसंद करेंगे।
tyblu

+1 यह पहचानने के लिए कि HW प्रोजेक्ट्स स्रोत नियंत्रण से लाभान्वित हो सकते हैं। जिन लोगों के साथ मैं काम करता हूं, उन्हें यह महसूस करने में कठिन समय लगता है।
नट

1
मैं कुछ समय के लिए संस्करण सर्किट बोर्डों के लिए मर्क्यूरियल का उपयोग कर रहा हूं, और इसने मेरे बट को एक दो बार बचाया है। निश्चित रूप से एक अच्छा विचार है।
स्टीफन कोलिंग्स

1
मैं ईडीए के लिए उपकरणों के gEDA सूट का उपयोग करता हूं और चीजों को ट्रैक करता हूं। मैंने हाल ही में कुछ गिट हुक लिखे हैं जो स्वचालित रूप से उत्पन्न होते हैं। किसी भी योजनाबद्ध या पीसीबी की छवियों को संशोधित करें जिन्हें संशोधित किया गया है और उन्हें प्रतिबद्ध में जोड़ता है। यह मुझे GitHub की छवि भिन्नता का लाभ उठाने की अनुमति देता है। PCB और gschem में भी देशी भिन्न उपकरण हैं जो git के साथ काम करते हैं जो स्थानीय रूप से कुछ ऐसा ही करते हैं। मेरे हुक यहाँ हैं: github.com/BenBergman/.git_hooks उदाहरण परियोजना जो उनका उपयोग करती है: github.com/BenBergman/uJoypad
बेन

जवाबों:


27

मूल रूप से, सभी VCS सिस्टम टेक्स्ट और बाइनरी फ़ाइलों को इनायत से संभाल सकते हैं। बेशक आप बाइनरी वाले को मर्ज नहीं कर सकते।

इसलिए जब तक आप सीवीएस जैसी अप्रचलित चीजों का उपयोग नहीं कर रहे हैं तब तक आप किसी भी प्रणाली के साथ अच्छे होंगे।


3
मैं अपने सभी प्रोजेक्ट्स (सॉफ्टवेयर और हार्डवेयर, पीसीबी, फर्मवेयर, टूल्स आदि के लिए CVS) का उपयोग करता हूं और कोई समस्या नहीं है। ज़रूर, सीवीएस अप्रचलित है, लेकिन मेरे पास 20 साल का प्रोजेक्ट इतिहास है और किसी भी कन्वर्टर ने मेरी रिपॉजिटरी को मर्क्यूरियल, या एसवीएन में स्थानांतरित करने के लिए काम नहीं किया।
एक्समेन

12
फिर एक व्यावहारिक तरीका बस CVS में पुराने सामान को छोड़ देना है, और फिर नए सिस्टम में नया सामान डालना है ...
जोहान

सीवीएस एक सुंदर प्रणाली है, जिसकी तुलना माइक्रोसॉफ्ट विजुअल सोर्स सेफ से की जाती है, जिसे मैं फिलहाल एक प्रोजेक्ट के लिए लॉक कर रहा हूं। Blech।
केविन वर्मियर

@ केविन वर्मी आप जानते हैं कि आप उस पैमाने पर नकारात्मक पक्ष में हैं जब आप दो "एक दूसरे के साथ" अच्छी नहीं "चीजों की तुलना कर रहे हैं;)
जोहान

@KevinVermeer, मुझे सूत्रों का उपयोग करना पड़ा, संस्करण नियंत्रण दुनिया का बैन। मेरे अंतिम बॉस ने इसके कारण संस्करण नियंत्रण की पूर्ण उपेक्षा की अनुमति दी।
कोर्तुक

17

मैंने पहले Altium के साथ तोड़फोड़ का उपयोग किया है। इसने सफलतापूर्वक काम किया, लेकिन उस समय एक अलग टूल की कमी ने इसे कोड नियंत्रण के मुकाबले कम उपयोगी बना दिया। मुझे अब भी लगता है कि यह क्षमता के बिना भी करने लायक था।

फर्मवेयर के लिए, सबवर्सन या गिट दोनों महान हैं। यदि आपने पहले Git का उपयोग नहीं किया है, तो पहले तोड़फोड़ का प्रयास करें (भले ही यह Git को बाद में कठिन बना देगा)।

अल्टियम ने हाल ही में योजनाबद्ध और पीसीबी के लिए एक अलग उपकरण पेश किया है, इसलिए मुझे उम्मीद है कि तोड़फोड़ अब महान होगी, सामान्य पागलपन को मापता है जिसे ईडीए विक्रेता अपने उत्पादों में बनाने का प्रबंधन करते हैं।

मैं नए अलग उपकरण के साथ इसे आज़माने के लिए अर्थ रखता हूं; यदि मैं करता हूं, तो मैं रेपो के लिंक को एक उदाहरण के रूप में पोस्ट करने के लिए याद रखने की कोशिश करूंगा।

अपडेट करें

मैंने इसे आज़माया है, और मुझे यह कहना है कि मैं Altium diff टूल से थोड़ा अभिभूत हूं। यह कार्यात्मक है, लेकिन बोर्ड के बीच के बदलाव पर्याप्त हैं कि यह मेरे लिए कम से कम उपयोगी नहीं है। इसे देखने के बाद, मैंने डिफरेंट टूल के बारे में भूलने का फैसला किया है और सिर्फ Github का उपयोग किया है। यदि आप रुचि रखते हैं तो यहाँ रेपो है: https://github.com/rascalmicro/pcb


क्या आपने एकीकृत SVN GUI (Altium के साथ) या कुछ बाहरी का उपयोग किया था?
निक टी

SVN के साथ नवीनतम Altium बहुत अच्छा है, हालांकि मैं जोड़ूंगा कि PCB / योजनाबद्ध संशोधन लगभग उतने महत्वपूर्ण नहीं हैं जितने कि कोड में हैं। यदि आप 3-4 से अधिक अधिकतम योजनाबद्ध / पीसीबी रिलीज के साथ काम कर रहे हैं, तो डिज़ाइन या आवश्यकताओं के चरणों में बहुत गलत होने पर शायद कुछ संशोधन करें।
मार्क

@ मर्क: क्या आप रिलीज़ 10 बीटा या समर 09 के बारे में बात कर रहे हैं?
निक टी

2
यदि बोर्ड के बीच के बदलाव पर्याप्त हैं कि यह उपयोगी नहीं है, तो आप अक्सर पर्याप्त नहीं कर रहे हैं। जल्दी प्रतिबद्ध, अक्सर प्रतिबद्ध! बोर्ड रिव्यू को ट्रैक करने के लिए टैग का उपयोग करें।
केविन वर्मियर

3
मैं एसवीएन का उपयोग कर रहा हूं, और यह निश्चित रूप से सार्थक है। मेरा सिस्टम यह है: मैं सेव बटन को हिट करता हूं, मुझे सावधानी से कमिट करना चाहिए। मैं "पुस्तकालय में जोड़ा गया भाग X" या "I2C और SPI busses में जोड़ा गया परीक्षण पैड" जैसे प्रतिबद्ध संदेशों को पढ़कर परिवर्तनों का पालन करता हूं। फैब्रिकेशन के लिए भेजे गए रिलीज़ पूरी तरह से अलग हैं, svn cp trunk/ tags/releaseX/रिलीज़ का स्नैपशॉट लेने के लिए उपयोग करते हैं। यदि आप रिलीज़ के बीच परिवर्तन देखना चाहते हैं, या आप कमियों को ब्राउज़ कर सकते हैं और व्यक्तिगत परिवर्तन देख सकते हैं, तो आप रिलीज़एक्स / फ़ाइल और रिलीज़वाई / फ़ाइल को अलग कर सकते हैं। शाखाएँ आवागमन की बाढ़ को कम करने में मदद करती हैं।
केविन वर्मर

10

मैं VisualSVN सर्वर + TortoiseSVN क्लाइंट का उपयोग करता हूं, और यह ठीक काम करता है


7

मैं Google कोड का उपयोग सुपर ओएसडी की मेजबानी करने के लिए करता हूं , जो मेरा एक इलेक्ट्रॉनिक्स प्रोजेक्ट है।

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


3
फ़ाइलों के लिए पाठ-आधारित स्वरूपों के उपयोग के लिए +1। डिस्क स्थान सस्ता है, और पाठ का संपीड़न आसान है। मैं चाहता हूं कि बाइनरी ब्लब्स कम आम थे।
केविन वर्मर

4

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

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


3

केवल Google कोड या SVN रेपो का उपयोग क्यों न करें? जैसा कि यह एक संशोधन नियंत्रण प्रणाली है। इसका कोई परिभाषित उपयोग नहीं है। यह कई डेवलपर्स के लिए अविश्वसनीय रूप से उपयोगी है और स्रोत कोड में परिवर्तन की निगरानी कर रहा है।


1
क्या आपने ऐसा किया है? एसवीएन या मर्क्यूरियल में बायनेरिज़ डालना मेरे लिए बहुत ही कठिन हो गया है।
tyblu

2
नहीं, मैंने नहीं किया है, लेकिन मैंने एसवीएन का उपयोग न केवल स्रोत कोड के लिए किया है। पीडीएफ और .txt फ़ाइलों की तरह चीजें।
डीन

2
@ टायब्लू आपका क्या मतलब है? मैंने इसे योजनाबद्ध और लेआउट फ़ाइलों के साथ किया है और इसके तोड़फोड़ के साथ मेरे लिए बहुत अच्छा काम किया है।
कालेनजब

मैं मर्क्यूरियल के साथ EAGLE फ़ाइलों में परिवर्तन का पालन नहीं कर सकता। ऐसा लग रहा है कि पूरी फाइल अलग है। क्या आपके पास एक भंडार है जिसे मैं देख सकता हूँ?
टाइबलू

5
@tyblu यही कारण है कि जब आप फाइलों में जांच करते हैं तो आप टिप्पणी जोड़ते हैं :)
vicatcu

3

मैंने पहले Altium के साथ तोड़फोड़ का उपयोग किया है।

मैं योजनाबद्ध कैप्चर के लिए Altium एकीकरण के साथ SVN का उपयोग करता हूं: यह अच्छी तरह से काम करता है। मुझे कहना होगा कि अंतर दर्शक कुछ भी नहीं होने से बेहतर है, क्योंकि मेरी शडोक फाइलें बाइनरी हैं, अन्यथा तुलना करना असंभव है! मैं बिना किसी समस्या के TortoiseSVN के साथ समानांतर में Altium डिजाइनर में एकीकृत SVN क्लाइंट का उपयोग करता हूं। Altium का क्लाइंट SVN फीचर्स के मामले में थोड़ा सीमित है। मैं कछुआ के साथ अपना "टैग" करता हूं।

मेरी राय अल्टियम डिजाइनर 10 बिल्ड 27009 पर आधारित है, और संस्करण 13.1 बिल्ड 27559 है।



1

एक वास्तविक संस्करण नियंत्रण प्रणाली नहीं है, लेकिन ड्रॉपबॉक्स फाइलों का पुनरीक्षण भी विभिन्न ओएस पर विभिन्न लोगों के लिए उन्हें उपलब्ध बनाता है। - गरीब आदमी संस्करण नियंत्रण प्रणाली;)


2
किसी ऐसे व्यक्ति के रूप में जिसने पहले टीमों के साथ काम किया हो: कृपया ऐसा न करें। ड्रॉपबॉक्स एक गरीब आदमी का संस्करण नियंत्रण प्रणाली नहीं है । यह फ़ाइल शेयर / अभिलेखीय प्रणाली है। आपको इसके पूर्ण रूप से उपयोग करने की आवश्यकता नहीं है, इसके लिए यह अधिक उपयोगी है, वास्तव में! ड्रॉपबॉक्स सभी चीजों को गलत करता है, यहां तक ​​कि सीवीएस ने भी सही किया (नए संशोधनों से कैसे निपटें, परिवर्तनों का आदान-प्रदान कैसे करें, विशिष्ट संशोधनों को कैसे चिह्नित करें), यह वास्तव में एक संस्करण नियंत्रण प्रणाली नहीं है
मार्कस मुलर

1

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

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

मैंने एलीम रेप्स के बारे में एलीट 14 टेंट में भी बात की, और उन्होंने संकेत दिया कि वे एक एक्सएमएल फॉर्मेट में जा रहे हैं, जो कि एक बड़ा कदम है, जिसमें स्कीइंग और लेआउट को अधिक प्रशंसनीय बनाने की ओर एक बड़ा कदम है ... इस मोर्चे पर सभी दिलचस्प प्रगति !


1

Altium अच्छी खबर!

Altium ने Git नियंत्रण संस्करण के लिए समर्थन जोड़ा जैसे आप Altium डिज़ाइनर के लिए रिलीज़ नोट्स में देख सकते हैं ।

उपयोग करने का तरीका जानने के लिए, आप संस्करण नियंत्रण गाइड का उपयोग करके इसका अनुसरण कर सकते हैं।


0

यह वास्तव में एक बहुत अच्छा सवाल है। चूंकि FPGAs "हार्डवेयर" की श्रेणी में आते हैं, इसलिए आप FPG परियोजनाओं के लिए प्रस्तावित एक संस्करण-नियंत्रण अनुकूल परियोजना संरचना में दिलचस्पी ले सकते हैं:

http://www.saardrimer.com/fpgaproj/

मुझे लगता है कि विचारों और अवधारणाओं को आसानी से अन्य हार्डवेयर परियोजनाओं और सामान्य रूप से लागू किया जा सकता है। (इस प्रस्ताव पर टिप्पणियाँ बहुत स्वागत है, btw।)


2
लिंक अब काम नहीं कर रहा है।
टाइबलू

0

परिहास से बचें। यह बड़े रिपॉजिटरी को अच्छी तरह से हैंडल नहीं करता है। और आपकी रिपॉजिटरी तब तक बड़ी हो जाएगी जब तक आप

  1. बाइनरी योजनाबद्ध फाइलें हैं जो केवल बदलने पर कुछ हद तक बदल जाती हैं
  2. पाठ के रूप में बायनेरिज़ को चालू करें।

3
अच्छा ... आपके पास प्रति प्रोजेक्ट में कई रेपो, एक रेपो होने चाहिए।
जोहान

1
@ जोहान - ...... हाँ .... उस रखरखाव दुःस्वप्न के साथ शुभकामनाएँ। वैसे भी, मेरे पास कई सब-प्रोजेक्ट्स के साथ प्रति ग्राहक (लगभग 4, रिपॉजिटरी) अब 1 रेपो है, और यह बहुत अच्छी तरह से काम करता है। एसवीएन, कम से कम, बहुत अधिक परेशानी के बिना 5+ जीबी बाइनरी डेटा को संभालने में सक्षम प्रतीत होता है।
कॉनर वुल्फ

1
@ConnorWolf मुझे यह सुनने में दिलचस्पी होगी कि आप कैसे कर रहे हैं। हम प्रति प्रोजेक्ट एक Git रिपॉजिटरी करते हैं, और इसमें कोई समस्या नहीं है। प्रति प्रोजेक्ट एक रिपॉजिटरी नहीं होना मेरे लिए एक मेंटेनेंस बुरे सपने जैसा लगता है।
मैट यंग

1
एसवीएन, कम से कम (शायद गिट भी) द्विआधारी भिन्न को संग्रहीत करने के लिए लगता है, बल्कि फिर एक फ़ाइल की पूर्ण प्रतियां, इसलिए यह प्रभावशाली रूप से अंतरिक्ष-कुशल है।
कॉनर वुल्फ

1
@ConnorWolf re: रखरखाव दुःस्वप्न: 8 साल बाद: git-submodules शायद वही हैं जो आप यहाँ चाहते हैं। विशेष रूप से समझ में आता है अगर आप कई परियोजनाओं या ग्राहकों के बीच मानक टूलींग बातें साझा करते हैं।
मार्कस मुलर

0

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


0

आपको सूअर की कोशिश करनी चाहिए । यह विशाल फ़ाइलों और रिपॉजिटरी को संभालने के लिए जमीन-अप डिज़ाइन किया गया है। 100 जीबी या अधिक बाइनरी डेटा कोई समस्या नहीं है।


0

यदि आप उस मार्ग पर जाने का निर्णय लेते हैं, तो मैं HgInit के एक लिंक को जोड़ना चाहूंगा, Mercurial का एक उत्कृष्ट परिचय। व्यक्तिगत रूप से मैं Git का उपयोग करता हूं, लेकिन वे वास्तुकला के संदर्भ में बहुत समान हैं (दोनों वितरित संस्करण नियंत्रण प्रणाली हैं)। उनमें से वितरित प्रकृति उन्हें अच्छी तरह से काम करने के लिए महान बनाती है, "वितरित" टीमों। :)

http://hginit.com/


जबकि मर्क्यूरियल 'शुद्ध' सॉफ्टवेयर परियोजनाओं के लिए एक अच्छा स्रोत नियंत्रण प्रणाली है, इसके कई फायदे उन परियोजनाओं पर खो जाते हैं जो अनिवार्य रूप से विशुद्ध रूप से द्विआधारी फाइलों से निपटते हैं क्योंकि यह समझदारी से विलय करने में असमर्थ है। HgInit के पाठ का कोई मतलब नहीं होगा जब तक आप केवल सॉफ्टवेयर नहीं कर रहे हैं।
whatsisname

0

OpenPLM कुछ पहलुओं की पेशकश करने के लिए लगता है कि आप क्या देख रहे हैं हालांकि यह सक्रिय विकास ( http://www.openplm.org/trac/discussion/topic/93 ) में नहीं लगता है ।

शायद https://discuss.erpnext.com/t/erpnext-git-github-for-open-source-hardware-call-for-beta-user-s/18006 ("ERPNext: Git / Github) के लिए एक नज़र डालें ओपन सोर्स हार्डवेयर - बीटा यूज़र के लिए कॉल करें


0

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

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

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


0

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

इस क्षेत्र में, Altium है जिस तरह से प्रीमियम (मेंटर और ताल) उपकरण के आगे।

मैं Altium के लिए काम नहीं करता लेकिन यह उपकरण, वर्तमान मुद्दों के बावजूद, पूर्ण हार्डवेयर संस्करण को बहुत सरल बनाता है।


और शायद यही एक चीज़ है जो तिजोरी के लिए अच्छा है ...
मैट यंग

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