হটফিক্সগুলি পরিচালনা করার সময় একাধিক সক্রিয় প্রকাশের জন্য উপযুক্ত গিট ওয়ার্কফ্লো


30

আমি একটি গিট ওয়ার্কফ্লো নির্বাচন করার চেষ্টা করছি যা আমাদের পণ্যের জন্য সবচেয়ে উপযুক্ত। এখানে প্যারামিটারগুলি রয়েছে:

  • আমরা এক বছরে কয়েকটি বড় রিলিজ করি, আসুন সর্বাধিক 10 বলে
  • আমাদের একই সময়ে আমাদের পণ্যটির একাধিক সংস্করণ সক্রিয় রয়েছে (কিছু লোক ভি 10.1-তে থাকে, কিছু ভি 11। এ থাকে ইত্যাদি)
  • আমাদের একই সময়ে একাধিক রিলিজে কাজ করতে সক্ষম হওয়া দরকার (যাতে আমরা v12.1 এ কাজ করতে পারি, তবে আমরা যখন রিলিজের শেষে পৌঁছে যাচ্ছি আমরা একই সাথে v12.2 এ কাজ শুরু করব)
  • সমালোচনামূলক বাগগুলি পাওয়া গেলে আমাদের হটফিক্স রিলিজ করতে সক্ষম হওয়া প্রয়োজন

এখনও অবধি, এখানে কাজ করার জন্য আমার মনে হয় উপায়:

  • একক রিমোট রেপো ব্যবহার করা হয়
  • মাস্টার থেকে 12.1 শাখা তৈরি করুন
  • 12.1 এর উপর ভিত্তি করে বৈশিষ্ট্যগুলি শাখা তৈরি করুন, তাদের প্রতিশ্রুতিবদ্ধ করুন এবং পুনরায় 12.1 তে মার্জ করুন, পুশ করুন
  • আমাদের ভবিষ্যতের মুক্তির কাজ শুরু করার পরে, 12.1 এর ভিত্তিতে একটি নতুন শাখা 12.2 তৈরি করুন
  • তারপরে, 12.1-র জন্য কোনও বৈশিষ্ট্যটিতে কাজ করার পরে, 12.1 থেকে শাখা তৈরি করুন, পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন এবং 12.1 এবং 12.2 উভয় ক্ষেত্রে মার্জ করুন, পুশ করুন
  • 12.2 এর জন্য কোনও বৈশিষ্ট্যে কাজ করা থাকলে, 12.2 থেকে শাখা তৈরি করুন, পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন এবং কেবল 12.2-এ মিশ্রিত করুন, চাপুন
  • রিলিজ 12.1 শেষ হলে, এটি 12.1 এর সাথে মাস্টার এবং ট্যাগ মাস্টার শাখায় মার্জ করুন
  • যদি হটফিক্সের প্রয়োজন হয় তবে প্রাচীনতম রিলিজ শাখা থেকে একটি হটফিক্স শাখা তৈরি করুন যার এটির প্রয়োজন, পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ এবং সেই রিলিজ এবং ভবিষ্যতে প্রকাশের যেগুলি প্রভাবিত হতে পারে তার জন্য সমস্ত রিলিজ শাখায় ফিরে মিশ্রিত করুন; যদি সর্বশেষতম স্থিতিশীল প্রকাশের শাখাটি প্রভাবিত হয় তবে এটিকে মাস্টার হিসাবে মার্জ করুন।

আমার কয়েকটি উদ্বেগ রয়েছে:

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

আমি নির্দিষ্ট করা প্রয়োজনীয়তাগুলি বিবেচনা করে জিনিসগুলি সম্পাদন করার ভাল উপায়গুলি বা উপেক্ষা করার জন্য মন্তব্যগুলির প্রশংসা করা হয়।



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

যদি আপনাকে একই ফিক্সের সাথে একাধিক রিলিজ হট ফিক্স করার দরকার হয় তবে আপনার সম্ভবত প্রথমে প্রাচীনতম সংস্করণটি ঠিক করা উচিত এবং প্রতিটি রিলিজের জন্য ফিট করার জন্য আরও নতুনভাবে একত্রিত হওয়া উচিত। আপনি যদি নতুন থেকে পুরানো পর্যন্ত কাজ করেন তবে আপনি পরবর্তী প্রকাশগুলি থেকে নির্ভরতাগুলি টানতে ঝুঁকিপূর্ণ যা জিনিসগুলিকে জটিল করে তুলবে।
axel

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

উত্তর:


9

আপনি প্রতিটি বড় রিলিজ (12.0.0) এ ব্রাঞ্চ করছেন বলে মনে হচ্ছে, তারপরে প্রত্যেকের (12.1.0) এবং হট ফিক্সগুলি (12.2.1) এর সামান্য আপডেট থাকবে having সঠিক?

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

আমি গিটফ্লোতে থাকব এবং কয়েকটি সংশোধন করব;

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

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

আপনি যদি একই সাথে কয়েকটি ভবিষ্যতের প্রধান প্রকাশের জন্য বৈশিষ্ট্যগুলিতে সমান্তরালভাবে কাজ করছেন তবে সম্ভবত আপনাকে পরবর্তী (13) বিকাশ এবং পরবর্তী সংস্করণগুলির জন্য কিছু (14, 15) অতিরিক্ত "বিকাশ-এন" শাখায় রাখতে হবে । এটি সাধারণভাবে বজায় রাখা খুব কঠিন বলে মনে হয় তবে এটি সম্ভব হবে be


3

দেখে মনে হচ্ছে যে আপনার মূল সমস্যার ( «আমাদের একই সময়ে একাধিক রিলিজে কাজ করতে সক্ষম হওয়া দরকার [...]» ) একটি হ্রাস পাচ্ছেgit worktree add <path> [<branch>]

গিট সংগ্রহস্থল একাধিক কার্যনির্বাহী গাছকে সমর্থন করতে পারে, আপনাকে একবারে একাধিক শাখা পরীক্ষা করার অনুমতি দেয়।
সহ git worktree add, একটি নতুন কার্যকরী গাছ সংগ্রহস্থলের সাথে যুক্ত।

এই নতুন কার্যকারী গাছটিকে "লিঙ্কযুক্ত ওয়ার্কিং ট্রি" বলা হয় " git init" বা " git clone" দ্বারা প্রস্তুত "মূল কার্যকারী গাছ" এর বিপরীতে
একটি সংগ্রহস্থলের একটি প্রধান কার্যকারী গাছ থাকে (যদি এটি একটি খালি সংগ্রহস্থল না হয়) এবং শূন্য বা আরও সংযুক্ত ওয়ার্কিং ট্রি থাকে।

এ সম্পর্কে একটি বিশদ পরিচয়ের জন্য এই উত্তরটি দেখুন git worktree


1

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

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

এটি আপনার পুরানো সংস্করণগুলিতে কোন ধরণের পরিবর্তন আনছে তা নির্ভর করে। যদি কেবল বাগফিক্সিং হয় তবে একত্রীকরণে তুলনামূলকভাবে সহজ। আপনি যদি নতুন বৈশিষ্ট্য যুক্ত করার চেষ্টা করেন তবে তা শক্ত হবে।


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