কোনও ফাইলের আগের এসভিএন পুনর্বিবেচনায় ফিরে যাওয়ার ভাল উপায়?


167

আমি দুর্ঘটনাক্রমে একটি এসভিএন সংগ্রহস্থলে অনেকগুলি ফাইল প্রতিশ্রুতিবদ্ধ করেছি এবং এমন কিছু জিনিস পরিবর্তন করেছি যা আমি বোঝাতে চাইনি। (দীর্ঘশ্বাস।) তাদের পূর্বের অবস্থানে ফিরিয়ে আনার জন্য, আমি যে সেরাটি সামনে আসতে পেরেছিলাম

svn rm l3toks.dtx
svn copy -r 854 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx

বলছোটা! এর চেয়ে ভাল আর কোন উপায় নেই? আমি কেন এই জাতীয় কিছু লিখতে পারি না:

svn revert -r 854 l3toks.dtx

ঠিক আছে, আমি কেবল v1.4.4 ব্যবহার করছি, তবে আমি 1.5 টি শাখার জন্য পরিবর্তনের তালিকার উপরে উঠেছি এবং আমি এর সাথে সরাসরি সম্পর্কিত কিছু দেখতে পাচ্ছি না। আমি কিছু মিস করেছি?


সম্পাদনা: আমার ধারণা আমি যথেষ্ট পরিষ্কার ছিলাম না। আমি মনে করি না যে আমি একত্রীকরণটি বিপরীত করতে চাই, কারণ তখন আমি যে পরিবর্তনগুলি করতে চাই তা হারাব ! বলুন fileAএবং fileBউভয়ই সংশোধন করা হয়েছিল তবে আমি কেবল প্রতিশ্রুতিবদ্ধ হতে চেয়েছিলাম fileA; দুর্ঘটনাক্রমে টাইপ করা

svn commit -m "small change"

উভয় ফাইল কমিট করে, এবং এখন আমি ফিরে যেতে চাই fileB। বিপরীত মার্জ করা এই কাজটি উপরে বর্ণিত পদক্ষেপগুলির চেয়ে (যতদূর আমি বলতে পারি) সহজ করে না।


উত্তর:


243
svn merge -r 854:853 l3toks.dtx

অথবা

svn merge -c -854 l3toks.dtx

দুটি কমান্ড সমান


5
এর জন্য ধন্যবাদ, কেবল কিছু বর্ণনা করতে চেয়েছি - বলুন, আমি 855 সংশোধনীতে আছি, আমি 854 সংস্করণে একটি ফাইলটি ফিরিয়ে দিতে চাই I আমি যদি এটি করি svn merge -c -854 my.fileএবং তারপর করি svn diff, এটি 854 এর আগে একটি সংশোধন দেখায় বলে মনে হচ্ছে (অর্থাৎ 853 ); কেবলমাত্র যখন আমি svm merge -c 854 myfile(এটি ব্যতীত -) করি, মনে হয় মাইফাইলটি 854 পুনরুদ্ধারে ফিরে আসে। আবারও ধন্যবাদ, চিয়ার্স!
sdaau

11
উপরের প্রথমটি বিকল্পটি আমার জন্য কবজির মতো কাজ করেছিল এমন কি কারণ আছে যখন দ্বিতীয়টি সমস্ত কাজ করে না?
স্কাইবোনডসর

7
বিপরীত সংযুক্তির পরে প্রতিশ্রুতি দিতে ভুলবেন না, যদিও। আমি প্রায়শই ভুলে যাই :)
ভিনিথ প্রধান

11
এই দুটি কমান্ডের মধ্যে পার্থক্য কী তা উল্লেখ না করে সত্যই এটি বিয়োগ 1 করা উচিত। খারাপ উত্তর
রাগ ড্যান

4
@sprog - যদি একটা পার্থক্য আমি বুদ্ধিমান প্রশংসা চাই
orip

34

"পরীক্ষা করে দেখুন পূর্বাবস্থায় ফিরিয়ে আনার পরিবর্তন " এর ধারা SVN বই


5
বাহ্যিক সংস্থানগুলিতে লিঙ্কগুলি উত্সাহিত করা হয় তবে দয়া করে লিঙ্কটির চারপাশে প্রসঙ্গটি যুক্ত করুন যাতে আপনার সহ ব্যবহারকারীদের এটি কী এবং কেন আছে তা কিছুটা ধারণা থাকতে পারে। টার্গেট সাইটটি যদি অ্যাক্সেসযোগ্য না হয় বা স্থায়ীভাবে অফলাইনে চলে যায় তবে সর্বদা গুরুত্বপূর্ণ লিঙ্কের সর্বাধিক প্রাসঙ্গিক অংশটি উদ্ধৃত করুন।
ব্যবহারকারী 2084795

