কীভাবে আমি আমার এসভিএন ওয়ার্কিং ডিরেক্টরিতে আমার সমস্ত পরিবর্তনগুলি সরিয়ে ফেলতে পারি?


195

আমার একটি এসভিএন ওয়ার্কিং ডিরেক্টরি রয়েছে। আমি সেই ডিরেক্টরিতে কিছু পরিবর্তন করেছি এবং এটি এতে দেখায় svn status। তবে সেখানে কি আমার সমস্ত পরিবর্তন মুছে ফেলার এবং কমান্ড লাইনটি ব্যবহার করে ট্রাঙ্ক থেকে সমস্ত কিছু পাওয়া যায়?

উত্তর:


274
svn revert -R .
svn up

এটি পুনরুক্তরূপে বর্তমান ডিরেক্টরি এবং এর অধীনে থাকা সমস্ত কিছু ফিরিয়ে আনবে এবং তারপরে সর্বশেষ সংস্করণে আপডেট করবে।


2
দ্রষ্টব্য যে এটি বহিরাগতদের সাথে কাজ করে না (তারা উপেক্ষা করা হয়, আপাতদৃষ্টিতে)।
cic

86

এই সমাধানটি সামনে আসতে আমি অন্য ব্যক্তির উত্তরগুলির সংমিশ্রণটি ব্যবহার করেছি:

সাধারণ স্থানীয় এসভিএন পরিবর্তনগুলি ফিরিয়ে দিন

svn revert -R .

অন্য যে কোনও পরিবর্তন সরিয়ে ফেলা এবং ফাঁকা স্থান ইত্যাদি ফাইল / ফোল্ডার অপসারণ সমর্থন করে removing

svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf

এসভিএন থেকে সর্বশেষতম ফাইলগুলি পেতে ভুলবেন না

svn update --force

অনেক ধন্যবাদ শাইজ, এটি সবচেয়ে মার্জিত সেড, ... পাইপ আমি এর জন্য এ পর্যন্ত দেখেছি :) বিশেষত উপেক্ষা করার বিষয়েও যত্ন নেওয়া।
বকুনি

একটি যাদুমন্ত্র মত কাজ করে. ধন্যবাদ!
নিলো কেইনেনেন


14

আপনার যদি কোনও পরিবর্তন না হয় তবে আপনি সর্বদা সত্যই পুরোপুরি এবং / অথবা আলস্য হতে পারেন এবং করেন ...

rm -rf *
svn update

কিন্তু, কোন সত্যিই, না না যে, যদি না আপনি হয় না সত্যিই কি নিশ্চিত যে Nuke-থেকে-স্পেস বিকল্প কি আপনি চান !! এতে সমস্ত বিল্ড ক্রাফ্ট, অস্থায়ী ফাইল এবং এসভিএন উপেক্ষা করে এমন জিনিসগুলিকেও নাক করে দেওয়ার সুবিধা রয়েছে।

রিভার্ট কমান্ডটি ব্যবহার করার জন্য আরও সঠিক সমাধান:

svn revert -R .

-আর বর্তমান কার্যকারী ডিরেক্টরিতে এবং নীচে সমস্তই পুনরাবৃত্তি করতে এবং ফিরিয়ে আনতে বিপর্যয় সৃষ্টি করে।


আমি প্রায়শই এই কৌশলটি ব্যবহার করি, তবে এসভিএন 1.7 সহ, যেখানে মেটাডেটা কেবল ডব্লিউসি রুটে সংরক্ষণ করা হয়, এটি আর পরিষ্কার সমাধান নয়। উদাহরণস্বরূপ, মোছা ফাইলগুলি মুছে ফেলা হয়।
বার্ট ভ্যান Heukelom

8
svn nuke-from-space
জেসন সোয়েট

9

এখানে উত্তরগুলির কোনওটিই আমি চেয়েছিলাম তেমন ছিল না। আমি এখানে যা এলাম তা এখানে:

# 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কমান্ড ব্যবহার করে এমন কোনও আদেশের মতো ।


7

এসএনএন রিভার্ট আপনার স্থানীয় পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে আনবে


5

সমস্ত স্থানীয় পরিবর্তনগুলি ফিরিয়ে দিতে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

svn st -q | awk '{print $2;}' | xargs svn revert

আমি এসএনএন রিভার্টের জন্য ত্রুটি বার্তা "পর্যাপ্ত যুক্তি নেই" পেয়েছি
বিজ্ঞপ্তি

4
svn status | grep '^M' | sed -e 's/^.//' | xargs rm

svn update

যে কোনও ফাইল পরিবর্তিত হয়েছে তা সরিয়ে ফেলবে। ফাইল এবং ডিরেক্টরিগুলি যুক্ত করা হতে পারে এমন সময়টিকে রিভার্ট করার সাথে আমার সমস্যা মনে আছে।



0

আপনি যদি উইন্ডোতে থাকেন তবে লুপের জন্য নিম্নলিখিতগুলি আপনার কর্মক্ষেত্রে করা সমস্ত আপত্তিজনক পরিবর্তনগুলি ফিরিয়ে দেবে:

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"
)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.