গিট কেন সংশোধন সংখ্যার পরিবর্তে হ্যাশ ব্যবহার করে?


80

আমি সর্বদা ভাবতাম কেন গিট সংশোধন সংখ্যার চেয়ে হ্যাশ পছন্দ করে। পুনর্বিবেচনা সংখ্যাগুলি আরও স্পষ্ট এবং সহজ (আমার মতে) উল্লেখ করুন: কাউকে 1200 রিভিশনটি দেখুন বা 92ba93e কমিট করতে বলার মধ্যে পার্থক্য রয়েছে! (শুধু একটি উদাহরণ দিতে)।

সুতরাং, এই নকশার কোনও কারণ আছে?


3
আপনি "v1.0" দিয়ে একটি প্রতিশ্রুতি ট্যাগ করতে পারেন এবং তারপরে সেই ট্যাগ দ্বারা প্রতিশ্রুতিবদ্ধতার উল্লেখ করুন। দেখুন git-scm.com/book/en/v2/Git-Basics-Tagging
মাইকেল Durrant

উত্তর:


114

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


11
আপনি বাজারের দিকে নজর দিতে চাইতে পারেন - একটি ডিভিসিএস যা এখনও সংশোধন নম্বর বজায় রাখে। কেবলমাত্র গ্যারান্টিটি হ'ল সংশোধন সংখ্যাগুলি একটি শাখার মধ্যে স্বতন্ত্র।
krlMLr

3
@krlmlr Person 1: "Hey, <P2>, what was revision 12345 for?" P2: "Revision 12345 was commited by <P3>." P3: "I don't have a revision 12345..."- যদি আমি সঠিকভাবে মনে করি তবে মার্চুরিয়ালের একটি একই সমস্যা রয়েছে। অন্যদিকে, তারা যদি গিট ব্যবহার করে থাকে তবে তাদের প্রত্যেকেরই প্রতিটি প্রতিশ্রুতির জন্য অভিন্ন উল্লেখ রয়েছে ferences
ইজকাটা

1
@ ইজকাটা: P1: "Do you have revision with the GUID gdlmsnblngoijlafd-35345-fg?"... বাজারে এখনও জিআইডি রয়েছে ...
krlMLr

5
@Izkata Mercurial নেই না একটি অনুরূপ সমস্যা আছে। তারা হ্যাশ ব্যবহার করে, ঠিক যেমন git। এগুলি টাইপিংয়ের স্বাচ্ছন্দ্যের জন্য স্থানীয়-কেবল রেভ নম্বর সরবরাহ করে।
হ্যাঙ্ক গে

1
গিট সহ, হ্যাশের প্রথম 5 টি অক্ষর প্রায়শই সম্পূর্ণ রিভিশন আইডির জন্য একটি শর্টহ্যান্ড ব্যবহার করতে যথেষ্ট অনন্য।
mendota

40

আপনার বিতরণ সিস্টেমে হ্যাশ দরকার। ধরা যাক আপনি এবং সহকর্মী উভয়েই একই ভান্ডারটিতে কাজ করছেন এবং আপনি দুজনেই স্থানীয়ভাবে একটি পরিবর্তন প্রতিশ্রুতিবদ্ধ এবং তারপরে এটি চাপুন। কে 1200 নম্বর সংশোধন হতে পারে এবং 1201 সংশোধন সংখ্যা কে দেওয়া হয়েছে উভয় পক্ষেই একে অপরের সম্পর্কে কিছু জানেন না? একমাত্র বাস্তব প্রযুক্তিগত সমাধান হ'ল একটি পরিচিত পদ্ধতি ব্যবহার করে পরিবর্তনের একটি হ্যাশ তৈরি করা এবং তার ভিত্তিতে জিনিসগুলি লিঙ্ক করা।

মজার বিষয় হ'ল এইচ.জি. সংস্করণ সংখ্যাগুলি সমর্থন করে তবে সেগুলি স্পষ্টতই স্থানীয়-একমাত্র বৈশিষ্ট্যযুক্ত os আপনার সংগ্রহস্থলের একটি সেট রয়েছে, কীভাবে আপনার চাপানো হয়েছিল এবং কীভাবে টানা হয়েছিল তার উপর নির্ভর করে আপনার সহকর্মীর রেপোতে আলাদা সেট থাকবে। এটি কমান্ড লাইন ব্যবহারকে গিটের চেয়ে কিছুটা বেশি বন্ধুত্বপূর্ণ করে তোলে।


34

তথ্য অখণ্ডতা.

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