32

পূর্বে প্রদত্ত উত্তরের পুনরাবৃত্তির জন্য কিছু জায়গা ব্যবহার করার জন্য দুঃখিত - তবে এটি এমন কিছু যা আমি সবসময় সমস্যার মধ্যে পড়ে থাকি।

ধরা যাক আমি স্থানীয় ফাইলগুলিকে সর্বশেষ সংস্করণে আপডেট করেছি, যা 854।

অনুলিপি কাজ করবে:

svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx

.. তবে, আমি রেপো ইউআরএল জন্য গ্রেপিং বিরক্ত করা যাবে না :)

আপাত আপাতদৃষ্টিতে কাজ করতে পারে:

svn up -r 851 ./l3toks.dtx

... তবে এটি স্থানীয় অনুলিপিটিকে "নতুনভাবে চেক আউট করা" বা "অনলাইন রিভিশন হিসাবে সমান" হিসাবে চিহ্নিত করে (যেমন টরটোইজ / রাবিটভিসিএসে আপনি একটি সবুজ ঠিক আছে চেকমার্ক পেয়েছেন) - যার অর্থ আপনি করতে পারবেন না svn ci -m "rolled back to r 851": কেবল কারণ স্থানীয় subversionএক্সিকিউটেবল কোনও স্থানীয় পরিবর্তন লক্ষ্য করবে না এবং অনলাইন ভান্ডারটিতে কোনও কিছু আপলোড করতে বিরক্ত হবে না।

এবং যেমনটি ইতিমধ্যে উত্তর হিসাবে দেওয়া হয়েছে, বিপরীত মার্জ কাজ করে - তবে এই ক্ষেত্রে শর্টকাট সিনট্যাক্সের উপর নির্ভর করা উচিত নয়; তবে বিশেষভাবে বলে:

svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U    l3toks.dtx

আমি অবশ্যই স্বীকার করতে পারি - " আপনার ফাইলের সবেমাত্র r851 পেয়েছি, এবং আপনার আগে স্থানীয়ভাবে যা কিছু ছিল সেগুলি ওভাররাইট করে " - এর অর্থ " বিপরীতমুখী r854 ফাইলে ফাইলে রূপান্তরিত করতে হবে " এবং এটি সর্বশেষ অনলাইন পুনর্বিবেচনার চেয়ে আলাদা হিসাবে চিহ্নিত হয়েছে, আপনি এটি নতুন 'রোলব্যাক' রিভিশন " হিসাবে আবার অনলাইনে চেক করতে পারেন , তবে আমার ধারণা (এবং আশা :)) এটি যা করে :)

এর পরে, svn diffআমরা স্থানীয়ভাবে সঠিক সংশোধনী পেলে দ্রুত তা নিশ্চিত করার জন্য ব্যবহার করতে পারি ; এবং এছাড়াও, ফাইলটি কচ্ছপ / রাবিটভিসিএসে (যা সর্বশেষ প্রতিশ্রুতিবদ্ধ সংস্করণ থেকে পৃথক) একটি লাল বিস্ময়কর চিহ্ন দিয়ে চিহ্নিত করা হবে, এবং তাই এবার svn ci -m "rolled back to r 851"চালানো যেতে পারে।

এছাড়াও মনে রাখবেন যে, যদি আপনি, শেষ অবধি বিপরীত সংশ্লেষের পরে নিজের মতামত পরিবর্তন করেন ( যেমন আপনি যেভাবেই এখানে সর্বশেষতম, হেড রিভিশনটিতে কাজ চালিয়ে যেতে চান, এখানে 854 - স্থানীয়ভাবে আপনি 851 এ ফিরে যাওয়ার পরেও এখনও রোলব্যাক প্রতিশ্রুতিবদ্ধ না হন) ), আপনার ব্যবহার করা উচিত নয় svn up, কারণ এটি সহজভাবেই বলে দেবে যে এটি ইতিমধ্যে " সংশোধন 854 " এ রয়েছে; পরিবর্তে svn revert --recursive .বা অনুরূপ ব্যবহার করুন ...

চিয়ার্স!

রেফ: জবাবদিহি - জ্যাকব রাইট - ফ্লেক্স, এআইআর, পিএইচপি ইত্যাদি ব্যবহার করে কীভাবে পরিবর্তনগুলি রোল করতে হবে to

সম্পাদনা: ... এবং আপাতদৃষ্টিতে ঠিক একই প্রভাবটি এর svn merge -r HEAD:851 l3toks.dtxসাথে অর্জন করা যেতে পারে:

svn export -r 851 l3toks.dtx
A    l3toks.dtx
Export complete.

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

