ওয়ার্কিং কপিটি রিসেট করার জন্য কি সাবভার্সন কমান্ড আছে?


110

এখানে কি একটি একক সাবভার্সন কমান্ড রয়েছে যা একটি কার্যকরী অনুলিপি ঠিক পুনরায় সংগ্রহস্থলটিতে সঞ্চিত অবস্থায় থাকবে? এর মতো git reset --hardবা (হ্যাঁ, হার্ড গিট রিসেটটি রূপান্তরিত ফাইলগুলিও সরিয়ে দেয় না!) rm -rf wc && svn co <url> wc

আপডেট: আমি সাধারণ রিভার্টের পরে নেই, কারণ এতে ওয়ার্কিং কপির অতিরিক্ত ফাইলগুলি মুছবে না। আমি সত্যিই এমন কিছু চাই যা কেবলমাত্র ডেটা আবার ডাউনলোড না করে ওয়ার্কিং কপিটি মুছে ফেলা এবং আবার এটি পরীক্ষা করে দেখার মতো হবে। (স্পষ্টতই আমার সমস্ত আপত্তিহীন পরিবর্তনগুলি হারাতে আপত্তি নেই))


ওয়ার্কিং কপির সমস্ত পরিবর্তন ফিরিয়ে দেওয়া?
মরিস

5
আপনি git clean -xdfসোর্স নিয়ন্ত্রণে নেই এমন জিনিসগুলি সরাতে ব্যবহার করবেন।
vcsjones

1
@ ভিসিএস জোন্স: ধন্যবাদ, git cleanআমি যা খুঁজছি ঠিক তা উদ্ধৃত করার জন্য ম্যান পেজ : "এটি একটি পরিষ্কার বিল্ড পরীক্ষা করার জন্য একটি প্রাথমিক কাজ ডিরেক্টরি তৈরি করতে (সম্ভবত গিট রিসেটের সাথে একত্রে) ব্যবহার করা যেতে পারে।" করুণা যে সাবভার্সনটিতে এই অন্তর্নির্মিত মতো কিছু নেই বলে মনে হচ্ছে।
জুল

উত্তর:


180

আপনি পুনরাবৃত্তভাবে এই মত ফিরে যেতে পারেন:

svn revert --recursive .

উত্স নিয়ন্ত্রণে নেই এমন জিনিসগুলি সরানোর কোনও উপায় (সৃজনশীল স্ক্রিপ্ট না লিখে) নেই। আমি মনে করি আপনি যে নিকটতম স্থানে কাজটি করতে পেরেছিলেন তা হ'ল সমস্ত ফাইলের পুনরাবৃত্তি করা, তারপরে গ্রেপের ফলাফলটি ব্যবহার করা svn listএবং যদি গ্রেপ ব্যর্থ হয় তবে তা মুছুন।

সম্পাদনা : সৃজনশীল স্ক্রিপ্টের জন্য সমাধানটি এখানে রয়েছে: স্বয়ংক্রিয়ভাবে সাবভার্সন রূপান্তরিত ফাইলগুলি সরান

সুতরাং আপনি এমন একটি স্ক্রিপ্ট তৈরি করতে পারেন revertযা লিঙ্কযুক্ত প্রশ্নের যে কোনও উত্তরের সাথে সম্মিলিতভাবে আপনার পক্ষে সবচেয়ে উপযুক্ত its


3
আপনি svn cleanupপ্রথমে ডাব্লুসিটিতেও চালাতে চাইতে পারেন । বাতিল হওয়া সংশ্লেষের পরে পরিষ্কার করার জন্য এটি আমার আদর্শ অনুশীলন এবং কী নয় not
মাইক মিলার

কচ্ছপের ক্লিনআপ সংলাপে "রূপান্তরিত ফাইলগুলি সরান" বিকল্প রয়েছে।
v.oddou

2
কমান্ড লাইনের মাধ্যমে "রূপান্তরিত ফাইলগুলি সরান" উপলভ্য থাকলে এটি দুর্দান্ত হবে। বিশেষত স্বয়ংক্রিয় বিল্ডগুলির জন্য।
সি তেওয়াল্ট

3
আমার উত্তরটি দেখুন ... - এসএমএন ক্লিনআপের জন্য মুছে ফেলা-রূপান্তরিত উপস্থিত নেই
ডেনি ওয়েইনবার্গ

38

ট্র্যাক করা ফাইলগুলি ফেরাতে

svn revert . -R

চিহ্নবিহীন ফাইলগুলি পরিষ্কার করতে

svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')

-rf/ প্রথমে ভীতিকর হওয়া উচিত হতে পারে, কিন্তু একবার বোঝা এটা এই কারণে হবে না:

  1. কেবল সম্পূর্ণ-চিহ্নবিহীন ডিরেক্টরিগুলি পাস করা প্যাটার্নটির সাথে মিলবে rm
  2. -rfপ্রয়োজন বোধ করা হয়, অন্য এইসব ডিরেক্টরি সরানো হবে না

প্রত্যাবর্তন করতে তারপর পরিষ্কার (ওপেন প্রশ্ন)

svn revert . -R && svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')

ধারাবাহিকভাবে ব্যবহারের স্বাচ্ছন্দ্যের জন্য

আপনার .বাশ_আলিয়াসগুলিতে স্থায়ী উপন্যাস যুক্ত করুন

