গিটকে কীভাবে ডিজাইন করা হয়েছিল?


9

আমার কর্মক্ষেত্রটি সম্প্রতি গিটে স্যুইচ করেছে এবং আমি এটি ভালোবাসি (এবং ঘৃণা করি!)। আমি সত্যিই এটি পছন্দ করি, এবং এটি অত্যন্ত শক্তিশালী। আমি যে অংশটি ঘৃণা করি তা হ'ল কখনও কখনও এটি খুব শক্তিশালী হয় (এবং সম্ভবত কিছুটা সংশ্লেষ / বিভ্রান্তিকর)।

আমার প্রশ্ন ... গিটকে কীভাবে ডিজাইন করা হয়েছিল? কেবলমাত্র অল্প সময়ের জন্য এটি ব্যবহার করে আপনি অনুভব করেন যে এটি অন্যান্য সংস্করণ নিয়ন্ত্রণ সিস্টেমগুলি যেগুলি অস্পষ্ট ওয়ার্কফ্লোগুলি পরিচালনা করতে পারে না তা পরিচালনা করতে পারে। তবে এটি নীচে মার্জিত মনে হয়। এবং দ্রুত!

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

লিনাস এইটিকে পার্কের বাইরে ফেলে সত্যিই প্রথম চেষ্টা করেছিল! আপনি শেখার বক্ররেখার পরে একবার ব্যবহার করা বেশ ভাল।


সম্ভবত আপনি গিট আইআরসি চ্যানেলে কিছুটা সহায়তা পেতে পারেন (# ফ্রিটোডে গিট)
ইয়াতী সাগাদ


2
you get the feel that it can handle many obscure workflows that other version control systems could not: এটি সম্ভবত কারণ এটি লিনাক্স কার্নেলটি পরিচালনা করার জন্য ডিজাইন করা হয়েছিল, এটি একটি কুখ্যাতভাবে হ্যাকিশ, বড় এবং জটিল কোডের টুকরা ছিল।
ইয়ানিস

উত্তর:


17

গিট যতটা বিবর্তিত হয়েছিল তেমন ডিজাইন করা হয়নি ।

নিজে দেখে নিন অফিসিয়াল গিট সংগ্রহস্থলটিকে ক্লোন করুন , এটিকে খুলুন gitk(বা আপনার প্রিয় গ্রাফিকাল গিট লগ ভিউয়ার) এবং এর প্রাথমিক সংস্করণগুলি দেখুন।

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

একটি পরিষ্কার, অরথোগোনাল কোর (যা আপনার প্রয়োজনের পরে সরাসরি ব্যবহার করতে পারেন) এর মিশ্রণ, একটি উপরের স্তর সহ যা এটির উপর জৈবিকভাবে বেড়েছে, এটিই গিটকে তার শক্তি দেয়। অবশ্যই, এটি এটিকেই বিপুল পরিমাণে বিজোড়-নামক কমান্ড এবং বিকল্পগুলি দেয়।


সংক্ষেপণ, গ্রাফগুলি, সংশোধন সংখ্যাগুলি থেকে মুক্তি পেয়ে শাখা প্রশাখায় জোর দেওয়া, স্ট্যাশিং, রিমোটগুলি ... এগুলি কোথা থেকে এসেছে?

প্রথমদিকে সেখানে অনেক কিছুই ছিল না।

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

যদি "গ্রাফিকগুলি" দ্বারা আপনার বোঝানো গ্রাফিকাল দর্শকদের পছন্দ হয় তবে gitkতারা পরে উপস্থিত হয়েছিল (এএফএআইকে, প্রথমটি ছিল gitk)। আফাইক, বিটকিপারেরও গ্রাফিকাল ইতিহাসের দর্শক ছিল।

সংস্করণ সংখ্যাগুলি থেকে মুক্তি পাওয়া, বস্তুগুলি সংরক্ষণ করার জন্য গিটারের একটি বিষয়বস্তু সম্বোধিত ফাইল সিস্টেম ব্যবহার করার মূল ধারণাটি বেশিরভাগ মনোোটোন থেকেই এসেছে । এই সময়, একঘেয়ে মন্থর ছিল; যদি এটি না হয় তবে লিনাস গিট তৈরির পরিবর্তে এটি ব্যবহার করতে পারে।

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

স্ট্যাশিং ( git stash) হ'ল, আইআইআরসি, বেশ সাম্প্রতিক। রিফ্লাগগুলি, যা এটি ব্যবহার করে, শুরুতে সেখানে ছিল না।

এমনকি রিমোটগুলি প্রাথমিকভাবে সেখানে ছিল না। মূলত, আপনি হাত দ্বারা অবজেক্টগুলি অনুলিপি করেছেন rsync

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


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

1
এছাড়াও একটি আকর্ষণীয় পঠন, গিটের
নোড

প্রোগ্রামাররা কি সিভিএস + আরএসএনসি + httpd সহ গিটের কিছু কার্যকারিতা অনুকরণ করতে ব্যবহার করত? আমি ঘরে বসে কী কী সমাধান সম্ভব হয়েছিল তা শুনতে আগ্রহী।
শ্রীধর সারনোবাত

8

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

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

মূলত এটি নিজের চুলকানি স্ক্র্যাচ করার চূড়ান্ত উদাহরণ।


6
"একক সর্বাধিক যোগ্যতাসম্পন্ন"? আমি তাই মনে করি না. এমন অনেক স্মার্ট ব্যক্তি আছেন যারা বিতরণকৃত উত্স নিয়ন্ত্রণ লিখতে যোগ্য। BitMover (BitKeeper পিছনে কোম্পানি) এ বলছি সত্যিই সত্যিই জানতে পারে তারা কি করছেন। লিনাস এমনকি ল্যারি ম্যাকভয়কে সোর্স কোড নিয়ন্ত্রণ কীভাবে কাজ করা উচিত তা দেখানোর জন্য কৃতিত্বও দেয় । ল্যারি ব্যতীত গিট হবে না।
ব্রায়ান ওকলে

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

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

@ পঙ্কজ উপাধ্যায়: আমি কাউকে ধিক্কার দিচ্ছি না, আমি কেন কেবল উত্তরটি হ্রাস করেছিলাম তা ব্যাখ্যা করছি। আপনি "প্রথমে একটি সমাধান সরবরাহ করেছিলেন" সম্পর্কে কিছু বলেছিলেন যার অর্থ আমার মনে হয় আপনি মনে করেন গিট কিছুটা ক্ষেত্রে "প্রথমে" ছিল। আপনি কি মনে করেন এটি প্রথমে ছিল? এটি অবশ্যই একটি দীর্ঘ শটের দ্বারা প্রথম বিতরণ স্ক্যাম সরঞ্জাম ছিল না।
ব্রায়ান ওকলে

1
@ ডিড এমএমজি: এই বিবৃতিটির আরও গুরুত্বপূর্ণ অংশটি পরে আসে "... এবং এর বেশিরভাগ পারফরম্যান্স সমালোচিত"। আমি সন্দেহ করি আপনি এমন অনেক লোককে খুঁজে পাবেন যে যুক্তি দিবে যে আপনি যদি ভালভাবে জানেন তবে লো ওভারহেড উচ্চ-সম্পাদন কোড প্রয়োগের ক্ষেত্রে সি খুব ভাল উপযুক্ত নয়।
মাইকেল বর্গওয়ার্ট

6

দ্য গিট প্যারাবেলে বর্ণিত হিসাবে এটি বেশ ডিজাইন করা হয়েছিল ।

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

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