2009-07-25 11 views
7

का चयन मेरी संस्करण नियंत्रण की जरूरत के लिए Apache Subversion (और AnkhSVN/TortoiseSVN मेरी प्राथमिक सबवर्सन ग्राहकों के लिए) चुनने के बाद। अब मैं एसवीएन सर्वर को एसवीएन रिपॉजिटरीज़ तक दूरस्थ पहुंच प्रदान करने का प्रयास कर रहा हूं। मैं उनमें से एक जोड़ी पर ध्यान दिया है:एक सबवर्सन सर्वर

मैं एक वी एम में प्रत्येक स्थापित किया है उन्हें बाहर की कोशिश करने का नहीं बल्कि करने के लिए पर्याप्त पर्याप्त उनमें से ज्यादातर अंतर करने के लिए मिल गया है कोई विशिष्ट चुनें। अब मेरे पास कुछ चीजें हैं जिन्हें मुझे तय करने की ज़रूरत है।

  1. प्रोटोकॉल
  2. विक्रेता
  3. एसएसएल


1. मुझे लगता है कि HTTP पढ़ा है बहुत धीमी SVN प्रोटोकॉल से है। जबकि मेरी परियोजनाएं आम तौर पर बहुत बड़ी नहीं होती हैं (वास्तव में केवल प्रारंभिक आयात समय लेने वाला हिस्सा होता है), मैं एसवीएन के प्रदर्शन लाभ प्राप्त करना चाहता हूं, साथ ही साथ मेरे HTTP लॉग एसवीएन प्रविष्टियों (जो मैं अभी तक एक अलग LOG फ़ाइल में अलग करने में असमर्थ रहा है)

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


2. एक प्रोटोकॉल चुनने के बाद (यह मानते हुए मैं है चुनने के लिए); मुझे यह तय करने में मदद चाहिए कि किस विक्रेता का उपयोग करना है। मैंने मूल रूप से टिग्रीस डिस्ट्रो से अपाचे मॉड्यूल का उपयोग किया। मैंने तब से हटा दिया है (ठीक है, बस इसे अक्षम कर दिया है), और वर्तमान में VisualSVN का उपयोग कर रहा हूं (जो HTTP है और इस प्रकार धीमा है)। मैंने लोगों को तीव्र और रेशम का समर्थन किया है, लेकिन वे छोटे, इंडी डिस्ट्रोज़ लगते हैं।
दूसरी ओर कोलाबनेट मुझे आवश्यकता से अधिक विस्तृत लगता है। असल में, जब तक कि मैं उनमें से किसी एक के लिए विश्वास नहीं कर सकता, मैं मुख्य रूप से आधिकारिक टिग्रीस और विजुअल एसवीएन के बीच चयन करने की कोशिश कर रहा हूं।


3. मैं भी ज्यादा सफलता के बिना SSL के साथ चारों ओर खिलवाड़ (मैं एक असली सीए वहन नहीं कर सकते, तो मैं VisualSVN में स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग कर रहा) की कोशिश की है। मुझे एसवीएन + एसएसएच/एचटीटीपीएस का उपयोग करने में खुशी होगी, लेकिन अगर मैं इसे अपने सिस्टम पर उपयोग कर रहा हूं, तो यह आवश्यक नहीं है, और यदि मैं इसे बाहरी रूप से उपयोग करता हूं, तो मेरा स्व-हस्ताक्षरित प्रमाणपत्र मदद नहीं करेगा।


मुझे लगता है कि मैं स्थानीय भंडार का भी उपयोग कर सकता हूं; मुझे लगता है कि यह सबसे तेज़ होगा। हालांकि मैं विस्तार के मामले में एक और औपचारिक समाधान पसंद करूंगा। (मैं सिर्फ TortiseSVN ग्राहक का उपयोग कर स्थानीय स्तर पर सर्वर काम करने के लिए माना जाता है।)


