এই প্রশ্নটি স্বচ্ছ প্রতিলিপি সম্পর্কে জিজ্ঞাসা করে, এবং আমি সন্দেহ করি এখনও কোনও উত্তর নেই কারণ লোকেরা স্বচ্ছতার সাথে ঝুঁকছে। প্রতিলিপিটিতে ফোকাস দেওয়ার জন্য আমি স্বচ্ছতা নির্ধারণের স্বাধীনতাটি গ্রহণ করব। আমি পরে (বা জরিমানা) স্বচ্ছতার সাথে মোকাবিলা করব এবং আসলে আমি কোনও ডিভিসিএসে এটি এত গুরুত্বপূর্ণ বলে মনে করি না।
প্রথমে, ডিভিসিএসে সংগ্রহস্থলগুলি যেভাবে কাজ করে সে সম্পর্কে কয়েকটি মূল বিষয়বস্তু লিখতে দাও। (আমি মার্চুরিয়ালের সাথে সর্বাধিক পরিচিত, তাই আমি উদাহরণগুলির জন্য এটি ব্যবহার করব, তবে আমি যা বলেছি তা গিটারের ক্ষেত্রেও সত্য believe
উ: ডিভিসিএসে, যে কোনও ক্লোনটিতে একই ফাইলের সামগ্রী এবং ইতিহাসের মতো ইতিহাস থাকে।
রিপোসটি আপনাকে সিঙ্কে সঠিকভাবে রাখার অর্থ এই, আপনি একটি প্রতিলিপি সিস্টেম তৈরির জন্য সাধারণ ডিভিসিএস পরিবর্তন প্রসারণ অপারেশন (ক্লোন, পুশ, টান) এবং সাধারণ রেপো ব্যবহার করতে পারেন।
খ। নতুন পরিবর্তনগুলি কোথা থেকে এসেছে সেগুলি প্রচার করতে হবে না।
বিশেষত, যদি আমি কোনও নির্দিষ্ট রেপো থেকে পরিবর্তন আনতে এবং নিজের কিছু পরিবর্তন যুক্ত করি তবে আমার পরিবর্তনগুলি সেই নির্দিষ্ট রেপোতে ফিরে যেতে হবে না। তারা অন্য কোথাও যেতে পারে। এর উপযোগটি আমি নীচে দেখাব উদাহরণগুলি থেকে পরিষ্কার হওয়া উচিত।
সি পরিবর্তন বা ধাক্কা মাধ্যমে প্রচার করা যেতে পারে।
একটি কেন্দ্রীভূত সিস্টেমে নতুন পরিবর্তনগুলি বেশ কিছুটা (আমার মনে হয়) কেবলমাত্র রেপোতে ঠেলা যায়। ডিভিসিএসে, বিভিন্ন ধরণের পরিবর্তন প্রচারের টোপোলজিস স্থাপন করা সম্ভব, যার মধ্যে কয়েকটি কেবল টানানো জড়িত। এটি সেটআপে আরও নমনীয়তা দেয়।
উদাহরণ
আলোচনার স্বার্থে আসুন আমরা বলতে পারি যে আপনার বিতরণ করা দলগুলি ডুকস ডিউক.ডি, ডিউক.ইস, ডিউক.এন, এবং ডিউক.এমএক্সে সিস্টেমগুলি ব্যবহার করে এবং আরও যে ডিউক.ডি যেখানে আমরা "ধন্য" রেপো রাখতে চাই। এই অনুমানগুলি দেওয়া, আমাকে উপরের তিনটি ডিভিসিএস পয়েন্টগুলি মনে রেখে আপনি স্থাপন করতে পারেন এমন বিভিন্ন টোপোলজির কয়েকটি সংখ্যার উদাহরণ লিখি।
0. সেন্ট্রালাইজড পুশ মডেল
Hg.duke.de এ একটি একক রেপো রাখুন এবং সমস্ত অবস্থানের বিকাশকারীদের ক্লোন করুন এবং এখান থেকে টানুন এবং পরিবর্তনগুলি এখানে ঠেলে দিন। এটি জার্মানির লোকদের জন্য কাজ করতে পারে তবে এটি সম্ভবত বিশ্বের অন্যান্য অঞ্চলের লোকদের জন্য সমস্যা হবে। সমস্ত ক্লোন, টানুন এবং ধাক্কা দেওয়া ক্রিয়াকলাপগুলি ধীর দীর্ঘ-দুরত্ব নেটওয়ার্ক লিঙ্কগুলি জুড়ে যাবে। এটি একটি ডিভিসিএস ঠিক একটি কেন্দ্রীয় সিস্টেমের মতো ব্যবহার করছে। এই সমস্যাটি আপনি সমাধান করার চেষ্টা করছেন।
1. প্রতিলিপি সঙ্গে কেন্দ্রিয় ধাক্কা
Hg.duke.de এ ধন্য রেপো রাখুন এবং hg.duke.cn, hg.duke.mx, এবং hg.duke.us এ প্রতিলিপি আছে বিকাশকারীরা তাদের স্থানীয় প্রতিলিপি থেকে ক্লোন করে hg.duke.de এ পরিবর্তনগুলি চাপান Hg.duke.de এ যখনই নতুন পরিবর্তনগুলি উপস্থিত হয়, একটি হুক চালায় যা তাদের প্রতিরূপে প্রচার করে। প্রতিলিপিগুলি অন্যথায় কেবল পঠনযোগ্য, সুতরাং কখনও কোনও মার্জ বা দ্বন্দ্ব থাকবে না।
উদাহরণস্বরূপ, আমি যদি মেক্সিকোতে বিকাশকারী হয়ে থাকি তবে আমি hg.duke.mx থেকে ক্লোন করব তবে hg.duke.de এ পরিবর্তনগুলি চাপব আমার পরিবর্তনগুলি ধাক্কা দেওয়ার আগে যদি অন্যান্য পরিবর্তনগুলিকে hg.duke.de এ ঠেলে দেওয়া হয় তবে আমার ধাক্কা বন্ধ হয়ে যাবে। অন্যান্য পরিবর্তনগুলি hg.duke.mx এ প্রতিলিপি করা হবে, সুতরাং আমি স্থানীয়ভাবে এই পরিবর্তনগুলি টানবো, একত্রীকরণ করব এবং তারপরে আবার hg.duke.de এ ধাক্কা দেওয়ার চেষ্টা করব।
এটির কিছু সুবিধা দেওয়া উচিত, যেহেতু বড় ক্লোন ক্রিয়াকলাপগুলি সমস্ত স্থানীয়ভাবে সম্পন্ন হয়। অন্য কোনও স্থানে কেন্দ্রীয় রেপোতে ঠেলাঠেলি খুব খারাপ হতে পারে না, যেহেতু পরিবর্তনগুলি তুলনামূলকভাবে অপ্রতুলভাবে ধাক্কা দেওয়া হয়, বর্ধিত পরিবর্তনগুলি সাধারণত মোটামুটি ছোট হয়। (বিশেষত মার্চুরিয়াল মূলত সংক্ষিপ্ততর আলাদা পাঠায়, পুরো ফাইল এবং তাদের ইতিহাস নয়))
মার্চুরিয়ালে, আপনি একটি অবস্থান থেকে টানতে স্থানীয় একটি রেপো সেট আপ করতে পারেন এবং .hg/hgrc
ফাইলে নীচের মতো কিছু রেখে অন্যটিতে চাপ দিতে পারেন :
[paths]
default = ssh://hg.duke.mx
default-push = ssh://hg.duke.de
2. সাধারণ পুল মডেল
আশীর্বাদী রেপো হিসাবে hg.duke.de এবং অন্যদের প্রতিরূপ হিসাবে চালিয়ে যাওয়া, আমরা ধাক্কার পরিবর্তে টান দিয়ে পরিবর্তনগুলি প্রচার করতে পারি। বিকাশকারীরা যথারীতি তাদের স্থানীয় প্রতিলিপি থেকে ক্লোন করুন এবং টানুন। যখন কোনও পরিবর্তন প্রস্তুত হয়, কোনও বিকাশকারী কিছু কেন্দ্রীয় পরিষেবাতে একটি টান অনুরোধ জমা দেয়, যা বিকাশকারীর রেপো থেকে hg.duke.de এ টান দেয় সংযুক্তির জন্য একটি নীতি প্রতিষ্ঠিত করা প্রয়োজন। উদাহরণস্বরূপ, যদি মার্জ বিরোধগুলি হয়, তবে অনুরোধটি প্রত্যাখ্যান করা যেতে পারে, বিকাশকারীকে টানা (স্থানীয় প্রতিলিপি থেকে) টানতে, মার্জ করতে এবং পুনরায় অনুরোধটি পুনরায় জমা দেওয়ার প্রয়োজন।
এই প্রচারটির বিকাশকারীদের অপেক্ষা না করার সুবিধা রয়েছে যখন পরিবর্তনগুলি প্রচার করা হচ্ছে। অবশ্যই, দেবটিকে এখনও টানার অনুরোধটির জন্য অভিনয়ের জন্য অপেক্ষা করতে হবে, তবে কমপক্ষে তিনি বা সে সময়ের মধ্যে অতিরিক্ত পরিবর্তনগুলিতে কাজ করতে পারেন।
প্রকারভেদ
বিভিন্ন গুচ্ছ রয়েছে যা প্রয়োগ করা যেতে পারে।
একটি পুল অনুরোধ জমা দেওয়ার কোড পর্যালোচনার জন্য উপযুক্ত সময়। পরিবর্তনগুলি প্রকাশিত হয়, এই অর্থে যে এগুলি প্রত্যেকের জন্য উপলব্ধ, কিন্তু তারা এখনও আশীর্বাদী রেপোতে সংহত হয়নি।
টানুন অনুরোধগুলি ম্যানুয়ালি বা কিছু স্বয়ংক্রিয় সিস্টেম দ্বারা কাজ করা যেতে পারে। একটি টান অনুরোধ প্রক্রিয়াকরণ সম্ভবত আশীর্বাদী রেপোগুলিতে পরিবর্তিত হতে পারে না, পরিবর্তে একটি অস্থায়ী মঞ্চে যেখানে বিল্ড এবং পরীক্ষার চক্র সম্পন্ন হয় সেখানে পরিবর্তিত হতে পারে। সমস্ত পরীক্ষা পাস করার পরেই পরিবর্তনটি আশীর্বাদী রেপোতে একীভূত হবে।
পুশ মডেলটির সাথে যারা আরও আরামদায়ক হয় তারা প্রতিরূপের পাশাপাশি প্রতিটি জায়গায় একটি স্থানীয় স্টেজিং রেপো স্থাপন করতে চাইতে পারে, যেমন: hg-stage.duke.mx, hg-stage.duke.cn ইত্যাদি। এতে আরও কিছুটা কাজ দরকার, যদিও, ডেভেলপারদের হিসাবে কেবল অন্যান্য স্থানীয় পরিবর্তনের বিরুদ্ধে মার্জ করতে হবে না, তবে কাউকে স্টেজিং রেপো থেকে আশীর্বাদী রেপোতে পরিবর্তনগুলি মার্জ করার জন্য দায়বদ্ধ হতে হবে। যদিও এটি সঠিক পরিস্থিতিতে কাজ করতে পারে এবং অটোমেশন দ্বারা সহায়তা করা যেতে পারে।
"স্বচ্ছতা"
এখন স্বচ্ছ প্রতিলিপি ইস্যুতে।
উপরোক্ত পরিস্থিতিগুলি দেখে আমি সত্যিই স্বচ্ছ প্রতিরূপের প্রয়োজন দেখতে পাচ্ছি না। সমস্ত রেপো প্রত্যেকের কাছে দৃশ্যমান এবং স্থানীয় প্রতিলিপি থেকে টানা / ক্লোনিং করার জন্য এবং একটি আশীর্বাদী রেপো বা স্থানীয় মঞ্চে স্থান দেওয়ার জন্য সম্মেলন রয়েছে।
আপনি যদি স্বচ্ছতা চান, আপনি লোকেরা তাদের অবস্থান অনুসারে ডিএনএস অনুসন্ধান ডোমেন সেট আপ করতে পারেন। স্থানীয় রেপ্লিকা এবং স্টেজিং রেপোগুলিকে কেবল "এইচজি" এবং "এইচজি-স্টেজ" হিসাবে উল্লেখ করা হবে এবং ডিএনএস সেটআপ এগুলি চীন এর বিকাশকারীদের জন্য hg.duke.cn এবং hg-stage.duke.cn এ সমাধান করবে এবং অনুরূপভাবে অন্যান্য স্থানে বিকাশকারী। তবে এটি কিছুটা যাদু এবং বিভ্রান্তিকর হতে পারে, এবং আমি সত্যিই মনে করি না এটি এতে আরও যুক্ত করে।
আমি আশা করি এটি আপনার প্রশ্নের উত্তর দেয়। আমি প্রতিক্রিয়া সহ অনেক স্বাধীনতা গ্রহণ করেছি, তবে আমার কাছে মনে হচ্ছে যে আমি উপরে বর্ণিত কৌশলগুলির ব্যবহারের মাধ্যমে আপনার পরিস্থিতি প্রতিকার করতে পারি।