কীভাবে জটিল ব্রাঞ্চিংয়ের বাস্তবতা থেকে একটি একক-শাখার মডেলটিতে রূপান্তর করা যায়?


15

বড় সংস্থাগুলিতে, জলপ্রপাতের পদ্ধতি ব্যবহার করে সাধারণত খুব জটিল শাখা কাঠামোগুলি হয় (ওরফে শাখা স্পেজেটি )।

জটিল ব্রাঞ্চিংয়ের বাস্তবতা থেকে ট্রাঙ্ক-ভিত্তিক উন্নয়নের মতো একক-শাখা মডেলটিতে রূপান্তর করতে কোন শাখা কৌশলগুলি ব্যবহার করা যেতে পারে?

হালনাগাদ:

পরিষ্কার করার জন্য, প্রশ্নটি হ'ল মাইগ্রেশন / ট্রানজিশন সম্পর্কে, এর আগে এবং পরবর্তী পদ্ধতিগুলি সম্পর্কে নয়, যা বেশ পরিষ্কার।

এটি সত্যই "ইওবিতে আজ হতে পারে না আমরা এখনও গাজিলিয়ন শাখা নিয়ে জলপ্রপাত কিন্তু কাল 1 ম জিনিসটি আমরা ট্রাঙ্ক ভিত্তিক, একক-শাখা সিআইতে স্থানান্তর করব"।


আপনি জলপ্রপাত হতে পারেন এবং স্পষ্টভাবে সংজ্ঞাবদ্ধ এবং শাখা প্রশাখার প্রয়োগ করতে পারেন বা চটচটে হতে পারেন এবং একটি গাজিলিয়ন শাখা রাখতে পারেন (অল-ফ্রি!)। একটি অন্যকে বোঝায় না।
আলেকজান্দ্রি

@ আলেকজান্দ্রে প্রশ্ন সংস্থার প্রসঙ্গটি স্পষ্ট করে: অনেকগুলি শাখা থেকে একটিতে স্থানান্তরিত।
ড্যান কর্নিলিস্কু

1
আপনি প্রশ্নটি মূল থেকে সম্পূর্ণ পরিবর্তন করেছেন ... উত্তরগুলির অর্ধেককে অপ্রাসঙ্গিক করে তুলছেন।
ইভিজেনি

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