तो सारांश में, मैं जो सर्वर पर कुछ सलाह की जरूरत है (रों?) का उपयोग करें।क्या बढ़िया होगा यदि मैं वेब उपयोग के लिए HTTP इंटरफ़ेस प्रदान करने के लिए VisualSVN प्राप्त कर सकता हूं, लेकिन ग्राहकों में उपयोग के लिए एसवीएन प्रोटोकॉल पर भी काम करता हूं, अधिमानतः प्रत्येक पर एसएसएल के विकल्प के साथ। क्या यह संभव है? क्या यह बहुत अधिक काम होगा (मैं वास्तव में इस मेटा-काम के बजाए अपनी परियोजनाओं पर काम करना चाहता हूं)।



बहुत बहुत धन्यवाद।

संपादित

मैंने सोचा था कि मैं अपने हालात पर एक छोटे से जानकारी चीजों को स्पष्ट करने देना चाहिए।

  • (वर्तमान में) एकल प्रणाली, (पुराने पी 4, विंडोज, 1GB SDRAM)
  • (वर्तमान में) एकल डेवलपर (मुझे)
  • (वर्तमान में) अपेक्षाकृत छोटे परियोजनाओं (< 2MB)
  • अनगिनत परियोजनाओं (> 100 व्यक्तिगत ऐप्स, गेम, पुस्तकालय, वेब साइट्स इत्यादि)
  • बाहरी आवश्यक (विशेष रूप से मेरी अपनी लाइब्रेरी के साथ-साथ तृतीय पक्ष शीर्षलेख, बूस्ट, आदि)
  • ? हम्म, और क्या ...
+3

(यह 10 डेवलपर्स की एक टीम के साथ मेरा अनुभव है) मैं अभी भी noobish हूँ, लेकिन मेरा अनुमान है कि यह एक सवाल है कि ठीक से serverfault पर कहा जाएगा है: http://serverfault.com –

+0

मेरे पास केवल HTTP पहुंच का उपयोग करके कई 100 एमबी परियोजनाएं हैं I प्रदर्शन बिल्कुल कोई मुद्दा नहीं है। जब तक प्रदर्शन आपके लिए एक वास्तविक मुद्दा नहीं है, तब तक मैं svn: // से चिंता या परेशान नहीं होता। – nos

उत्तर

5

संपादित: यहां अन्य उत्तर पढ़ने के बाद, वहाँ एक बात मैंने सोचा कि मैं उल्लेख करना चाहिए है। यदि आप एक सर्वर आज़माते हैं, तो जो रिपोजिटरी आप इसे सेवा के लिए पूछते हैं वह उन रिपॉजिटरीज़ से अलग नहीं होगी जिन्हें आप सेवा के लिए किसी अन्य प्रकार के सर्वर से पूछते हैं।

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


मैं VisualSVN Server स्थापित जब घोषणा की गई, और इसके साथ काफी खुश था, थोड़ी देर के लिए।

हालांकि, गति समस्याओं ने मुझे मुख्य svnserve सर्वर पर स्विच किया जो सबवर्सन कमांड लाइन पैकेज के हिस्से के रूप में भेजा जाता है।

मुख्य समस्या यह है कि मैं .NET के साथ काम कर रहा हूं, और मैंने अपनी परियोजनाओं में कई बाहरी सबवर्जन संदर्भों को जोड़ना चुना है।

सबसे पहले, और सबसे महत्वपूर्ण, मेरी कक्षा लाइब्रेरी में जो भी प्रोजेक्ट मैं करता हूं, वह मेरी कुंजी द्वारा हस्ताक्षरित है। दूसरा, बाहरी तृतीय पक्ष पुस्तकालय, जैसे SQLite और NUnit को बाहरी संदर्भ के रूप में जोड़ा गया था।

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

तो, मेरी कक्षा लाइब्रेरी समाधान में कुछ 15-20 परियोजनाएं हैं, प्रत्येक में हस्ताक्षर कुंजी के कम से कम एक बाहरी संदर्भ है, मेरे सभी डेटा प्रोजेक्ट्स में SQLite लाइब्रेरी के बाहरी संदर्भ हैं, और इकाई परीक्षण पुस्तकालय 4-5 है बाहरी संदर्भ

