মার্কুরিয়ালে কোনও ফাইলের নির্দিষ্ট সংস্করণটি কীভাবে পাবেন?


114

আমি মার্চুরিয়ালে নতুন। ঠিক সঠিক কমান্ড খুঁজে পাচ্ছি না। ভাগ্য নেই আপডেট / চেকআউট চেষ্টা। আমি স্থানীয় সংগ্রহস্থল ব্যবহার করছি। ধন্যবাদ


@ সর্বজনীন: আমি একটি ফাইলের একটি স্থিতিশীল সংস্করণ প্রতিশ্রুতিবদ্ধ। তারপরে ফাইলটিতে কাজ করা চালিয়ে গেল তবে শীঘ্রই বুঝতে পারলাম আমার শেষ "ভাল" সংস্করণটি দরকার। এটি এসএনএন-র আপডেটের মাধ্যমে করা যেতে পারে তবে আমি এইচজি আপডেটের চেষ্টা করার সময় এটি "0 ফাইল ..." বলে
কোডিজম

উত্তর:


153

আমি মনে করি আপনি চান hg revert -r<rev> <file>(এটি সেই ফাইলটিকে পরিবর্তিত করবে যেমনটি প্রদত্ত সংশোধনীতে ছিল)।


হ্যাঁ, তিনি যা চান তা ঠিক তাই। :-)
সর্বশক্তিমান

9
অথবা আপনি যদি আপনার বর্তমান পরিবর্তনগুলি বাতিল করতে চান, এবং সর্বশেষ যেটি করা হয়েছিল তা পেতে চাইলে hg রিভার্ট করুন
ব্ল্যাকটাইজারএক্স

@ ব্ল্যাকটিগারএক্স সংশোধন ছাড়াই একটি অ-পরিবর্তিত ফাইল কোনও কিছুর কাছে ফিরে যাবে না, যদিও এটি সর্বাধিক প্রতিশ্রুতিবদ্ধ সংস্করণ নয়। আমি কখনও কখনও এটি পুনরায় সংশোধনের মধ্যে ফাইলগুলি 'চেরি পিক' করতে ব্যবহার করি, সুতরাং এগুলি গুরুত্বপূর্ণ।
ব্যবহারকারী 2864740

83

যেমনটি ডিজেসি বলেছে যে revertপূর্বের সংশোধনের সাথে মেলে একটি জায়গায় ফাইল পরিবর্তন করে। আপনি যদি এটির জায়গায় না চান তবে আপনি ব্যবহার করতে পারেন hg cat -r revisionid filename(অবশ্যই সংশোধনকারী এবং ফাইলের নাম পরিবর্তন করুন) যা আপনার পছন্দ মতো যে কোনও জায়গায় পুনর্নির্দেশের জন্য উপযুক্ত ফাইলটি স্টাডআউটে আউটপুট দেবে।


4
purrrfect, আমি ঠিক কি জন্য চেয়েছিলেন।
yota

আশ্চর্যজনক, এরকম কিছু শুনে সর্বদা সুন্দর।
Ry4an ব্রাস

24

hg revertসত্যিই এই সমস্যা সমাধান করে। তবে আমি মনে করি যে আপনি আপনার প্রশ্নের উত্তরের চেয়ে বিস্তৃত বিস্তৃত বিষয় সম্পর্কে বিভ্রান্ত হয়ে পড়েছেন এবং আরও পুরোপুরি উত্তর দেওয়ার চেষ্টা করতে চান।

hg updateএকটি সম্পূর্ণ সংগ্রহস্থল কমান্ড এবং পৃথক ফাইলে কাজ করবে না। এটি এইভাবে subversion মত নয় svn update। আপনি যদি hg --help updateদেখতে পান যে এটি কেস কারণ কোনও ফাইল আর্গুমেন্ট নেয় না। এটি আপনার সম্পূর্ণ সংগ্রহস্থলটিকে একটি নির্দিষ্ট স্ন্যাপশটে সরানোর জন্য ব্যবহার করা যেতে পারে, তবে এটি কেবল একটি ফাইলের জন্য ব্যবহার করা যায় না।

আপনি টাইপ করলে hg --helpকমান্ডের একটি তালিকা দেখতে পাবেন। এটি একটি বৃহত্তর এবং কিছুটা ভয়ঙ্কর তালিকা, তবে আপনি যদি এটি পড়েন তবে আপনি এই লাইনটি পাবেন:

revert       restore individual files or directories to an earlier state

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

মার্চুরিয়ালের পৃথক updateকমান্ড থাকার কারণটি হ'ল মার্চুরিয়ালে এমন কিছু করা সম্ভব যা সাবভার্সনে অসম্ভব। আপনি updateআগের সংস্করণে পরিবর্তন করতে পারেন, তারপরে কমিট করতে পারেন। এটি একটি শাখা তৈরি করবে। updateকমান্ড বর্তমান পরিশ্রমী সংকলনের অভিভাবক সংস্করণ পরিবর্তন সেইসাথে যে পিতা বা মাতা সংস্করণ এর সংস্করণ যে ডিরেক্টরির মধ্যে সব ফাইল বিষয়বস্তু পরিবর্তন প্রভাব রয়েছে।

এর অর্থ revertএকটি ফাইলের বিষয়বস্তু পরিবর্তন হয় (বা আপনি যদি কমান্ডটিকে সঠিক যুক্তি দিয়ে থাকেন তবে সম্পূর্ণ সংগ্রহস্থল) কিন্তু বর্তমানের কার্যকরী অনুলিপিটির পিতামাতাকে পুনর্বিবেচনাটি একই রকম রাখে।

hg parentsকমান্ডটি ব্যবহার করে আপনি বর্তমান ওয়ার্কিং কপিটির প্যারেন্ট রিভিশন (বা একীকরণের ক্ষেত্রে সংশোধনগুলি) সন্ধান করতে পারেন ।

সাবভার্সন সংশোধনগুলি কঠোরভাবে রৈখিক অগ্রগতি। মার্চুরিয়াল একটি টুপিয়ের ড্রপে শাখা তৈরি করে এবং এগুলি মার্জ করার মতো প্রায় সহজ। সংশোধনগুলি একটি ডিএজি গঠন করে, কঠোরভাবে রৈখিক অগ্রগতি নয়।


13

একটি নির্দিষ্ট ফাইলের নির্দিষ্ট সংশোধনটি বের করতে আপনি উইন্ডোতে এটি করতে পারেন:

hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"

এখানে, 9 হ'ল সংশোধন নম্বর।

বা আরও ভাল:

hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"

1

পূর্ববর্তী সংস্করণটি পেতে চেষ্টা করে এখানে এসেছিল, সুতরাং সঠিক আদেশটি এখানে:

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