একটি বড় টান অনুরোধ সঙ্গে ডিল


15

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

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

এমন একটি পরিস্থিতি মোকাবিলার সর্বোত্তম উপায় কী যেখানে একটি শাখা অন্যদের থেকে সত্যই দূরে? ভবিষ্যতে মাস্টার থেকে দূরে থাকা সংখ্যক কমিটগুলি কীভাবে আমরা শাখাগুলি এড়াতে পারি?


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

@ দেনাইথ এই বিশেষ পরিস্থিতিটি ব্যবসায়ের প্রসঙ্গে ছিল। ওপেন সোর্স প্রজেক্টে আপনার সর্বোত্তম পন্থাটি কী হবে সে সম্পর্কে আমি আগ্রহী।
শাটল 87

উত্তর:


12

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

এমন একটি পরিস্থিতি মোকাবিলার সর্বোত্তম উপায় কী যেখানে একটি শাখা অন্যদের থেকে সত্যই দূরে?

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

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

আক্ষরিক প্রশ্নের উত্তর দেওয়ার জন্য: এই ধরণের পরিস্থিতি মোকাবেলা করার সর্বোত্তম উপায় হ'ল সেই ধরণের পরিস্থিতিতে না।

ভবিষ্যতে মাস্টার থেকে দূরে থাকা সংখ্যক কমিটগুলি কীভাবে আমরা শাখাগুলি এড়াতে পারি?

নিশ্চিত হয়ে নিন যে প্রত্যেকে যে বিকাশকারীকে মার্জ না করে কয়েক মাস ধরে চলেছিল তারা তাদের যে সমস্যাটি করেছে তা ঠিক করতে হবে। নিশ্চিত হয়ে নিন যে প্রত্যেকেরই জানা যে ঘনঘন চেয়ে বেশি ঘন ঘন আয়ত্ত করা আরও সহজ, যেহেতু কম পরিবর্তনগুলির মানে দ্বন্দ্বের জন্য কম সুযোগ।

নিশ্চিত হন যে লোকেরা জানে যে তারা মাস্টার থেকে অন্য ব্যক্তির পরিবর্তনের সাথে আপ টু ডেট থাকতে পারে pull

"আপনি যদি প্রতিদিন মার্জ করেন তবে হঠাৎ আপনি কখনই সেই জায়গায় পৌঁছাতে পারবেন না যেখানে আপনার বিশাল সংঘাত রয়েছে যা সমাধান করা শক্ত।" - লিনাস টরভাল্ডস

সেই উক্তিটি গুগলে তিনি যে বক্তৃতা দিয়েছিলেন তা থেকে, এখানে প্রতিলিপি , এবং এখানে ভিডিওটি দেওয়া হয়েছে


2

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

যদি আপনার কাছে কিছু কমিট থাকে যে আপনি মার্জ করতে চান তবে তারা অন্যান্য কমিটের সাথে মিশ্রিত হয় যা উত্পাদন-প্রস্তুত নয়, তবে আমি 2 টি সম্ভাবনা দেখতে পাচ্ছি:

  1. নতুন শাখা তৈরি করুন, এবং চেরি ভাল কমিট বেছে নেবেন, মাস্টারের সাথে একীভূত হোন।
  2. শীর্ষে অবাঞ্ছিত প্রতিশ্রুতিগুলি পুনর্বাসনের চেষ্টা করুন (সম্ভবত নতুন শাখায় নিরাপদ থাকতে পারে)।

প্রতিরোধের পদ্ধতি হিসাবে, "মজাদার দলের সাথে এক সপ্তাহের মধ্যে একীভূত হয় না এমন এক মাসের জন্য পিজ্জা অর্ডার করবে" এর মতো কিছু মজার টিমের নিয়ম সংজ্ঞায়িত করার চেষ্টা করুন।


1

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

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

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


1

এখানে একটি সহজ সমাধান।

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

আমি এটি একটি উদাহরণ আকারে ভেঙে দিন।

আসুন: শাখা এ মাস্টার শাখা থেকে শাখা হতে হবে এ + = শাখা এ + নতুন বৈশিষ্ট্য 1 শাখা এ ++ = শাখা এ + নতুন বৈশিষ্ট্য 2 এবং আরও অনেক কিছু

