আমার একটি এসভিএন ওয়ার্কিং ডিরেক্টরি রয়েছে। আমি সেই ডিরেক্টরিতে কিছু পরিবর্তন করেছি এবং এটি এতে দেখায় svn status
। তবে সেখানে কি আমার সমস্ত পরিবর্তন মুছে ফেলার এবং কমান্ড লাইনটি ব্যবহার করে ট্রাঙ্ক থেকে সমস্ত কিছু পাওয়া যায়?
আমার একটি এসভিএন ওয়ার্কিং ডিরেক্টরি রয়েছে। আমি সেই ডিরেক্টরিতে কিছু পরিবর্তন করেছি এবং এটি এতে দেখায় svn status
। তবে সেখানে কি আমার সমস্ত পরিবর্তন মুছে ফেলার এবং কমান্ড লাইনটি ব্যবহার করে ট্রাঙ্ক থেকে সমস্ত কিছু পাওয়া যায়?
উত্তর:
svn revert -R .
svn up
এটি পুনরুক্তরূপে বর্তমান ডিরেক্টরি এবং এর অধীনে থাকা সমস্ত কিছু ফিরিয়ে আনবে এবং তারপরে সর্বশেষ সংস্করণে আপডেট করবে।
এই সমাধানটি সামনে আসতে আমি অন্য ব্যক্তির উত্তরগুলির সংমিশ্রণটি ব্যবহার করেছি:
svn revert -R .
svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf
svn update --force
svn revert -R .
svn cleanup . --remove-unversioned
svn cleanup . --remove-ignored
আপনার যদি কোনও পরিবর্তন না হয় তবে আপনি সর্বদা সত্যই পুরোপুরি এবং / অথবা আলস্য হতে পারেন এবং করেন ...
rm -rf *
svn update
কিন্তু, কোন সত্যিই, না না যে, যদি না আপনি হয় না সত্যিই কি নিশ্চিত যে Nuke-থেকে-স্পেস বিকল্প কি আপনি চান !! এতে সমস্ত বিল্ড ক্রাফ্ট, অস্থায়ী ফাইল এবং এসভিএন উপেক্ষা করে এমন জিনিসগুলিকেও নাক করে দেওয়ার সুবিধা রয়েছে।
রিভার্ট কমান্ডটি ব্যবহার করার জন্য আরও সঠিক সমাধান:
svn revert -R .
-আর বর্তমান কার্যকারী ডিরেক্টরিতে এবং নীচে সমস্তই পুনরাবৃত্তি করতে এবং ফিরিয়ে আনতে বিপর্যয় সৃষ্টি করে।
svn nuke-from-space
এখানে উত্তরগুলির কোনওটিই আমি চেয়েছিলাম তেমন ছিল না। আমি এখানে যা এলাম তা এখানে:
# Recursively revert any locally-changed files
svn revert -R .
# Delete any other files in the sandbox (including ignored files),
# being careful to handle files with spaces in the name
svn status --no-ignore | grep '^\?' | \
perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | \
tr '\n' '\0' | xargs -0 rm -rf
লিনাক্স পরীক্ষিত; সাইগউইনে কাজ করতে পারে, তবে একটি জিএনইউ-নির্দিষ্ট এক্সটেনশনের উপর নির্ভর করে (আমি বিশ্বাস করি) যা জার্গেসকে '\0'
হোয়াইটস্পেসের পরিবর্তে পৃথক করতে দেয় ।
উপরের কমান্ডটির সুবিধা হ'ল স্যান্ডবক্সটি পুনরায় সেট করতে কোনও নেটওয়ার্ক ক্রিয়াকলাপের প্রয়োজন হয় না। আপনি ঠিক আগে যা পেয়েছিলেন তা পেয়ে যান এবং আপনার সমস্ত পরিবর্তন হারাবেন । (এই কোডটি তাদের কাজ ধ্বংস করার জন্য কেউ আমাকে দোষারোপ করার আগে দাবি অস্বীকার) ;-)
আমি এই স্ক্রিপ্টটি একটি অবিচ্ছিন্ন ইন্টিগ্রেশন সিস্টেমে ব্যবহার করি যেখানে আমি নিশ্চিত করতে চাই যে কয়েকটি পরীক্ষা চালানোর পরে একটি পরিষ্কার বিল্ড সম্পাদিত হয়েছে।
সম্পাদনা : আমি নিশ্চিত নই এটি সাবভার্সনের সমস্ত সংস্করণের সাথে কাজ করে। svn status
কমান্ডটি সর্বদা ধারাবাহিকভাবে ফর্ম্যাট হয় কিনা তা পরিষ্কার নয় । আপনার নিজের ঝুঁকিতে ব্যবহার করুন, যেমন একটি কম্বল rm
কমান্ড ব্যবহার করে এমন কোনও আদেশের মতো ।
আপনি যদি উইন্ডোতে থাকেন তবে লুপের জন্য নিম্নলিখিতগুলি আপনার কর্মক্ষেত্রে করা সমস্ত আপত্তিজনক পরিবর্তনগুলি ফিরিয়ে দেবে:
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
আপনি যদি সমস্ত অননুমোদিত পরিবর্তন এবং সমস্ত রূপান্তরিত অবজেক্টগুলি সরাতে চান তবে এটির জন্য 2 টি লুপের প্রয়োজন হবে:
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
for /F "tokens=1,*" %%d in ('svn st') do (
svn rm --force "%%e"
)