1
আমার বিপরীত সংযুক্তিতে সমস্যা ছিল। এর কারণটি বোঝার পরিবর্তে, আমি কেবল রফতানি চেষ্টা করেছি এবং এটি পুরোপুরি কার্যকর হয়েছিল। আমি কেবল রফতানি ব্যবহারের পরামর্শ দেব। আপনি --forceডিরেক্টরি ওভাররাইট করতে ব্যবহার করতে পারেন । কেবল মনে রাখবেন এটি কোনও পরিবর্তনকে ওভাররাইট করে দেবে।
নিক

আসলে কী হচ্ছে সে সম্পর্কে খুব ভাল ব্যাখ্যা! আমি প্রায়শই আনখএসভিএন এবং কচ্ছপ এসভিএন ব্যবহার করি এবং আমি কোথাও এর ব্যবহার করার জন্য দেখতে পাচ্ছি না svn export- আমি কি কিছু অনুভব করছি বা এই জিইআইতে কেবল প্রয়োগ করা হয়নি?
কনরাড

@ কনরাড, আপনি আপনার সংগ্রহস্থল প্রসঙ্গে (ডান ক্লিক করুন) মেনু থেকে আনখএসভিএন-তে "রফতানি ..." এবং টরটোইসএসভিএন-তে "রফতানি" ক্লিক করে এটি ব্যবহার করুন
নাইটিনর 708

10

পুরানো বিল্ডটি ডিবাগ করার জন্য আমাকে সম্প্রতি একটি নির্দিষ্ট সংশোধনীতে ফিরে যেতে হয়েছিল এবং এটি ম্যাজিকের মতো কাজ করেছে:

svn up -r 3340 (or what ever your desired revision number)

স্থানীয় পরিবর্তনগুলির বিষয়ে আমি যত্নশীল না হওয়ায় আমাকে "টিসি" বিকল্পটি ব্যবহার করে সমস্ত বিবাদগুলি সমাধান করতে হয়েছিল (ফিরে আসার আগে আমি যা কিছু যত্ন নিয়েছিলাম তা যাচাই করেছিলাম)

মাথা রিভিশন ফিরে পেতে খুব সহজ ছিল:

svn up

5

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


4

বিপরীত মার্জ করা হ'ল আপনি যা চান তা হ'ল (লুপিপের উত্তর দেখুন)। পুরো ডিরেক্টরিটির পরিবর্তে ভুল-কমিট করা ফাইলটিতে কেবল মার্জটি প্রয়োগ করুন।


4

আপনি যদি কেবলমাত্র শেষ চেকিনটি পূর্বাবস্থায় ফেরাতে চান তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন

svn merge -r head:prev l3toks.dtx

এইভাবে, আপনাকে বর্তমান এবং পূর্ববর্তী সংস্করণ সংখ্যাগুলি খুঁজতে হবে না।


4

এসএনএন মার্জ পুনর্বিবেচনাগুলি সংশোধনগুলি মার্জ করবে। উদাহরণস্বরূপ, যদি আপনার হেড সংস্করণে আপনার কিছু সংযোজন থাকে তবে এটি পূর্ববর্তী সংশোধনের সাথে মার্জ করুন, তবে পরিবর্তনটি অব্যাহত থাকবে।

আমি এসএনএন বিড়াল ব্যবহার করি তারপর এটিকে ফাইলে পুনর্নির্দেশ করুন:

svn cat -r 851 l3toks.dtx > l3toks.dtx

তারপরে আপনার কাছে সেই ফাইলে 851 সামগ্রী রয়েছে এবং এটি আবার চেক ইন করতে পারেন।


3

আপনি যদি এসভিএন প্লাগইন সহ Eclipse IDE ব্যবহার করেন তবে আপনি নিম্নলিখিত হিসাবে করতে পারেন:

  1. আপনি যে ফাইলগুলি আবার ফিরিয়ে দিতে চান তা ডান-ক্লিক করুন (বা আপনি যে ফোল্ডারে এতে উপস্থিত ছিলেন, যদি আপনি ভুলক্রমে সেগুলি মুছে ফেলে থাকেন এবং আপনি সেগুলি আবার যুক্ত করতে চান)
  2. " দল> স্যুইচ " নির্বাচন করুন
  3. "রিভিশন" রেডিয়ান বোতামটি চয়ন করুন এবং আপনি যে সংস্করণটি ফিরে যেতে চান তা প্রবেশ করান। ঠিক আছে ক্লিক করুন
  4. সিঙ্ক্রোনাইজ দৃষ্টিকোণে যান
  5. আপনি যে ফাইলগুলি ফিরে যেতে চান তা নির্বাচন করুন
  6. নির্বাচনের উপর ডান ক্লিক করুন এবং " ওভাররাইড এবং প্রতিশ্রুতি ... " করুন

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

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