शुद्ध परिणाम यह था कि समाधान स्तर पर एक ही अद्यतन, भले ही मेरे पास पहले से ही सभी नवीनतम फाइलें, निर्देशिकाएं, सब कुछ हो, पूरा करने में लगभग 2 मिनट लग गए। प्रत्येक एकल बाहरी संदर्भ को पूरा करने के लिए कहीं 10 और 20 सेकंड के बीच लिया गया, बस यह सत्यापित करने के लिए कि मेरे पास आवश्यक संशोधन था।

जब मैंने svnserve पर स्विच किया, तो 2 मिनट कम होकर लगभग 3 सेकंड तक कम हो गए। यह स्थानीय ट्रैफिक दिमाग है, इसलिए निश्चित रूप से यह इंटरनेट पर अलग होगा। समस्या यह है कि, 2 मिनट भी स्थानीय यातायात थे।

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

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

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

+0

मुझे रिपॉजिटरीज़ मानक होने और इस प्रकार पोर्टेबल के बारे में जानकारी पसंद है। यह मुझे बताता है कि मैं जो कुछ भी कर रहा हूं उसके साथ रह सकता हूं जो वर्तमान में काम कर रहा है, और यदि आवश्यक हो तो बदलें। – Synetech

+1

सबवर्सन 1.7 में HTTP प्रोटोकॉल में सुधार हुआ था: http://subversion.apache.org/docs/release-notes/1.7.html#httpv2 –

0

मैं घर पर और काम पर कोलाबनेट का उपयोग कर रहा हूं। यह ठीक है - प्रदर्शन के साथ कोई शिकायत नहीं।

2

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

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

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

यहाँ मैं क्या प्रोटोकॉल के बारे में फैसला करने के लिए विचार किया जाएगा है (।। यूआरएल एक चेक आउट पेड़ यह आपको नए सिरे से सब कुछ बाहर की जांच किए बिना प्रोटोकॉल स्विच करने के लिए उपयोग कर सकते हैं की स्विच करने के लिए भी एक SVN आदेश नहीं है): यदि आपके पास एक कामकाजी एडी या एलडीएपी आधारभूत संरचना है जिसे आप एसवीएन में लॉगिन के लिए लाभ उठाना चाहते हैं, http/https: प्रोटोकॉल विकल्पों में से किसी एक को आजमाएं। यदि आपके पास यह नहीं है, और आपको इसकी आवश्यकता नहीं होगी, और आप एसवीएन के अपने माध्यम से लॉगिन कर रहे हैं, तो svn: प्रोटोकॉल द्वारा प्रदान की गई गति का उपयोग क्यों न करें?

मैंने कभी एक एसवीएन रेपो नहीं देखा है कि लोग WebDAV तक पहुंच का उपयोग करते हैं। आईएमई वे प्रति वेब तक पहुंचने पर हमेशा इतिहास चाहते हैं (WebDAV इसे प्रदान नहीं करता है, AFAIK), इसलिए उन्होंने एसवीएन के लिए वेब फ्रंटों में से एक का उपयोग किया।मैंने कभी जांच नहीं की है, लेकिन मुझे लगता है कि ViewVC जैसी चीजें और इस तरह की परवाह नहीं है कि वे रेपो तक पहुंचने के लिए किस प्रोटोकॉल का उपयोग करते हैं।

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

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

1

हम XEN वर्चुअल मशीन के अंदर से CentOS 5.3 के तहत चल रहे अपाचे द्वारा प्रदान की गई HTTP का उपयोग करके हमारे एसवीएन रिपॉजिटरीज की आपूर्ति करते हैं।

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

संकलन कोड में टाइम्सकेल्स की तुलना में, सबवर्सन को कंपनी के अंदर एक बाधा के रूप में नहीं देखा जाता है।