2010-08-30 5 views
5

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

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

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

ग्राहकों SVN कमांड लाइन बाइनरी नहीं हो सकता है स्थापित:

जो लोग बताते हैं कि मैं SVN के लिए कमांड लाइन उपकरण का उपयोग करने के लिए

कमांड लाइन बाइनरी से जुड़े हुए संस्करण और संस्करण से जुड़ा हुआ है - जो अतुलनीयता का कारण बन सकता है।

+1

किसी भी कारण से आप कमांड लाइन का उपयोग कर सीधे एसवीएन कमांड चलाने के लिए प्रक्रियाओं को लॉन्च करने के बजाय TortoiseSVN को कॉल करना चाहते हैं? जैसे "एसवीएन यूपी" –

+0

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

उत्तर

0

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

यदि आपके आवेदन की आवश्यकता सरल है, तो आप कमांड लाइन निर्देश निष्पादित करने में सक्षम हो सकते हैं?

एक और विकल्प एसवीएन संस्करण पढ़ने के लिए अपना कोड लिखना और लिखना होगा, और उसके बाद अपने कोड में मतभेदों को संभालना होगा। यह एक दुःस्वप्न IMHO होगा।

2

आप svn सर्वर तक सीधे पहुंच के लिए sharpsvn एपीआई का उपयोग कर सकते हैं।

यह xcopy तैनाती योग्य है और अन्य svn या tortoisesvn binaries से अलग है।

0

TortoiseSVN स्थापना में TortoiseProc.exe नामक कमांड लाइन टूल है। TortoiseSVN की सहायता पुस्तक में "परिशिष्ट डी। ऑटोमेटिंग TortoiseSVN" विषय देखें (जो TortoiseSVN स्थापना में भी शामिल है)।

+0

हाँ, मैंने पहले ही इसमें देखा है - लेकिन प्रत्येक आमंत्रण परिणाम एक संवाद बॉक्स में बनाया जा रहा है जिसे उपयोगकर्ता को पुष्टि करनी है। मैं बल्कि यह स्वचालित हो जाएगा। – nlaq

1

मुझे ऐसे सेटअप में उपयोग किया जाता है जो TortoiseSVN का उपयोग करता है और कुछ स्क्रिप्ट जो एक अलग svn कमांडलाइन क्लाइंट पर भरोसा करते हैं।

आम तौर पर हमारे पास कोई समस्या नहीं है।

मुख्य संगतता चिंता यह है कि कामकाजी प्रति प्रारूप में परिवर्तन होता है। यह svn 1.5 और 1.6 के बीच हुआ था।

एक svn 1.5 क्लाइंट 1.6 चेकआउट के साथ काम नहीं कर सका।

देखें: http://subversion.apache.org/docs/release-notes/1.6.html

अतीत परियोजनाओं मैं भी TortoiseProc कमांडलाइन उपकरण का इस्तेमाल किया है पर - ध्यान दें कि यह http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html

में एक तरह से है कि उपयोगकर्ता बातचीत को हटा यदि कोई त्रुटि पाए जाते हैं को देखने/closeonend में कहा जा सकता है मुझे विश्वास नहीं है कि कछुआ बाइनरी के अंदर बेस एसवीएन क्लाइंट कोड तक पहुंचने का कोई तरीका है।

+0

ठीक है, धन्यवाद। ऐसा लगता है कि यहां एकमात्र वास्तविक विकल्प है जो एसवीएन बाइनरी के एक अलग इंस्टॉलेशन को बस बंडल/तैनात/लिंक करता है, और उम्मीद है कि यह कछुआ तोड़ नहीं देगा। साथ ही, दस्तावेज़ों पर यह कहता है: "याद रखें कि TortoiseSVN एक जीयूआई क्लाइंट है, और यह स्वचालन मार्गदर्शिका आपको दिखाती है कि कैसे TortoiseSVN संवाद उपयोगकर्ता इनपुट एकत्र करने के लिए प्रकट होते हैं। यदि आप एक स्क्रिप्ट लिखना चाहते हैं जिसके लिए कोई इनपुट की आवश्यकता नहीं है, तो आपको इसका उपयोग करना चाहिए इसके बजाय आधिकारिक सबवर्जन कमांड लाइन क्लाइंट। " क्लोजोनेंड के साथ भी, इसे अभी भी उपयोगकर्ता इनपुट की आवश्यकता है। – nlaq

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