2010-11-17 17 views
7

सहित विशिष्ट तिथि तक svn चेकआउट अपडेट करें, मैं एक विशिष्ट दिनांक में एक svn अद्यतन करना चाहता हूं, और मैं इसे svn update -r {2010-10-17} के साथ कर सकता हूं। दुर्भाग्यवश जब यह बाहरी से मुकाबला करता है तो यह -r {2010-10-17} विकल्प से गुज़रने के बिना बाहरी के भीतर अद्यतन करेगा। इसके परिणामस्वरूप हमें बेस कोड का सही अतीत संशोधन मिल रहा है, लेकिन कई बाहरी लोगों के नवीनतम (अवांछित) संस्करण हैं।बाहरी दिनांक

मैं एक विशिष्ट संशोधन या तिथि को कैसे अपडेट कर सकता हूं और यह रिकर्स बाहरी के माध्यम से सही ढंग से कर सकता हूं?

(नोट: मैं समझता हूँ कि गलती यहाँ निर्दिष्ट कोई स्पष्ट संशोधन के साथ बाहरी उपयोग करने के लिए हो सकता है।)

+1

क्या आपको यह देखा गया: http://stackoverflow.com/questions/683716/subversion-update-externals-to-a-date –

उत्तर

4

मुझे उम्मीद है कि कोई भी मेरे सामान्य ज्ञान तर्क (कुछ क्षेत्रों में निर्देशिका-प्रकार बाहरी तक सीमित) को जल्द ही या बाद में बैश और सेमीडी-स्क्रिप्ट में लागू करेगा और हमें "निश्चित उत्तर" इस दोहराए गए प्रश्न के लिए मिलेगा

आपका आधार कार्य है:

  • svn up अतीत में की जरूरत बात करने के लिए अपने सुपर रेपो (तारीख को अद्यतन करने/और समय/है, Btw, नहीं एक अच्छा विकल्प है, लेकिन बिना - apllicable)
  • अपनी परियोजना में सभी बाहरीों के पथों की सूची प्राप्त करें (क्योंकि बाहर की परिभाषाएं पेड़ में कहीं भी मौजूद हो सकती हैं), डब्ल्यूसी-रूट svn propget svn:externals -R (-आरआर cd के बिना पूरे पेड़ को देखने के लिए)
  • आउटपुट आउटपुट में प्रत्येक स्ट्रिंग के लिए (इस . - https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib lib जैसे प्रारूप के साथ): सीडी से स्ट्रिंग/पहला क्षेत्र है, जो है, बारी में के सापेक्ष के अंतिम क्षेत्र,, जड़ के सापेक्ष पथ/और एक ही बिंदु तक svn है, क्योंकि यह superrepo के लिए किया गया था: svn update -r {2010-10-17}

के रूप में आप परिणाम ' मिश्रित कार्य प्रतिलिपि होगी, लेकिन superrepo और externals "अतीत में कुछ संशोधन के लिए"

नोट:

अधिक जटिल मामले पर बाहरी (नेस्टेड डब्ल्यूसी वास्तव में) के साथ निर्देशिका के लिए स्थानीय पथ बनाने के लिए अतिरिक्त नमूना।

>svn propget svn:externals -R 
tags\1.0.1 - -r 2 https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/[email protected] lib 

trunk - https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib lib 

के लिए मेरी WC में बाहरी को फाइनल रास्तों किया जाएगा

tags\1.0.1\lib 
trunk\lib 
-3

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

+1

क्या आप समझा सकते हैं कि "बाहरी कॉन्फ़िगरेशन" क्या है? क्या आपका मतलब svn: बाहरी गुण है? यदि आपका मतलब है कि हमारे बाहरी गुणों को सभी स्पष्ट संशोधन संख्याओं का उपयोग करना चाहिए, तो हाँ मैं आपके साथ सहमत हो सकता हूं, लेकिन मैं वापस नहीं जा सकता और कई कामों को संपादित नहीं कर सकता जिसके लिए यह मामला नहीं था। शायद मैं आपके सुझाव को गलत समझता हूं। – pauldoo

+0

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

+0

भ्रम लिखना न करें –

0

मैं मामले किसी में इस उत्तर जोड़ रहा एक पहले से ही अद्यतन करने के लिए कोशिश कर रहा है (WC-जड़ के सापेक्ष) स्थानीय फ़ाइल तिथियों को रेपो तिथियों पर सिंक करने के लिए चेक-आउट सबवर्जन रिपोजिटरी, जिसे मैं करना चाहता था, मैं एफएस टाइमस्टैम्प तुलना कर सकता था।

मैं चाल करने के लिए इस oneliner बना (लेकिन यह प्रयोग करने से पहले नीचे लाइन पढ़ें):

svn info --show-item last-changed-date -R | xargs -I{} -P1000 -n1 sh -c 'x="{}"; set -x; exec touch -d "${x%% *}" "${x#* }"'

नोट:-P1000 निर्दिष्ट करता है कि xargs एक साथ प्रतियां चलाना चाहिए वास्तविक अद्यतन करने के लिए sh और touch का। सिस्टम लोड के आधार पर इसे कम करना बुद्धिमान हो सकता है। एक छोटी आई 3-आधारित इंटेल एनयूसी 1000 प्रक्रियाओं पर वास्तव में 80-95% सीपीयू का उपयोग करके सही साबित हुआ (100% आम तौर पर इसका मतलब है कि सीपीयू अधिभारित है)। यदि संदेह है, तो htop खोलें और विभिन्न मानों के साथ परीक्षण करें - लेकिन केवल कुछ सेकंड के लिए इसे चलाएं, क्योंकि इसे हर बार शुरुआत से चलाने की आवश्यकता होगी।

यूएसबी एचडीडी पर एक छोटे ~ 3 जीबी एसवीएन रेपो के लिए, इसमें चलाने में लगभग 5 मिनट लग गए।

set +x वर्बोज निष्पादन चालू करता है, जो मैं touch निष्पादित करने से पहले करता हूं ताकि आप इसे देख सकें। यदि आप गैर-वर्बोज़ निष्पादन चाहते हैं, तो उस आदेश को हटा दें।