সুতরাং, তাদের এসএইচএ হ্যাশ দ্বারা অবজেক্টগুলিকে উল্লেখ করা বিষয়বস্তুগুলির সাথে छेলাভুক্ত হয়েছে কিনা তা পরীক্ষা করতে দেয়। এবং প্রদত্ত যে তারা (প্রায়) অনন্য হওয়ার গ্যারান্টিযুক্ত, এগুলি সংশোধন শনাক্তকারী হিসাবেও ব্যবহার করা যেতে পারে - সুবিধার্থে তাই।

আরও তথ্যের জন্য গিট বইয়ের 9 তম অধ্যায়টি দেখুন ।


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

@ লি: পুনর্বিবেচনার হ্যাশগুলির ক্ষেত্রে চকের সংগ্রহশালা অ্যালিস এবং ববের থেকে আলাদা থাকলে এটির নিশ্চয়তা রয়েছে যে চকেরও বিভিন্ন বিষয়বস্তু রয়েছে। অন্যদিকে, চকের পক্ষে বিভিন্ন বিষয়বস্তু সহ একটি সংগ্রহের বানানো খুব কঠিন যা তাদের পুনর্বিবেচনার হ্যাশগুলিকে অভিন্ন দেখায়।
krlMLr

@ লি: আপনার লিঙ্কটি মিস করেছেন। এর পরে এটি "ডেটা অখণ্ডতা"
বলি

সঠিক উত্তর হওয়া উচিত
সুপারউবারডুপার

8

সাধারণ মানুষের কথায়:

  • হ্যাশ হতে উদ্দেশ্যে করা হয় প্রায় বিশ্বজনীনভাবে অনন্য। এটি গ্যারান্টিযুক্ত নয় তবে এটি একই SHA বিভিন্ন সামগ্রীর জন্য উত্পাদিত হওয়ার পক্ষে অত্যন্ত সম্ভাবনা নেই। প্রদত্ত প্রকল্পের ব্যবহারিক পদে আপনি এটি অনন্য হিসাবে বিবেচনা করতে পারেন।
  • পুনর্বিবেচনার সংখ্যার সাথে আপনাকে 1200 পুনর্বিবেচনার জন্য বিশেষভাবে রেফার করতে একটি নেমস্পেস ব্যবহার করতে হবে।
  • গিট বিতরণ এবং / বা কেন্দ্রীভূত উভয়ই কাজ করতে পারে। তাহলে আপনি সংশোধন নম্বরগুলি কীভাবে সঠিক এবং অনন্য পাবেন?
  • এছাড়াও পুনর্বিবেচনা সংখ্যাগুলি ব্যবহার করে এই মিথ্যা আকর্ষণ তৈরি হবে যে নতুন সংশোধনগুলির উচ্চতর সংখ্যা হওয়া উচিত, এবং এটি শাখাবদ্ধতা, মার্জিং, রিবেসিং ইত্যাদির কারণে সত্য হবে না would
  • আপনার কাছে সর্বদা কমিটে ট্যাগ লাগানোর বিকল্প রয়েছে।

32
অনন্য হওয়ার গ্যারান্টিযুক্ত নয়, অবিশ্বাস্যরকমই অনন্য হওয়ার সম্ভাবনা রয়েছে। :)
dsw88

@ mustang2009cobra এটি সত্য।
তুলাইনস কর্ডোভা

1
হ্যাশ অপরিবর্তিত থাকায় এটি সম্ভবত আমার পরিবর্তন গ্রহণযোগ্য নয়। এটি আরও বেশি সম্ভাবনা রয়েছে যে দু'জন উল্কা আমার কম্পিউটার এবং কম্পিউটারটিকে একই সেকেন্ডে ভান্ডার দিয়ে আঘাত করে, কম্পিউটারগুলি ধ্বংস করে এবং এতে জড়িত সবাইকে হত্যা করে।
gnasher729

5

গাণিতিক ভাষায়:


1

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

তবে কেন গিট ভেক্টর ক্লক ব্যবহার করে হ্যাশ ব্যবহার করেন না? আমি মনে করি মূল কারণটি চেরি-বাছাই । আমরা যখন কোনও সংগ্রহশালায় চেরি-বাছাই করি তখন কমিটের আংশিক ক্রম পরিবর্তন হয়। নতুন আংশিক ক্রম উপস্থাপনের জন্য কিছু কমিটের ভেক্টর ঘড়িগুলি অবশ্যই পুনরায় নিয়োগ করা উচিত। তবে বিতরণ ব্যবস্থায় এ জাতীয় পুনর্নির্মাণ অসঙ্গতি ভেক্টর ঘড়ি প্ররোচিত করবে। এটিই আসল সমস্যা যা হ্যাশগুলি মোকাবেলা করে।

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