গিট / মার্কারিয়াল সংগ্রহস্থলগুলি কেন কম স্থান ব্যবহার করে?


15

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


5
আপনি যে ফলোইনফাগে পোস্ট করেছেন তা কি পোস্ট? stackoverflow.com/questions/7727791/... বা stackoverflow.com/questions/8657710/... বা stackoverflow.com/questions/456336/...
VonC

1
আমি না, আপনাকে ধন্যবাদ! সুতরাং আমি তাদের দুটি থেকে উত্তর বুঝতে পারি যে: জেলিব ব্যবহার করে সংক্ষেপণ এবং যখন সম্ভব হয় তখন প্যাকফিল হিসাবে বস্তুগুলি সংরক্ষণ করা। মজিলার উদাহরণগুলিও দুর্দান্ত!
অ্যালেক্স ফ্লোরস্কু

1
@ অ্যালেক্স না, এটি মূল কারণটি মিস করে। এসভিএন সম্পূর্ণ স্ন্যাপশট সংরক্ষণ করে, গিট এবং মার্কুরিয়াল কেবলমাত্র হেডের পুনর্বিবেচনা এবং পৃথকীকরণগুলি সংরক্ষণ করে। প্রচলিত সংকোচনের ব্যবহার আপনাকে প্রায় 60-80% সংক্ষেপণের সেরা-ক্ষেত্রে রেট দিতে পারে। ডিফগুলি ব্যবহার করা আপনাকে 99% হিসাবে দিতে পারে। এই সংখ্যাগুলি আমার পাছা থেকে বের করে আনা হয়েছে - আসল সংখ্যাগুলি পৃথক হতে পারে; প্রবণতা একই যদিও হতে হবে।
কনরাড রুডল্ফ

@ কনরাড রুডল্ফ, প্যাকফাইলগুলি কি এমন নয়?
অ্যালেক্স ফ্লোরস্কু

@ অ্যালেক্স সত্যই নয় আমি যতদূর জানি প্যাকফিল অতিরিক্তভাবে একাধিক ফাইল প্যাক করে। এটি অগত্যা সম্পর্কিত নয়।
কনরাড রুডল্ফ

উত্তর:


18

আমার নিজের অভিজ্ঞতা থেকে, নিম্নলিখিত বিবৃতিগুলি সমস্ত সত্য:

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

যদি আপনি চেকআউট অবস্থানের তুলনা করেন (যা গিটের সাথে নিজের মধ্যে একটি সংগ্রহস্থল), গল্পটি সম্পূর্ণ আলাদা:

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

যদি আপনি ডাউন বা আপলোড করতে হয় এমন পরিমাণের তুলনা করেন তবে তা আবার আলাদা।

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

সুতরাং শেষে, আপনি কমলাগুলির সাথে আপেলগুলি তুলনা করুন এবং সাবভারশন বা গিটের সাথে আপনি কী করতে চান তার উপর নির্ভর করে ফলাফলটি ভিন্ন হতে পারে।


@ জে কে সম্পূর্ণ কপি বা বাইনারি ডিফ্স সম্পর্কে জিজ্ঞাসা করেছিল এবং আমি এই প্রশ্নের উত্তর দিতে পারিনি। আমি ম্যাথু ম্যাককুলোকে জিজ্ঞাসা করেছি যা জ্যাক্স ২০১২ এ (যা আমি পরিদর্শন করেছি) ইদানীং একটি গিট ওয়ার্কশপ দিয়েছে। গিটের অভ্যন্তরীণ কাজটি বিশদ বিবরণ দিয়ে ব্যাখ্যা করতে তিনি সময় নিয়েছেন (ধন্যবাদ তাকে অনেক ধন্যবাদ) । হ্যাঁ, সেখানে একটি কম্প্রেশন কাজ করছে (এবং আমি একটি মাইক্রোসফ্ট অফিসের ফাইলের সাথেও একটি পরীক্ষা-নিরীক্ষা করব এবং তার গিস্টের সাথে এটি তুলনা করব), তবে না, পুরো ফাইলটিতে সংক্ষেপণটি করা হয়েছে। তাঁর বক্তব্য থেকে উদ্ধৃত:

আলগা বস্তুগুলি সংকুচিতভাবে লেখা থাকে তবে প্রতিটি কমিটের সময় নন-ডেল্টা ফর্ম্যাট।


1
আপনি কি নিশ্চিত যে গিট স্টোর অফিসের ফাইলগুলির সম্পূর্ণ অনুলিপি সঞ্চয় করে? আমি মনে করি এটি বাইনারি ডিফগুলিও সঞ্চয় করে। অবশ্যই এই ধরণের ফাইলগুলির সাথে সত্যই সমস্যাটি হ'ল তারা প্রায়শই ইতিমধ্যে সংক্ষেপিত হয় তাই একটি ছোট পরিবর্তন পুরো ফাইলটি পরিবর্তনের কারণ হতে পারে
জে কে।

2
এমন কাউকে জিজ্ঞাসা করেছেন (ইমেলের মাধ্যমে) যা আমার চেয়ে অনেক বেশি জানে এবং তার উত্তরটি আমার উত্তরটিতে অন্তর্ভুক্ত করবে।
mliebelt

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

4
আলগা বনাম প্যাক করা বস্তুগুলির বাইনারি পাঠ্যের সাথে কোনও সম্পর্ক নেই। এটি বাইনারি ডিফগুলি খুঁজে পাওয়া কঠিন কাজটির orশিককরণ। গতি গিটের গুরুত্বপূর্ণ বৈশিষ্ট্য, তাই নিয়মিত ক্রিয়াকলাপের সময়, গিটটি কেবল নতুন ডেটা জিপ করে এবং সেগুলি সংগ্রহস্থলগুলিতে চড় দেয়। এটি আলগা বস্তু। আপনি যখন কল করে git gcবা অনেকগুলি আলগা বস্তু জমা করার মাধ্যমে এটি জিজ্ঞাসা করেন , তখন তাদের বিরুদ্ধে ডেল্টা-সংকোচনের জন্য ভাল প্রার্থীরা খুঁজে পান (গিটটি পূর্ববর্তী সংস্করণ ছাড়া অন্যটির তুলনায় পৃথক হতে পারে), ডেল্টাগুলিকে একটি "প্যাক" এ সঞ্চয় করে এবং আলগা বস্তুগুলি সরিয়ে দেয়।
জানু হুডেক

3
যারা রিয়েল-ওয়ার্ল্ড নম্বরে আগ্রহী তাদের জন্য: আমি ঠিক একই রেপো থেকে দুটো ওয়ার্কিং কপি তুলনা করেছি। এসভিএন ওয়ার্কিং কপিটি প্রায় 2,9 জিবি, জিআইটি ওয়ার্কিং কপিটি প্রায় 0,8 জিবি।
জেনসজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.