मेरे पास एसवीएन के तहत एक पायथन परियोजना है, और मैं इसे चलाते समय संस्करण संख्या प्रदर्शित करना चाहता हूं। ऐसा करने का कोई तरीका है (जैसे कि स्वचालित रूप से प्रतिबद्धता पर एक छोटी स्क्रिप्ट चलाना जो संस्करण फ़ाइल को अपडेट कर सकता है, या पायथन में एसवीएन रिपोजिटरी से पूछताछ कर सकता है?)स्वचालित रूप से एक प्रोग्राम में एसवीएन संशोधन संख्या प्राप्त करना
उत्तर
मुझे पाइथन विनिर्देशों के बारे में निश्चित नहीं है, लेकिन यदि आपकी फ़ाइल में स्ट्रिंग $ संशोधन $ डाल दें और आपके पास अपने एसवीएन कॉन्फ़िगरेशन में सक्षम-ऑटो-प्रोप = सत्य है, तो इसे $ संशोधन: 144 $। फिर आप इसे अपनी लिपि में पार्स कर सकते हैं।
वहाँ a number of property keywords you can use in this way हैं।
इसमें कोई ओवरहेड नहीं होगा, उदा। एसवीएन रेपो से पूछताछ, क्योंकि स्ट्रिंग को आपकी फाइल में प्रतिबद्ध या अद्यतन पर हार्ड कोड किया गया है।
मुझे यकीन है कि तुम कैसे पायथन में इस पार्स चाहते हैं नहीं कर रहा हूँ, लेकिन PHP में मुझे क्या करना चाहते हैं:
$revString = '$Revision: 144$';
if(preg_match('/: ([0-9]+)\$/', $revString, $matches) {
echo 'Revision is ' . $matches[1];
}
आपके भंडार में hooks/pre-commit
फ़ाइल एक स्क्रिप्ट या प्रोग्राम है जो एक सफल प्रतिबद्धता से पहले निष्पादित किया जाना चाहिए। बस इसे एक स्क्रिप्ट बनाएं जो आपकी फ़ाइल को उचित संस्करण संख्या के साथ अद्यतन करता है क्योंकि यह किया जा रहा है (संशोधित संख्या आपकी स्क्रिप्ट को चलाने के बाद पास की जाती है)। प्री-प्रतिबद्ध हुक लिखने के उदाहरण के साथ एक ट्यूटोरियल यहां दिया गया है: http://wordaligned.org/articles/a-subversion-pre-commit-hook
आउच में "2874"
प्रिंट करता है। पूर्व-प्रतिबद्ध हुक संशोधित फ़ाइलों को आम तौर पर एक बुरा विचार देना है। रेपो में संस्करण कामकाजी प्रतिलिपि में संस्करण से अलग होगा, और इससे कुछ भ्रम पैदा हो सकता है। कमिटर को फ़ाइल के पहले संस्करण में वापस जाना होगा, और फिर नया प्राप्त करें, संभवतः किसी प्रकार का संघर्ष हो सकता है, क्योंकि एसवीएन ने मूल संस्करण को वर्किंग कॉपी के टेक्स्ट-बेस में संग्रहीत किया है। –
sunny256
मैं मानता हूं कि यह खतरनाक है और आमतौर पर वांछित व्यवहार नहीं है, लेकिन यदि आप स्वयं को उचित रूप से सीमित करते हैं, तो मुझे समस्या दिखाई नहीं दे रही है। उदाहरण के लिए, यदि आपके पास "svn_version.txt" फ़ाइल है जिसमें वर्तमान संशोधन संख्या के अलावा कुछ भी नहीं है, तो यह पूरी तरह से सुरक्षित होगा; आपकी स्थानीय प्रति में हमेशा वह संस्करण होगा जिसे आपने चेक आउट किया है और रिपोजिटरी में हमेशा नवीनतम होगा (अक्सर आपकी कार्यशील प्रति के समान)। –
pysvn देखें। यह सबवर्सन रनटाइम कार्यक्षमता के लिए पायथन में एक्सटेंशन का खुलासा करता है।
+1 pysvn के लिए +1, लेकिन यह "0" –
Django में कोड का एक स्निपेट है जो आपको ऐसा करने की अनुमति देता है, मैं इसे देखने की अनुशंसा करता हूं। http://code.djangoproject.com/browser/django/trunk/django/utils/version.py
से जुड़ने से बचने के लिए सबसे अच्छा है यह फ़ंक्शन केवल तभी काम करता है जब आप उपवर्तन चेकआउट के भीतर से चल रहे हों। यदि ओपी चाहता है, तो समस्या हल हो गई। हालांकि, मुझे संदेह है कि वह स्क्रिप्ट को स्वयं या कॉन्फ़िगरेशन फ़ाइल या उसके उपवर्तन संशोधन में शामिल करना चाह सकता है, भले ही स्क्रिप्ट अब विचलन के अधीन न हो, इस मामले में कि लिंक उपयोगी नहीं होगा। –
हाँ, यह बहुत अच्छा फॉलबैक विकल्प है, लेकिन संस्करण नियंत्रण के तहत संस्करण संख्या भी बेहतर होगी। धन्यवाद! +1 – Smashery
मैं अपनी परियोजना के निर्माण के दौरान बस एक छोटी सी स्क्रिप्ट चलाकर ऐसा करता हूं। स्क्रिप्ट सिर्फ नंगे संशोधन डेटा प्राप्त करने के लिए sed के साथ संयोजन में svn जानकारी को कॉल करता है और उस संख्या को revision.txt फ़ाइल में इंजेक्ट करता है।
हडसन बिल्ड सर्वर इसे और भी आसान बनाता है क्योंकि यह आपकी बिल्ड स्क्रिप्ट को आमंत्रित करने से पहले एसवीएन संशोधन संख्या को पर्यावरण चर के रूप में सेट करता है।
हम यह भी करते हैं, अच्छी तरह से काम करता है – orip
मैं जब यह चलाया जाता है अनुभाग थोड़ा अस्पष्ट लगता है - जब यह कहाँ से चलाया जाता है? एक एसवीएन चेकआउट से या जारी कोड से? सभी समाधान किसी भी तरह से पाइथन स्रोत में या कहीं अलग संस्करण फ़ाइल में भंडार में एसवीएन संस्करण इंजेक्शन पर काम करते हैं।
संस्करण फ़ाइल ताजा checkouts पर बदल गया है, तो साफ checkouts वितरण से पहले किया जाना करने की जरूरत है। तो मेरा सवाल है कि कार्यक्रम कहां चल रहा है।
इसी तरह, लेकिन PHP उत्तर से थोड़ा अधिक पायथनिक; अपने मॉड्यूल के __init__.py
में रखते:
__version__ = filter(str.isdigit, "$Revision: 13 $")
और सुनिश्चित करें कि आप संशोधन संपत्ति जोड़ें:
svn propset svn:keywords Revision __init__.py
या '' .join (c में $ c "$ LastChangedRevision: 1546 $" अगर c.isdigit()) यदि आपको फ़िल्टर पसंद नहीं है। –
या आप इस तरह कर सकते हैं:
import re,subprocess
svn_info = subprocess.check_output("svn info")
print (re.search(ur"Revision:\s\d+", svn_info)).group()
यह मेरी परियोजना में "Revision: 2874"
प्रिंट
या इस तरह:
print (subprocess.check_output("svnversion")).split(":")[0]
यह मेरी परियोजना
केवल एक कार्यशील प्रति के साथ काम करता है। – bahrep
न केवल काम करने वाली प्रति के साथ। आप पहले "svn info" से svn दूरस्थ URL पुनर्प्राप्त कर सकते हैं, जैसे "svn info" निष्पादित करें, फिर आउटपुट से "URL" param value लें और उसी कोड को निष्पादित करें, लेकिन "svn info value_of_URL_param" का उपयोग करके, अद्यतन कोड है: आयात कर रहे हैं, उपप्रक्रिया svn_info = subprocess.check_output ("SVN जानकारी https: //svn.you_remote_repo_url") प्रिंट (पुनः। –
- 1. प्रोग्रामिंग रूप से एसवीएन संशोधन संख्या कैसे प्राप्त करें?
- 2. एएसपी.नेट डिस्प्ले एसवीएन संशोधन संख्या
- 3. एसवीएन संशोधन संख्या और टाइमस्टैम्प
- 4. एसवीएन से एचजी: अब आउटपुट एसवीएन संशोधन संख्या एचजी चेंजसेट
- 5. एसवीएन - एक संशोधन
- 6. स्वचालित रूप से संस्करण संख्या
- 7. Git चेकआउट स्वचालित रूप से स्थानीय संशोधन
- 8. माइक्रोसॉफ्ट ऑफिस में एसवीएन संशोधन
- 9. एसवीएन संशोधन
- 10. एसवीएन संशोधन
- 11. गिट एसवीएन अधिक संशोधन प्राप्त करें
- 12. एसवीएन mergeinfo तारांकित संशोधन
- 13. एसवीएन - एक प्रमुख संशोधन कैसे मुख्य संशोधन करने के लिए?
- 14. मैं अपने स्रोत कोड में नया एसवीएन संशोधन संख्या कैसे जमा कर सकता हूं? (TortoiseSVN)
- 15. कुछ दिनांक या दिनांक सीमा में एसवीएन संशोधन संख्या कैसे प्राप्त करें
- 16. .NET: असेंबली वर्जन में बड़ी संशोधन संख्या
- 17. यदि DNS सर्वर 'स्वचालित रूप से प्राप्त'
- 18. सबवर्सन विषमता - एसवीएन जानकारी संशोधन परियोजना फ़ोल्डर पर अंतिम बार संशोधित संशोधन से अधिक संशोधन
- 19. स्वचालित रूप से प्रोग्राम विंडो के स्क्रीनशॉट ले रहे हैं
- 20. SharpSVN से नवीनतम संशोधन संख्या कैसे प्राप्त करें?
- 21. Google में perl प्रोग्राम से परिणाम प्राप्त करने की संख्या
- 22. लाटेक्स पर्यावरण में एक छोटा संशोधन करना
- 23. एसवीएन: क्या दिए गए पथ के लिए संशोधन संख्याओं की सूची प्राप्त करना संभव है?
- 24. क्या जीडीबी स्वचालित रूप से एक SIGSEGV
- 25. गिट संशोधन संख्या
- 26. स्वचालित रूप से एक अंतरफलक
- 27. प्रोग्राम एक MFC अनुप्रयोग w में FILEVERSION अद्यतन करने/SVN संशोधन संख्या
- 28. एंड्रॉयड: कैसे एक निजी संख्या प्रोग्राम के रूप में
- 29. एकाधिक परियोजनाओं में सबवर्जन संशोधन संख्या
- 30. स्वचालित रूप से एक टीसीपी होस्ट
यह सही जवाब है! साथ ही, प्रत्येक फ़ाइल पर संपत्ति 'कीवर्ड = संशोधन' सेट करना याद रखें जिसे आप करना चाहते हैं। –
ड्रू - मुझे लगता है कि अगर सक्षम-ऑटो-प्रोप = सत्य सेट है, तो डिफ़ॉल्ट कीवर्ड सभी सेट हैं? –
+1 यह कमाल है! मेरे मामले में, हालांकि, क्या एसवीएन संशोधन संख्या को संपादित करने का कोई तरीका है यदि यह एक अलग फ़ाइल है जो इस संशोधन में बदल दी गई है? उदाहरण के लिए, यदि मेरे पास version.py में संशोधन संख्या कीवर्ड है, लेकिन मैं संशोधन एनएनएन में version.py नहीं बदलता, तो यह इसे अपडेट नहीं करेगा, है ना? यदि नहीं, तो इस विधि का उपयोग इस तरह से करने का कोई तरीका है? – Smashery