চারা, একটি গিট-সামঞ্জস্যপূর্ণ উৎস কোড নিয়ন্ত্রণ ব্যবস্থা

কচি চারাগাছ

বিশ্বের বৃহত্তম ভান্ডারে স্কেল করার সময় চারা ব্যবহারের সহজতার উপর জোর দেয়।

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

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

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

অভিযোজিত ডেটা লোডিং ছাড়াও, চারা পরিবর্তনের ইতিহাস সহ তথ্যের লোড কমানোর লক্ষ্যে অপ্টিমাইজেশন প্রয়োগ করে। (উদাহরণস্বরূপ, লিনাক্স কার্নেলের সাথে একটি সংগ্রহস্থলের 3/4 ডেটা হল পরিবর্তনের ইতিহাস)।

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

প্রকল্পটি গত 10 বছর ধরে উন্নয়নের মধ্যে রয়েছে এবং একটি মাস্টার শাখার সাথে খুব বড় একচেটিয়া সংগ্রহস্থলগুলি অ্যাক্সেস করার সময় সমস্যাগুলি সমাধান করার জন্য তৈরি করা হয়েছিল, যেখানে "মার্জ" এর পরিবর্তে "রিবেস" অপারেশন ব্যবহার করার অনুশীলন করা হয়েছিল।

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

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

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

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

চারার আরেকটি উল্লেখযোগ্য উন্নতি হলো এটি ত্রুটিগুলি সংশোধন এবং বিশ্লেষণ এবং পূর্ববর্তী অবস্থায় ফিরে যাওয়ার প্রক্রিয়াটিকে আরও সহজ করে তোলে। উদাহরণস্বরূপ, "sl undo", "sl redo", "sl uncommit" এবং "sl unmend" কমান্ডগুলিকে অনেকগুলি ক্রিয়াকলাপ বিপরীত করার জন্য প্রস্তাবিত হয়, "sl hide" এবং "sl unhide" সাময়িকভাবে প্রতিশ্রুতি লুকিয়ে রাখার জন্য এবং ইন্টারেক্টিভ নেভিগেশনের জন্য। স্টেটস স্যাপলিং একটি কমিট স্ট্যাকের ধারণাকেও সমর্থন করে, যা আপনাকে জটিল কার্যকারিতাকে একটি ছোট, আরও বোধগম্য বর্ধিত পরিবর্তনের সেটে (একটি মৌলিক কাঠামো থেকে একটি চূড়ান্ত বৈশিষ্ট্য পর্যন্ত) ভেঙে ধাপে ধাপে একটি পর্যালোচনা সংগঠিত করতে দেয়।

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

ফেসবুকের অবকাঠামোতে ব্যবহৃত এই উপাদানগুলির কোডটি এখনও খোলা হয়নি, তবে কোম্পানিটি ভবিষ্যতে এটি প্রকাশ করার প্রতিশ্রুতি দিয়েছে। যাইহোক, Mononoke সার্ভার (Rust-এ) এবং VFS EdenFS (C++-এ) প্রোটোটাইপ ইতিমধ্যেই স্যাপলিং রিপোজিটরিতে পাওয়া যাবে। এই উপাদানগুলি ঐচ্ছিক এবং স্যাপলিং ক্লায়েন্টের সাথে কাজ করার জন্য যথেষ্ট, যা গিট রিপোজিটরি ক্লোনিং, গিট এলএফএস-ভিত্তিক সার্ভারগুলির সাথে ইন্টারঅ্যাক্ট করতে এবং গিটহাবের মতো গিট হোস্টগুলির সাথে কাজ করতে সহায়তা করে।

স্যাপলিং এর জন্য বেশ কিছু প্লাগইন প্রস্তুত করা হয়েছে, পরিবর্তনগুলি পর্যালোচনা করার জন্য ReviewStack ইন্টারফেস সহ (GPLv2 এর অধীনে কোড), যা আপনাকে GitHub-এ পুল অনুরোধগুলি প্রক্রিয়া করতে এবং একটি পরিবর্তন স্ট্যাক ভিউ ব্যবহার করতে দেয়।

আপনি যদি এটি সম্পর্কে আরও জানতে আগ্রহী হন তবে আপনি বিস্তারিত পরামর্শ করতে পারেন নীচের লিঙ্কে।


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।