"প্রায়শই" মার্জ করা ভাল বা সম্পূর্ণ হওয়ার পরে কেবল বৈশিষ্ট্য শাখাগুলির একটি বৃহত মার্জ করা?


40

বলুন একাধিক শাখা বিকাশ করা হচ্ছে, Aএবং Bপাশাপাশি একটি ইনক্রিমেন্টাল "বাগ ফিক্স" শাখা রয়েছে C

এখন Cইতিমধ্যে "সমাপ্ত" এবং মাস্টারের সাথে মিশে গেছে। Aএবং Bএখনও বিকাশে রয়েছে এবং এর আগে অন্য কোনও বাগ ফিক্স শাখাটি মাস্টারে মার্জ হওয়ার আগে ঠিক করা হবে না।

Cনতুন বৈশিষ্ট্য শাখায় যত তাড়াতাড়ি সম্ভব মার্জ করা ভাল ধারণা ? যাতে নতুন বৈশিষ্ট্যগুলি masterযথাসম্ভব কাছাকাছি থাকে? অথবা নতুন বৈশিষ্ট্যটি কেবল তাদের "দুনিয়াতে" বিকশিত হওয়ার পরে কেবলমাত্র মাস্টার হিসাবে মিশে যাওয়ার পরে আরও ভাল হয়ে যাওয়া উচিত?

যে কোনওভাবেই দ্বন্দ্ব থাকবে, তাই সেগুলি স্থির করতে সময় ব্যয় করা উচিত।



5
@ গ্যাঙ্ক্ট যা বৈশিষ্ট্যগুলি শাখাগুলি একটি প্রধান লাইনে মার্জ করার বিষয়ে রয়েছে, আমি ভাবছি যে "বৈশিষ্ট্যগুলির বিকাশ শীঘ্রই সমাধান করার জন্য" বৈশিষ্ট্য বিকাশকালে মূলটিকে ফিচারে মার্জ করা ভাল কিনা।
পল

1
@ পল ২৩, আমি বলব এটি একটি ব্যবহারিক প্রয়োজনীয়তা।
বারিন লরিটস 16

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

2
পরে "মার্জিন" খুব বেদনাদায়ক না হওয়ার জন্য আপনি "পর্যাপ্ত" থাকায় নিয়মিত মাস্টার থেকে মার্জ করতে চাইতে পারেন।
থরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


71

যতক্ষণ কোনও শাখা বেঁচে থাকে, ততই এটি প্রধান শাখা এবং মেসিয়ার থেকে বিচ্যুত করতে সক্ষম হয় এবং পরিশেষে শেষ হওয়ার পরে ফলাফলটি সংযুক্তি আরও জটিল হয়। ১০ টি বৃহত্তর দ্বন্দ্বের চেয়ে দশটি ছোট দ্বন্দ্ব সমাধান করা সহজ, এবং এটি সম্ভবত বিকাশকারীদের প্রচেষ্টা বা নষ্ট প্রচেষ্টা বাধা দিতে পারে। প্রদত্ত যে, আপনার masterমধ্যে একত্রী হওয়া উচিত Aএবং Bনিয়মিত; দিনে একবার একটি দুর্দান্ত সাধারণ সুপারিশ, যদিও আপনার শাখাগুলিতে আপনার প্রচুর ক্রিয়াকলাপ থাকলে আপনি দিনে একাধিকবার মার্জ করতে পারেন wish

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

যে কোনওভাবেই দ্বন্দ্ব থাকবে, তাই সেগুলি স্থির করতে সময় ব্যয় করা উচিত।

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


33
মার্জ বা রিবেস , যেমন রিবেসিং প্রায়শই একটি ক্লিনার কমিটের ইতিহাস তৈরি করে।
ক্রাইলিস -হান ধর্মঘট-

11
@ ক্রাইলিস: "শাখাগুলি মাল্টলিপল স্টোরিগুলি কভার করে" যদি বোঝানো হয় যে দুটি বিকাশকারী একই শাখায় কাজ করে তবে রিবেসিং বিপজ্জনক হতে পারে
মেরিটন -

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

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

1
@ পল 23 গুরুতরভাবে এ এবং বি কে মাস্টারকে বিতরণ করার আগে একটি নতুন ভাগ করা শাখায় সরবরাহ করার বিষয়টি গুরুত্ব সহকারে বিবেচনা করুন। যদি তারা উভয় মৌলিক ওভারহাল হয় তবে আপনি মাস্টারকে সংমিশ্রণ দেওয়ার আগে পরীক্ষার জন্য তাদের একসাথে চান want আপনি যদি আত্মবিশ্বাসী হন তবে আপনি একজনকে সরাসরি মাস্টারের কাছে পৌঁছে দিতে এবং অন্যটিকে একটি নতুন আপডেট হওয়া শাখায় সরবরাহ করতে পারেন। মার্জটি খারাপভাবে চলে যায় বা আপনার কোনও কিছুর পুনরায় নকশা তৈরি করার প্রয়োজনে আপনি সম্ভবত দ্বিতীয় বৈশিষ্ট্য থেকে মূল কোডটি দেখতে সক্ষম হতে চান।
সিনেম

