নতুন প্রকল্পগুলিতে মাস্টার্স করা কখন বন্ধ করব?


26

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

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

উত্তর:


23

অবিলম্বে।

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

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

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

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

শুরু থেকে সহজ এবং সামঞ্জস্যপূর্ণ শাখায় ভূমিকা ও নীতিগুলি কী

এই "নীতি পরিবর্তন সম্পর্কিত শাখা" শাখা প্যাটার্নগুলিতে দেখা যায় । প্রতিটি শাখার ভূমিকা থাকার ধারণাটি উন্নত এসসিএম শাখা কৌশলগুলিতে পড়তে পারে । এই দুটোই খুব ভাল পঠিত।


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

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

1
@ মিশেলটি আমি 'দেব' শাখাগুলি প্রচুর বার দেখেছি, তবে এর আগে কোনও "প্রথম মাস্টার" প্রসঙ্গে তাদের ব্যাখ্যা কখনও শুনিনি। আমি মনে করি আমি এটি ব্যবহার করব, ধন্যবাদ।
দ্রুগানস 8:34

13

মূলত দুটি পরিস্থিতি রয়েছে যেখানে আপনি সাধারণত শাখাগুলির সাথে কাজ শুরু করতে চান:

  • যখন আপনি বা আপনার দলটিকে একটি নতুন বৈশিষ্ট্য শুরু করতে হবে যার সামান্যতম সুযোগ রয়েছে পরের রিলিজে যুক্ত না হওয়ার (যা সম্ভবত প্রথম প্রকাশ হতে পারে), তারপরে একটি পৃথক বৈশিষ্ট্য শাখায় বিকাশ শুরু করুন

  • যখন আপনাকে সর্বশেষতম রিলিজে গুরুতর বাগের জন্য সংশোধন সরবরাহ করতে হবে এবং আপনি কেবলমাত্র সেগুলি সংশোধন করে একটি নতুন বাগফিক্স রিলিজ তৈরি করতে চান তবে কোনও নতুন বিকাশযুক্ত (এবং সম্ভবত অস্থির) বৈশিষ্ট্য নেই

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

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


12

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

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

সেখানে হয় গীত জন্য অন্যান্য শাখাবিন্যাস মডেল, কিন্তু তাদের অধিকাংশই পুরোনো কেন্দ্রীভূত এস সি এম মডেলের থেকে উদ্ভূত হয় এবং একটি DVCS পরিবেশে গুরুতর সমস্যা হতে পারে। আপনি আসলে Git-প্রবাহ এক্সটেনশান ব্যবহার করতে হবে না, এবং আপনি অগত্যা ঐ সমস্ত মুক্তি / hotfix / বৈশিষ্ট্য শাখা প্রয়োজন হবে না, কিন্তু বেয়ার হাড় হয় developএবং master, এবং অস্থির কোডে যায় develop


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

2
@ মাইলসআউট: নীতিগতভাবে এটি সত্য হলেও, শাখাটি ইতিমধ্যে উপস্থিত না হওয়া পর্যন্ত আপনি মার্জ করতে পারবেন না এবং প্রক্রিয়াটি নির্দেশ দেয় যে মাস্টার প্রতি প্রতিশ্রুতিবদ্ধ হওয়া উচিত একটি দ্রুত-ফরোয়ার্ড মার্জ be আমি যদি কিছু মিস করছি না তবে প্রাথমিক শূন্য প্রতিশ্রুতির একমাত্র বিকল্প হ'ল কিছু স্বেচ্ছাসেবীর বিকাশ বা মুক্তি শাখা শাখার মাস্টার বন্ধ করে দেওয়া হবে যার অর্থ তারা একই প্রতিশ্রুতিটি ভাগ করে নেবে, যা এমন কিছু যা আপনার ধারণা হওয়া উচিত এড়ানোর জন্য.
অ্যারোনআউট

1
আহ, এটা আসলে একটি ভাল পয়েন্ট। পোস্ট এবং মন্তব্য করতে +1।
মাইলস রাউথ

1

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

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


1

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

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

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

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


0

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

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