2011-05-13 12 views
14

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

तो विचार डाटाबेस के स्क्रिप्ट का 'प्रतिलिपि' SVN में प्रत्येक निर्माण के लिए (यही कारण है कि MSBuild प्रयोग किया जाता है है)

समस्या यह है कि मैं एचजी के addremove के अनुरूप नहीं जानता है - जो स्वचालित रूप से दो फ़ोल्डरों को सिंक्रनाइज़ करता है।

क्या किसी को पता है कि addremove अनुकरण किया जा सकता है?

+1

यहाँ एक पोस्ट है कि दो खोल उपनाम शामिल है (जिसे add_all कहा जाता है और दूसरा rm_all कहा जाता है)। यह मूल रूप से आपके लिए 'add_all && rm_all' चलाने के लिए संभव बनाता है जो कि 'hg addremove' करता है, लेकिन उपversण के साथ। http://www.plexusweb.com/staff/travis/blog/post/267/Batch-addremove-files-to- सबवर्सन –

+0

मुझे विश्वास नहीं है कि svn के साथ यह संभव नहीं है, लेकिन मैं नहीं देख सकता । यदि कोई बेहतर विकल्प नहीं है, तो आप स्थानीय एचजी रेपो को बनाए रखने के लिए hgsubversion का उपयोग करने पर विचार करना चाहेंगे, उस पर 'hg addremove' का उपयोग करें और फिर परिवर्तनों को svn पर वापस दबाएं। –

उत्तर

1

बात की इस तरह के लिए, मैं सिर्फ तेज उपयोग करें, और साथ SVN के अंदर और बाहर की जाँच करें: https://www.mercurial-scm.org/wiki/HgSubversion ... नहीं हो सकता है आप क्या चाहते हैं।

0

मैंने हमेशा इस उद्देश्य के लिए svn_load_dirs.pl स्क्रिप्ट का उपयोग किया है जो svn के साथ आता है।

svn status | grep "^\?" | gawk '{print $2}' | xargs -r svn add 
svn status | grep "^\!" | gawk '{print $2}' | xargs -r svn remove 

संपादित करें:

svn status | gawk '/^\?.*/ {print $2}' | xargs -r svn add 
svn status | gawk '/^\!.*/ {print $2}' | xargs -r svn remove 
9

मैं व्यक्तिगत रूप से ऐसा करने के लिए एक छोटे से बैश लिपि (लिनक्स पर किया जा रहा है) -Karl का जवाब)

वर्क्स के लिए:

    'अंतरिक्ष' के साथ
  • रास्तों वर्ण के साथ
  • पथ '@' '\' वर्ण के साथ
  • रास्तों वर्ण (MSYS खोल में)

svn status | perl -ne 'print "$1\0" if /^\?\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn add '[email protected]' 
svn status | perl -ne 'print "$1\0" if /^\!\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn remove '[email protected]' 
+1

क्यों grep को छोड़ें और बस इसके साथ जाएं: 'svn status | गॉक '/^\?.*/ {प्रिंट $ 2}' | xargs -r svn add' – cesar

+2

@ बेनामी अच्छा सवाल, शायद क्योंकि मैंने पहले से ही कुछ करने की कोशिश करने से पहले वास्तविक आउटपुट देखने के लिए grep के माध्यम से पाइप किया था। और निश्चित रूप से वास्तव में गॉक मैन पेज नहीं पढ़ रहे हैं और इसलिए उस वाक्यविन्यास के बारे में नहीं जानते हैं। धन्यवाद। –

+0

रिक्त स्थान वाले फ़ाइल नामों के बारे में क्या? मैं रिकार्ड सेपरेटर को बदलने के लिए पर्याप्त गॉक वाक्यविन्यास नहीं जानता \ 0 ... – moi

0

(@Eric में सुधार: cesar के लिए धन्यवाद, यहाँ एक सरल संस्करण है

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