alias svn.HardReset='read -p "destroy all local changes?[y/N]" && [[ $REPLY =~ ^[yY] ]] && svn revert . -R && rm -rf $(awk -f <(echo "/^?/{print \$2}") <(svn status) ;)'

দ্বিতীয় স্নিপেটটি আমার পক্ষে কাজ করে না বলে মনে হচ্ছে:awk: fatal: error reading input file '-': Input/output error
hbogert

কমান্ডের ?মধ্যে আমাকে পালাতে হয়েছিল awk, অন্যথায় এটি svn status
gpanders

23

আপনার স্থানীয় অনুলিপিটির অভ্যন্তরে সমস্ত কিছুই মুছুন:

rm -r your_local_svn_dir_path/*

এবং নীচের কমান্ডটি পুনরাবৃত্তভাবে পুনরায় ফিরিয়ে দিন।

svn revert -R your_local_svn_dir_path

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


4
আরও দ্রুত এসএনএন ক্লিনআপ - রিমুভ-রূপান্তরিত।
জিনিক

7
svn revert . -R

সবকিছু রিসেট করতে।

svn revert path/to/file

একটি একক ফাইলের জন্য


1
এটি ওয়ার্কিং অনুলিপিতে অতিরিক্ত উল্লিখিত ফাইলগুলি মুছবে না, তাই না?
জোল

@ জোল আমি এটি ভাবি না, তবে এসভিএন ব্যবহারের কিছুকাল হয়ে যাওয়ার পরে আমাকে সে সম্পর্কে উদ্ধৃত করবেন না
অ্যাবে ভোলেকার

দুর্ভাগ্যক্রমে এটি ট্র্যাকড ফাইলগুলিকে স্পর্শ করে না। এসএনএন রিভার্ট -আর আপনার_লোকাল_সভান_ডির_পথ
জ্নিক

7

রূপান্তরিত ফাইলগুলি মুছুন এবং যে কোনও পরিবর্তন ফিরিয়ে দিন:

svn revert D:\tmp\sql -R
svn cleanup D:\tmp\sql --remove-unversioned

বাইরে:

D         D:\tmp\sql\update\abc.txt

1
অতিরিক্ত স্ক্রিপ্টিং ছাড়াই এটি সেরা উত্তর। এটি সর্বজনীন এবং অনেক এসএনএন সংস্করণের সাথে সামঞ্জস্যপূর্ণ।
Znik

3

খাঁটি উইন্ডোজ সেমিডি / ব্যাট সমাধান:

svn cleanup .
svn revert -R .
For /f "tokens=1,2" %%A in ('svn status --no-ignore') Do (
     If [%%A]==[?] ( Call :UniDelete %%B
     ) Else If [%%A]==[I] Call :UniDelete %%B
   )
svn update .
goto :eof

:UniDelete delete file/dir
IF EXIST "%1\*" (
    RD /S /Q "%1"
) Else (
    If EXIST "%1" DEL /S /F /Q "%1"
)
goto :eof

2

ওএস থেকে ওয়ার্কিং কপি মুছুন এবং এটি আবার পরীক্ষা করে দেখুন সবচেয়ে সহজ, তবে সম্ভবত একটি আদেশও নয়।


কষ্টকর ধীর। এই কারণেই আমি এটিকে ঘিরে একটি উপায় খুঁজছিলাম।
জুল

1
+1, প্রায়শই অদ্ভুত সমস্যাগুলি সমাধান করার একমাত্র উপায় এটি অন্তত আমি খুঁজে পেয়েছি।
ব্র্যাড

2

খুব দ্রুত এবং সহজ এবং আপনি যা চান ঠিক তেমন করে

svn status | awk '{if($2 !~ /(config|\.ini)/ && !system("test -e \"" $2 "\"")) {print $2; system("rm -Rf \"" $2 "\"");}}'

/(Confignav.ini)/ আমার নিজের উদ্দেশ্যে।

এবং এসএনএন কমান্ডে --no-অগ্রাহ্য করা ভাল ধারণা হতে পারে


2
এটি এত ভয়াবহ। উইন্ডোজ ব্যবহারকারীদের সম্পর্কে কী? সংস্করণ নিয়ন্ত্রণ সরঞ্জাম হিসাবে গুরুত্ব সহকারে নেওয়ার আগে সাবভারশনটির অবশ্যই কিছুটা কাজ দরকার।
ওয়ারেন পি

1

চিহ্নবিহীন ফাইলগুলি সরাতে

svn stব্যাশ-এর ​​মাধ্যমে রিপোর্ট করা সমস্ত অচিহ্নহিত ফাইলের তালিকা করে আমি সক্ষম হয়েছি :

echo $(svn st | grep -P "^\?" | cut -c 9-)

আপনি যদি ভাগ্যবান বোধ করছেন, আপনি অনতিযুক্ত ফাইলগুলি মোছার echoসাথে প্রতিস্থাপন করতে পারেন rm। অথবা আপনি যদি নিজেকে ভাগ্যবান মনে করেন তবে হাতে থাকা ফাইলগুলি অনুলিপি করুন।


(আমি বাকী ফাইলগুলি ফিরতে @ অ্যাবে-ভোলেকারের উত্তর ব্যবহার করেছি: https://stackoverflow.com/a/6204601/1695680 )

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