অভ্যন্তরীণ ডেটা মডেলগুলি মৌলিকভাবে পৃথক।
মূলত, এসভিএন-তে, আপনি যখন কোনও শাখার ইতিহাস দেখুন, আপনি কেবল সেই শাখায় কী ঘটেছে তা দেখতে পাবেন। সুতরাং যখন আপনি শাখা থেকে একত্রীকরণ B
শাখায় A
, শাখা ইতিহাসে A
এক বড় সকলের জন্য স্পষ্টভাবে করা পরিবর্তনগুলি ধারণকারী কমিট উপস্থিত থাকবে B
যেহেতু এটি শাখা ছিল।
এসভিএন এর প্রথম সংস্করণগুলিতে, যদি আপনাকে আবারও B
শাখাকে A
শাখায় B
একত্রীকরণ করতে হয়, একই সংশোধনগুলি দুটিবার মার্জ না করার জন্য আপনাকে কোন শাখার সংশোধন পরিসরটি মার্জ করতে চেয়েছিল তা ম্যানুয়ালি নির্দিষ্ট করে দিতে হয়েছিল। চতুর বিকাশকারী অবশ্যই অবশ্যই 'বি: 1234 তে মার্জড' এর মতো একটি প্রতিশ্রুতি বার্তা ব্যবহার করবেন।
এসভিএন 1.5 এটি "স্থির" করেছে। তবে মার্জগুলি কীভাবে মৌলিকভাবে প্রয়োগ করা হয় তা পরিবর্তিত হয়নি। এটি কেবলমাত্র শাখায় কিছু অতিরিক্ত মেটাডেটা যুক্ত করেছে A
, এসভিএনকে জানায় যে 1234 রিভিশনটি একত্রীকরণ করা হয়েছে, এসভিএনকে স্বয়ংক্রিয়ভাবে সঠিক সংশোধন পরিসীমা বেছে নিতে দেয়।
তবে এই সমাধানটি মূলত এমন একটি ডেটা মডেলের জন্য কাজ যা মূলত যা একীভূত হয়েছে তা ট্র্যাক সমর্থন করে না।
দুটি শাখা মার্জ করা একটি তুলনামূলক সহজ উদাহরণ। তবে এই আরও জটিল দৃশ্যের চিত্র
A
থেকে শাখা তৈরি করুন trunk
এবং এখানে কয়েকটি কমিট করুন
B
থেকে শাখা তৈরি করুন A
এবং এখানে কয়েকটি কমিট করুন
- কয়েক করে তুলুন
trunk
এবংA
- মার্জ
B
মধ্যেtrunk
- মার্জ
A
মধ্যেB
- মার্জ
A
মধ্যেtrunk
- মার্জ
B
মধ্যে trunk
(এই আসলে কিছু করতে উচিত নয়)
মেটাডেটা মডেলটি ব্যবহার করে এটি সঠিকভাবে পরিচালনা করা অত্যন্ত জটিল হয়ে ওঠে (এসভিএন সত্যিকার অর্থে এই দৃশ্যটি সঠিকভাবে পরিচালনা করে কিনা তা আমি জানি না এবং এটি পরীক্ষা করার জন্য আমি কোন প্রবণতা বোধ করি না)।
গিটে এই দৃশ্য পরিচালনা করা অত্যন্ত সহজ।
গিটে, প্রতিবার আপনি প্রতিশ্রুতিবদ্ধ হওয়ার সময়, প্রতিশ্রুতিবদ্ধ যে অভ্যন্তরীণ বস্তুটিতে পূর্বের মাথার একটি রেফারেন্স রয়েছে। আপনি যখন কোনও শাখায় মার্জ করবেন, তখন কমিটটিতে মার্জ হওয়া সমস্ত শাখার পূর্বের মাথাটির উল্লেখ রয়েছে (আপনি গিটে একবারে একাধিক শাখাকে মার্জ করতে পারবেন)
অতএব, আপনি যখন গিটে একক প্রতিশ্রুতিবদ্ধতার ইতিহাসটি পরীক্ষা করেন, আপনি সমস্ত ইতিহাস দেখতে পাবেন, কখন এটি ব্রাঞ্চ করা হয়েছিল, কখন এটি একত্রীকরণ করা হয়েছিল এবং আপনি শাখা এবং মার্জিংয়ের মধ্যে উভয় শাখার ইতিহাস দেখতে পাবেন।
সুতরাং আংশিকভাবে একত্রীকরণ করা শাখায় মার্জ করার সময়, ইতিমধ্যে কী একত্রীভূত হয়েছে এবং কী কী তা নির্ধারণ করা অত্যন্ত সহজ।
মার্কুরিয়ালের সাথে আমার কোনও অভিজ্ঞতা নেই তবে আমি সন্দেহ করি যে এর অভ্যন্তরীণ কাজগুলি গিটের মতো।
সুতরাং মৌলিকভাবে, এসভিএন এর জন্য, এটি শাখা প্রশস্তকরণকে সস্তা করার জন্য একটি ডিজাইনের লক্ষ্য ছিল। কিন্তু গিট এ, এটি মার্জিং সস্তা করার জন্য একটি ডিজাইন লক্ষ্য ছিল।
শেষ অবধি, আমি যখন এসভিএন ব্যবহার করেছি, এটি মার্জ পরিচালনা করতে সক্ষম হয় নি, যেখানে একটি শাখায় একটি ফাইলের নাম পরিবর্তন করা হয়েছিল এবং অন্যটিতে পরিবর্তন করা হয়েছিল।