1
হাই @ ড্যানকর্নিলিস্কু আমি এ্যাজজিনির মন্তব্যের পরে আমার সম্পাদনা করেছি, সুতরাং এটি আমার দিকে তুলে ধরার চেষ্টা করবেন না;) আপনার আসল প্রশ্নটিতে সফ্টওয়্যার বিকাশ প্রক্রিয়া, ব্রাঞ্চিং মডেল এবং ডিভোপস অনুশীলন সম্পর্কিত উপাদান রয়েছে। লোকেরা তাদের যে প্রশ্নটি সম্পর্কে ভেবেছিল তার জবাব দিয়েছিল। তারপরে আপনি আপনার প্রশ্নটি পরিবর্তন করেছেন (# 2 সম্পাদনা করুন: devops.stackexchange.com/revisions/122/2 ) এবং সেগুলির কয়েকটি উত্তর অপ্রাসঙ্গিক করে তুলেছেন।
আলেকজান্দ্রে

উত্তর:


11

আপনি জলপ্রপাতের কথা উল্লেখ করার কারণে, আমি বুঝতে পেরেছি যে আপনি যে অসংখ্য শাখাটিকে নির্দেশ দিচ্ছেন সেটি রক্ষণাবেক্ষণ-শাখার চেয়ে বৈশিষ্ট্য-শাখা হিসাবে রয়েছে।

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

সুতরাং, প্রথম পদক্ষেপগুলিতে একটি সংগ্রহস্থল বিভাজন করা উচিত :

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

  2. পদক্ষেপ 1 সম্পূর্ণ হয়ে গেলে, কোনও একক শাখা কেবলমাত্র একটি শীর্ষ-স্তরের ডিরেক্টরিতে ফাইলগুলিকে স্পর্শ করতে পারে তা প্রয়োজনীয় করে শাখা-স্প্যাগেটি শৃঙ্খলা পরিমার্জন করুন ।

  3. যখন প্রতিটি শাখা পদক্ষেপ 2 মেনে চলে, বিভাজনটি সম্পাদন কর। বিকাশকারীরা কেবল মাত্র প্রথম স্তরের পথটি সরিয়ে একক ভাণ্ডারে প্যাচে তাদের মুলতুবি পরিবর্তনগুলি সহজেই রূপান্তর করতে পারেন।

এখন যে বিভাজনটি সম্পন্ন হয়েছে, আপনি নিজেই শাখা শৃঙ্খলা নিয়ে কাজ শুরু করতে পারেন।

  1. স্বল্পকালীন শাখার বিকাশে সহায়তা করার জন্য প্রোগ্রামিং কৌশলগুলি প্রবর্তন করুন। শাখাগুলি স্বল্পস্থায়ী হওয়া সমস্ত একক-শাখা পদ্ধতিগুলির একটি গুরুত্বপূর্ণ দিক। তাদের লক্ষ্যগুলির মধ্যে একটি হ'ল দীর্ঘকালীন শাখাগুলি মার্জ করা ও ডিবাগ করার জন্য ব্যয় করা সময় হ্রাস করা। একটি জনপ্রিয় কৌশল হ'ল "বৈশিষ্ট্য-পতাকা" প্রবর্তন যেখানে একটি "ফ্যাক্টরি" কোনও অবজেক্টের .তিহাসিক সংস্করণ বা প্রাথমিকভাবে আংশিকভাবে বিকশিত, সেই অবজেক্টের সংস্করণ তৈরি করতে একটি কনফিগারেশন পতাকা ব্যবহার করে।

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

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


সঠিক: এই শাখাগুলি বৈশিষ্ট্যযুক্ত এবং (বিভিন্ন স্তরের) সংহত শাখা।
ড্যান কর্নিলিস্কু

1
প্রায় 1: বিভক্ত হওয়ার পরেও, এটি উল্লেখযোগ্য হতে পারে আপনি এখনও রেপো ব্যবহারের সাথে পুরো স্প্যাগেটি-জাতীয় দৃশ্য পেতে পারেন
4

তবে গুগল এবং এফবি ট্রাঙ্ক ভিত্তিক মনোরপোস ব্যবহার করে ...
AnoE

6

অন্য কোনও কিছুর কাছে স্থানান্তরিত করার সময়, আপনাকে কেবল দুটি জিনিস নির্ধারণ করতে হবে:

  1. আপনার লক্ষ্য কি?
  2. কীভাবে সেখানে যাবেন (মাইগ্রেশন পরিকল্পনা)

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

সম্ভাবনাগুলি হ'ল, আপনি যে সমস্ত শাখা পরিবেশন করছেন বা কোনও উদ্দেশ্যে পরিবেশন করেছেন। একটি সুস্পষ্টভাবে নির্ধারিত লক্ষ্য প্রক্রিয়া ব্যতীত লোকেরা তাদের পক্ষে যা কাজ করে তা তাদের পক্ষে সবচেয়ে ভাল উপযুক্ত (এবং যথাযথভাবে) কার্যকর রাখবে।

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

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

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

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

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

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

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


3

মাল্টি-ব্রাঞ্চযুক্ত হাইড্রা রিপোজিটরিটিকে একটি একক ব্রাঞ্চ মডেলে রূপান্তর করা আসলে খুব সহজ।

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

যতক্ষণ না আপনি আপনার সমস্ত শাখাকে একীভূত করতে, সমস্ত বিবাদকে সমাধান করতে এবং আপনার কাছে কেবল একটি একক শাখা অবশিষ্ট না রেখে এই প্রক্রিয়াটি চালিয়ে যান।

শুরু করতে আপনি এই সাধারণ রূপরেখাটি অনুসরণ করতে পারেন:

  1. আপনার মাস্টার / ট্রাঙ্ক শাখার একটি অনুলিপি তৈরি করুন এবং কল করুন temp_master
  2. মাস্টার / ট্রাঙ্ক থেকে সর্বাধিক বিচ্যুতি সহ শাখাটি সন্ধান করুন।
  3. শাখাটি সংরক্ষণ, সংরক্ষণাগারভুক্ত বা মুছতে হবে কিনা তা নির্ধারণ করুন।
    1. যদি এটি রাখা দরকার হয় তবে 4 ধাপে চালিয়ে যান।
    2. যদি এটি মুছতে বা সংরক্ষণাগারভুক্ত করা দরকার হয়, এটি মুছুন এবং সংরক্ষণাগারভুক্ত করুন এবং তারপরে দ্বিতীয় ধাপে ফিরে যান।
  4. নূন্যতম বিচ্যুতি সহ পরবর্তী শাখাটি সন্ধান করতে পদক্ষেপ 2 পুনরাবৃত্তি করুন।
  5. পদক্ষেপ 2 এবং 3 ধাপে পাওয়া দুটি শাখা মার্জ করুন, সমস্ত দ্বন্দ্ব সমাধান করুন।
  6. এই দুটি শাখা আপনার temp_masterশাখায় মার্জ করুন ।
  7. টেম্প_মাস্টার কোডে কোডটি পরীক্ষা করুন যে এটি সংকলন করে, এবং তৈরি করে এবং আপনার সন্তুষ্টির জন্য অন্য কোনও স্বয়ংক্রিয় পরীক্ষা চালায় কিনা তা পরীক্ষা করে দেখুন।
    1. যদি কোনও পরীক্ষা ব্যর্থ হয়, ফিরে যান, কেন তা খুঁজে বের করুন এবং সেগুলি ঠিক করুন এবং প্রক্রিয়াটি পুনরাবৃত্তি করুন।
    2. যদি পরীক্ষা এখনও ব্যর্থ হয়, তবে কাজ করতে দুটি পৃথক শাখা বেছে নিন pick
  8. আপনার কেবল দুটি শাখা, আপনার মাস্টার / ট্রাঙ্ক এবং না হওয়া পর্যন্ত পদক্ষেপগুলি 2 - 7 এর পুনরাবৃত্তি করুন temp_master
  9. শেষ অবধি, temp_masterমাস্টার / ট্রাঙ্কে মার্জ করুন এবং আপনার নতুন একক-শাখা মডেলের সাথে লাইভ করুন।

-4

সাধারণ ৪ সপ্তাহের স্প্রিন্ট চক্রযুক্ত বৃহত সংস্থাগুলির জন্য গিট-ফ্লো পছন্দ হয় কারণ আপনি বৈশিষ্ট্য শাখার সুবিধা পাবেন মাস্টার উত্পাদন প্রস্তুত শাখা সর্বদা শুল্কযোগ্য এছাড়াও দুটি মাস্টার চক্র অনুসরণ করে মাস্টার শাখা অযাচিত কমিটস থেকে পরিষ্কার রাখা হয় (বৈশিষ্ট্য থেকে Developএবং Developশাখা থেকে) মাস্টার).

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


আপনি এই উত্তরটি আরও সহজ করে বোঝার জন্য উন্নত করতে পারেন?
ইভজেনি

প্রশ্নটি বিশেষত এটি মাইগ্রেশন / ট্রানজিশন সম্পর্কেই বলেছে, এর আগে এবং পরবর্তী পদ্ধতিগুলি সম্পর্কে নয় । আপনি এখানে উত্তরোক্তদের সম্বোধন করছেন বলে মনে হচ্ছে।
টবি স্পিড 9

@ টবিস্পাইট এই সম্পাদনা দ্বারা প্রশ্নটি মূল থেকে পরিবর্তিত হয়েছিল, এই কারণেই এই উত্তরটি প্রাসঙ্গিক হিসাবে ব্যবহৃত হত তবে আর হয় না।
ইভজেনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.