আপনার যা করা দরকার তা হ'ল ফিরে যেতে হবে: শাখা এ +

শাখা এ + নিয়ে যান এবং এটি মাস্টারের সাথে একীভূত হন।

এখন শাখা এ ++ এ যান এবং এটি (মাস্টার + শাখা এ +) এর সাথে একীভূত হন।

আপনি চূড়ান্ত শাখায় পৌঁছানো অবধি পুনরাবৃত্তি করুন ... + + যা স্থিতিশীল।

এই পদ্ধতিটি প্রথমে পাল্টা স্বজ্ঞাত লাগতে পারে তবে আপনি যদি পৃথক পৃথক নতুন বৈশিষ্ট্যটি নিজের সাথে মাস্টারটির সাথে একীভূত করেন তবে মাস্টার শাখার মধ্যে " অতিরিক্ত প্রতিটি বৈশিষ্ট্য " যোগ করা সহজ হয়ে যায়

ভবিষ্যতে মাস্টার থেকে দূরে থাকা সংখ্যক কমিটগুলি কীভাবে আমরা শাখাগুলি এড়াতে পারি?

আমি মনে করি উপরের আমার সমাধানটি আপনাকে ভবিষ্যতের কোন পদ্ধতি গ্রহণ করা উচিত তা নির্দেশ করে indicates প্রতিটি শাখার জন্য প্রতিটি বৈশিষ্ট্য বা প্রতি টাস্ক পদ্ধতিতে যান।

আমি এর একটি পদ্ধতির ব্যবহারের পরামর্শ দেব:

প্রাক মাস্টার এবং মাস্টার

মাস্টার: চূড়ান্ত / উত্পাদন স্তর। প্রায়শই পরিবর্তন হয় না। সর্বদা স্থিতিশীল বলে বিবেচিত হয়

প্রাক-মাস্টার: এমন একটি অঞ্চল যেখানে বিদ্যমান কোডে একটি নতুন বৈশিষ্ট্য যুক্ত করা হয়েছে। বিদ্যমান কোড-বেসের সাথে কাজ করার জন্য পুরোপুরি পরীক্ষা করা হয় এবং এটি এমন জায়গা যেখানে অন্যান্য শাখাগুলি নতুন বৈশিষ্ট্য প্রয়োগের জন্য কাঁটাচামচ করতে পারে।

সংস্করণ-টার্গেটিংয়ের লক্ষ্যে আপনার বান্ডিলিং বৈশিষ্ট্যগুলি লক্ষ্য করে ও লক্ষ্য করা উচিত।

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

মাস্টারের বিপরীতে কোনও সংস্করণ বজায় রেখে, এটি "মাস্টার" স্থিতিশীল এবং উত্পাদন-সর্বদা প্রস্তুত রাখার একটি উপায়ও হতে পারে।


0

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

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

এটি কোডের মালিকানার প্রশ্নও উত্থাপন করে - আপনার দলের মধ্যে, পৃথক বিকাশকারীরা আলাদা আলাদা আলাদা আলাদা নিজস্ব নিজস্ব মালিকানা পান, বা আইটেমগুলি সম্পন্ন হয়েছে তা নিশ্চিত করার জন্য পুরো টিম একসাথে কাজ করে?

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

বিভিন্ন উপায়ে এটি একটি প্রক্রিয়া প্রশ্নে পরিণত হয়। সম্ভবত আপনার প্রয়োজনীয় প্রক্রিয়াটি দীর্ঘমেয়াদে, নিমজ্জিত শাখাগুলির জন্য পর্যায়ক্রমে (সাপ্তাহিক? মাসিক?) পরীক্ষা করা অন্তর্ভুক্ত করে। কিছু সরঞ্জাম দৃষ্টিভঙ্গি যাচাই করার জন্য এটি সহজ করে তোলে; উদাহরণস্বরূপ, গিথুব "শাখা" লিঙ্কটি দেখুন এবং এটি দেখায় যে প্রতিটি শাখার কতটা এগিয়ে / পিছনে রয়েছে।

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