গিট কীভাবে অনুরূপ ফাইলগুলি সনাক্ত করতে পারে, এর নামকরণ সনাক্তকরণের জন্য?


92

উইকিপিডিয়া স্বয়ংক্রিয় নামকরণ সনাক্তকরণ ব্যাখ্যা করে:

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

পুনরায় নামকরণ সনাক্তকরণ দৃশ্যত অনুরূপ ফাইল সনাক্তকরণে ফোটে। যে আলগোরিদম কোথাও নথিভুক্ত করা হয়? কী ধরণের রূপান্তরগুলি স্বয়ংক্রিয়ভাবে সনাক্ত করা যায় তা জেনে ভাল লাগবে।


উত্তর:


93

গিট ফাইলের সামগ্রীগুলি ট্র্যাক করে, ফাইলের নাম নয়। সুতরাং কোনও ফাইলের সামগ্রী পরিবর্তন না করেই নতুন নামকরণ করা গিটের পক্ষে সনাক্ত করা সহজ। (গীত ট্র্যাক যাবে না, তবে সঞ্চালিত সনাক্তকরণ ; ব্যবহার git mvবা git rmএবং git add। কার্যকরভাবে একই)

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

নাম পরিবর্তিত ফাইলে ছোট পরিবর্তনগুলি সনাক্ত করতে, গিট কিছু নির্দিষ্ট অ্যালগরিদম এবং একটি নাম পরিবর্তন করে কিনা তা দেখতে একটি থ্রোসোল্ড সীমা ব্যবহার করে। উদাহরণস্বরূপ, এর -Mজন্য পতাকাটি দেখুন git diff। কনফিগারেশন মানগুলি যেমন merge.renameLimit(মার্জ করার সময় পুনরায় নাম সনাক্তকরণের সময় বিবেচনা করা ফাইলগুলির সংখ্যা)।

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

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


59
"আপনাকে কীভাবে বিবেচনা করা উচিত নয়।" - ভাবলাম এটাই প্রশ্ন?
বাইন করুন

2

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

অনুরূপ পাঠগুলি শনাক্ত করার জন্য এখানে অ্যালগরিদম সম্পর্কে আলোচনা করা হয়েছে । এই অ্যালগরিদমগুলির কিছু প্রাকৃতিক ভাষার জন্য অনুকূলিত হতে পারে, অন্যরা সোর্স কোডের জন্য আরও ভাল কাজ করতে পারে তবে সংক্ষেপে তারা খুব বেশি একরকম।

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