11

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

আমি নিম্নলিখিত কৌশল অনুরূপ বিবেচনা করব

  1. যে কেউ এ, বি এর জন্য দায়ী, তার মাস্টারকে নিবিড়ভাবে পর্যবেক্ষণ করা উচিত এবং যে কোনও পরিবর্তনগুলিতে মার্জ করা উচিত।
  2. আরও ভাল, যদি আপনার অটোমেশনটি তৈরি এবং পরীক্ষা করা থাকে তবে এ, বি মাস্টারটিতে মার্জ করুন এবং রাতে পরীক্ষাগুলি পাস করুন তা নিশ্চিত করুন।
  3. আপনার উপর ভিত্তি করে অন্যান্য উত্তরে মন্তব্য করুন, দেখে মনে হচ্ছে A, B বিকাশ করতে কিছুটা সময় নিতে পারে। এই ক্ষেত্রে, আপনি এমনকি এ, বি একে অপরকে মার্জ করার বিষয়টিও বিবেচনা করতে পারেন যাতে শেষ পর্যন্ত আপনাকে উভয়কেই মাস্টারে ফেরত দেওয়ার ক্ষেত্রে বড় সমস্যা না হয়।
  4. উচ্চতর স্তরে, কেন আপনার দীর্ঘ বিকাশের 2 পৃথক লাইনের প্রয়োজন তা ভেবে দেখুন। আপনি কি আরও ছোট সংশ্লেষে ভাঙ্গতে পারবেন? আপনি কি আলাদা মাইক্রো পরিষেবাগুলিতে বিভক্ত হতে পারেন?

5

সাধারণত প্রায়শই একটি বৃহত্তর একের চেয়ে ভাল।

ছোট, আরও ঘন ঘন, টানার অনুরোধগুলি প্রায় সর্বদা ভাল।

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

একটি কনফিগারেশন পতাকা তৈরি করতে অতিরিক্ত ওভারহেড রয়েছে, তাই এটি ছোট বৈশিষ্ট্যগুলির পক্ষে এটি মূল্যবান নয়। তবে তারপরে আপনার টানার অনুরোধটি ছোট হবে।

তবে এমন পরিস্থিতি থাকতে পারে যেখানে বৈশিষ্ট্যটি একবারে প্রকাশ করতে হবে। তারপরেও সেই উদ্দেশ্যে তৈরি করা অন্য শাখায় ছোট টান অনুরোধগুলি করা আরও ভাল।

আমার বেশিরভাগ সহকর্মী হাহাকার করে যখন কেউ একটি বিশাল টান অনুরোধ তৈরি করে এবং বেশিরভাগ অংশে ঠিক তাই হয়।

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


1
বৈশিষ্ট্যযুক্ত পতাকাগুলি ব্যয়বহুল (45 মিনিটের মধ্যে 450 মিলিয়ন ডলার) হতে পারে। এই উদাহরণটি আঙ্কেল বব দ্বারাও উল্লেখ করা হয়েছে (তবে কোনও প্রযুক্তিগত ছাড়াই (যেমনটি প্রত্যাশা করা হবে))।
পিটার মর্টেনসেন

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

3

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


2
ওয়েল Aএবং Bকিভাবে আবেদন কাজ, তারা না এক মাসের মধ্যে "সম্পন্ন হয়েছে" হয় প্রধান ভিত্তিগত নতুন overhauls ধরে রাখুন। তবে এগুলি করার পূর্বে তারাও অকেজো ...
পল

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

1
এজন্য মাস্টার শাখায় যে কোনও পরিবর্তনের শীর্ষে আপনার স্থানীয়কে ছাড় দেওয়া দীর্ঘ মেয়াদে উন্নয়নের পক্ষে কার্যকর। আপনার কাজটি
এমনভাবে

2

সত্যিই দীর্ঘস্থায়ী পরিবর্তনের জন্য আরেকটি বিকল্প যা শেষ হয়ে যেতে পারে তবে ব্যবহারের জন্য প্রস্তুত নয় তা হ'ল তাদের একটি বৈশিষ্ট্যের পতাকার পিছনে রেখে দেওয়া যাতে তারা মাস্টারে মিশে যেতে পারে তবে কিছু ভাঙার ঝুঁকি থাকে না। তারপরে তারা যখন ব্যবহারের জন্য প্রস্তুত হবে তখন বৈশিষ্ট্যযুক্ত পতাকাটি সরানো যেতে পারে।


1
বৈশিষ্ট্যযুক্ত পতাকাগুলি = জম্বি কোড (পুনরুত্থিত হওয়া অবধি)?
পিটার মর্টেনসেন

@ পিটারমোরটেনসেন ওয়েল, আপনি যত তাড়াতাড়ি সম্ভব পতাকাগুলি সরিয়ে ফেলার লক্ষ্য রাখতে হবে তবে এটি কিছু পরিস্থিতিতে কার্যকর হতে পারে
কিওয়ার্টি

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