আপনি একটি শাখা বা ট্রাঙ্কে উন্নয়ন চালিয়ে যান? [বন্ধ]


170

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


3
অবাক হচ্ছেন যদি সোর্স কন্ট্রোল ম্যানেজমেন্টের পক্ষে মোটামুটি জেনারিক হয় তবে এসএনএন ছাড়াই এটি আবার চালু করা যায়?
স্কট সাদ

4
এটি সেই "ধর্মীয়" প্রশ্নের মধ্যে একটি বলে মনে হচ্ছে।
জেমস ম্যাকমাহন 16

@ জেমস ম্যাকমাহন - এটি আরও সত্য যে দুটি পারস্পরিক একচেটিয়া সেরা অনুশীলন রয়েছে, তবে কিছু লোকেরা মনে করেন কেবল একটি আছে। এটি কোনও সাহায্য করে না যে SO আপনার কাছে একটি সঠিক উত্তর চায়।
কেন লিউ

উত্তর:


151

আমি একটি বৃহত বাণিজ্যিক অ্যাপ্লিকেশন দিয়ে উভয় পদ্ধতি চেষ্টা করেছি।

কোন পদ্ধতিটি উত্তম তা উত্তরটি আপনার সঠিক পরিস্থিতির উপর নির্ভর করে তবে আমার সামগ্রিক অভিজ্ঞতা এখনও পর্যন্ত যা দেখিয়েছে তা আমি লিখব।

সামগ্রিকভাবে আরও ভাল পদ্ধতি (আমার অভিজ্ঞতায়): ট্রাঙ্কটি সর্বদা স্থিতিশীল হওয়া উচিত।

এই পদ্ধতির কয়েকটি গাইডলাইন এবং সুবিধাগুলি এখানে রয়েছে:

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

যদি আপনি বিপরীতে কাজ করার চেষ্টা করেন এবং ট্রাঙ্কে আপনার সমস্ত বিকাশ করেন তবে আপনার নিম্নলিখিত সমস্যাগুলি থাকবে:

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

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

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


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


35
দুঃখিত, তবে এই উত্তরটি ভুল। সমস্ত উন্নয়ন ট্রাঙ্ক মধ্যে হওয়া উচিত। আপনার যদি 'স্পাইক' বা কিছু 'ঝুঁকিপূর্ণ' বৈশিষ্ট্য রয়েছে তবে একটি বৈশিষ্ট্য শাখা তৈরি করুন। উত্পাদনে পণ্যটির প্রতিটি সংস্করণের জন্য শাখাগুলি মূল করা উচিত, বা যদি একটি সংস্করণ থাকে তবে একটি ইন্টিগ্রেশন শাখা ব্যবহার করুন।
মিচ গম 6

52
আমি দাবি করছিলাম না যে এটিই ছিল একমাত্র উপায়, কেবল এটিই ভাল উপায়। অবশ্যই যদি আপনি মনে করেন যে আমি কেন ভুল বলে মনে করি যে আপনার যথেষ্ট কারণ রয়েছে তবে আপনার এটি পোস্ট করা উচিত। কমপক্ষে আমার উত্তরটি ন্যায়সঙ্গত।
ব্রায়ান আর বন্ডি

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

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

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

66

আমি উভয় কৌশল নিয়ে কাজ করেছি এবং আমি বলব যে ট্রাঙ্কে বিকাশ এবং রিলিজ হিসাবে স্থিতিশীল পয়েন্টগুলি বন্ধ করা সবচেয়ে ভাল উপায়।

উপরের লোকেরা যারা আপত্তি জানিয়েছে যে আপনার কাছে থাকবে:

  • প্রতিদিনের বিল্ডগুলির জন্য নিয়মিত বিল্ড সমস্যা
  • যখন এএ বিকাশকারী প্রকল্পের অন্য সমস্ত লোকের জন্য একটি সমস্যা করে তখন উত্পাদনশীলতা হ্রাস পায়

সম্ভবত ধারাবাহিক সংহতকরণ কৌশল ব্যবহার করা হয়নি।

এটি সত্য যে আপনি দিনের বেলাতে বেশ কয়েকটি পরীক্ষা তৈরি না করে প্রতি ঘন্টা বা তার পরে একবার বলুন, এই সমস্যাগুলির জন্য নিজেকে উন্মুক্ত করে দেবে যা দ্রুত বিকাশের গতি শ্বাসরোধ করবে।

দিনের বেলাতে বেশ কয়েকটি পরীক্ষা করা তাড়াতাড়ি মূল কোড বেসের আপডেটগুলিতে ভাঁজ হয় যাতে অন্যরা এটি ব্যবহার করতে পারে এবং কেউ যদি বিল্ডটি ভেঙে ফেলেছে তবে সে আপনাকে বাড়ীতে যাওয়ার আগে এটি ঠিক করতে পারে সে সম্পর্কেও আপনাকে সতর্ক করে দেয়।

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

অবিচ্ছিন্ন একীকরণের বিষয়ে মার্টিন ফওলারের কাগজটি পড়ুন । আমরা একটি বড় প্রকল্পের জন্য আমাদের নিজস্ব সিস্টেমটি ঘূর্ণিত করেছি (3,000 কেএসএলসিএফ) প্রায় পজিক্স শের 2,000 লাইনে।


1
'একটানা ইন্টিগ্রেশন' এর সম্ভাবনাটি কী করতে পারে যে একটি দল তাদের বৈশিষ্ট্যটিতে দেরি করে এবং পুরো রিলিজ চক্রটি বিলম্ব করে? 'আপনার জন্য' যাওয়ার সবচেয়ে ভাল উপায়! প্রতিদিন বেশ কয়েকটি বিল্ড করা আপনার জানা ব্যতীত অন্য কোনও সম্ভাব্য সমস্যার সমাধান করে না! আপনার যুক্তি প্রমাণ দেয় না যে এটি একটি ভাল উপায় (যদিও আমি সাধারণত এটিই করি)।
জেচ

এই উত্তরটির জন্য সিআই প্রয়োজনীয়, তবে ব্রায়ানের জন্যও।
জৈঙ্গদেব

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

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

1
@ ওল্ফ আপনি বিভ্রান্তির সাথে বিভ্রান্ত করছেন, লোকেরা পণ্য তৈরি করে, সকলেই ডুপের পক্ষে কাজ করে না
কল্পনােশ সোনি

36

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

আমি বুঝতে পারি এর অন্যান্য উপায় আছে - আমি এটি অতীতে এটি করেছি in


19

উভয়।

ট্রাঙ্কটি বেশিরভাগ বিকাশের জন্য ব্যবহৃত হয়। তবে এটি আশা করা যায় যে ট্রাঙ্কের কোনও চেক-ইন এটি ভঙ্গ করবে না তা নিশ্চিত করার জন্য সর্বাত্মক প্রচেষ্টা করা হবে। (একটি স্বয়ংক্রিয় বিল্ড এবং পরীক্ষা সিস্টেম দ্বারা আংশিকভাবে যাচাই করা হয়েছে)

রিলিজগুলি তাদের নিজস্ব ডিরেক্টরিতে রক্ষণাবেক্ষণ করা হয়, কেবলমাত্র তাদের উপর বাগ ফিক্সগুলি তৈরি করা হয় (এবং তারপরে ট্রাঙ্কে মিশে যায়)।

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


3
আমি এই নিয়ে আপনার সাথে রয়েছি ... বিকাশকারীরা যে সমস্ত সময় কেবল একটি পদ্ধতিতে লেগে থাকে সমস্যা!
পৌঁছান

14

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

বিকল্প পাঠ বিকল্প পাঠ

আমি এটা পছন্দ করি কারণ:

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

এবং কেবলমাত্র এটি যথেষ্ট পরিমাণে স্পষ্ট না হলে: "ওয়ার্ক ব্রাঞ্চ (এসএস)" তে বিকাশ সম্পন্ন হয়, ট্রাঙ্কটি ডোন (রিলিজযোগ্য) কোডের জন্য ব্যবহৃত হয়। সমস্ত বিবরণের জন্য একাধিক চতুর দলগুলির জন্য সংস্করণ নিয়ন্ত্রণ পরীক্ষা করুন।


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

@ জ্যাচ ফিচার টিমে সংগঠিত ৫ টি দল নিয়ে এটি একটি বিশাল প্রকল্পে আমাদের পক্ষে ভাল কাজ করেছে, যদিও আমি অস্বীকার করছি না যে মার্জ করার কোনও ব্যয় হয়েছে।
পাস্কাল থিভেন্ট

11

একটি উন্নয়ন প্রক্রিয়া সম্পর্কে একটি ভাল রেফারেন্স যা ট্রাঙ্ককে স্থিতিশীল রাখে এবং শাখাগুলিতে সমস্ত কাজ করে তা ডিভমডের আলটিমেট কোয়ালিটি ডেভলপমেন্ট সিস্টেম । একটি দ্রুত সংক্ষিপ্তসার:

  • সমস্ত কাজ করা অবশ্যই এর সাথে টিকিট যুক্ত থাকতে হবে
  • প্রতিটি টিকিটের জন্য একটি নতুন শাখা তৈরি করা হয় যেখানে সেই টিকিটের জন্য কাজ করা হয়
  • অন্য শাখার পরিবর্তনগুলি মূল প্রকল্পের ট্রাঙ্কে আর কোনও প্রকল্পের সদস্য দ্বারা পর্যালোচনা না করে মার্জ করা হবে না

তারা এর জন্য এসভিএন ব্যবহার করে তবে বিতরণকৃত সংস্করণ নিয়ন্ত্রণ সিস্টেমগুলির সাথে এটি সহজেই করা যায়।


10

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

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

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


8

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


5

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

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

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


4

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

কোনও রক্ষণাবেক্ষণ শাখা কেবল তখনই তৈরি করা উচিত যখন কোডটির মধ্যে সংঘর্ষের সম্ভাবনা (বা নিশ্চিততা) থাকে যা অন্য কোনওভাবে পরিচালনা করা কঠিন difficult যদি শাখাটি কোনও লজিস্টিকাল সমস্যা সমাধান না করে, এটি একটি তৈরি করবে।

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


4

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

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

কিছু শাখা এত দিন ধরে বিকাশাধীন রয়েছে যে অবশেষে ট্রাঙ্কে ফিরে মার্জ হওয়ার সময় আপনাকে অবাক করে দেওয়ার সংখ্যা হ্রাস করার জন্য আপনাকে ট্রাঙ্ক থেকে শাখায় মার্জ করার অনুমতি দিতে হবে।

আপনার যদি বিকাশকারীদের একটি বিশাল গ্রুপ থাকে এবং আপনার পরিস্থিতিতে কী কাজ করে তার জন্য অনুভূতি অর্জন করতে পারেন তবে আপনাকে পরীক্ষা করতে হবে। এখানে মাইক্রোসফ্টের একটি পৃষ্ঠা রয়েছে যা কিছুটা কার্যকর হতে পারে: http://msdn.microsoft.com/en-us/library/aa730834(VS.80).aspx


4

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


1
শাখায় কোনও ডাটাবেসের নিয়ম কেন পরিবর্তন হয় না?
বজর্ন রিপেন

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

2

যদি আপনি একটি মুক্তির চক্র, বড় বৈশিষ্ট্যটির মধ্য দিয়ে কাজ করে যাচ্ছেন তবে আপনি একটি শাখায় মেরুন হয়ে যাবেন। অন্যথায় আমরা ট্রাঙ্কে কাজ করি, এবং আমরা তৈরি করার মুহুর্তে প্রতিটি উত্পাদন মুক্তির জন্য শাখা করি।

পূর্ববর্তী উত্পাদনের বিল্ডগুলি সেই সময়কে পুরানো_ প্রডাকশন_এ সরানো হয় এবং বর্তমান উত্সব রিলিজ সর্বদা কেবল উত্পাদন। আমাদের সমস্ত বিল্ড সার্ভার উত্পাদন সম্পর্কে জানে যে কীভাবে উত্পাদন শাখা মোতায়েন করা যায় এবং আমরা একটি লাঠি চালিত করি যা একটি জোর ট্রিগার দিয়ে বন্ধ করে দেয়।


2

আমরা ট্রাঙ্ক = বর্তমান বিকাশ প্রবাহ, শাখা = মুক্তি (গুলি) পদ্ধতির অনুসরণ করি follow গ্রাহককে ছেড়ে দেওয়ার সময় আমরা ট্রাঙ্কটি শাখা করি এবং ট্রাঙ্কটি কেবল সামনে রেখে চলেছি। আপনি কতগুলি মুক্তি সমর্থন করতে প্রস্তুত তা নিয়ে আপনাকে সিদ্ধান্ত নেওয়া দরকার। আপনি যত বেশি সংযুক্তিকে সমর্থন করবেন আপনি ত্রুটি সংশোধনগুলিতে করছেন। আমরা চেষ্টা করি এবং আমাদের গ্রাহকদের ট্রাঙ্কের পিছনে 2 টিরও বেশি রিলিজ না করি। (উদা। দেব = 1.3, সমর্থিত রিলিজ 1.2 এবং 1.1)।


1

ট্রাঙ্ক সাধারণত প্রধান বিকাশ লাইন।

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


1

ট্রাঙ্কটি সাধারণত আপনার প্রধান বিকাশের উত্স হওয়া উচিত। অন্যথায় আপনি নতুন বৈশিষ্ট্যে মার্জ করে প্রচুর সময় ব্যয় করবেন। আমি এটি অন্য উপায়ে করতে দেখেছি এবং এটি সাধারণত শেষ মুহুর্তের একীকরণের মাথা ব্যাথার দিকে নিয়ে যায়।

আমরা আমাদের প্রকাশগুলি লেবেল করি যাতে আমরা সক্রিয় বিকাশ ছাড়াই উত্পাদন জরুরী পরিস্থিতিতে দ্রুত প্রতিক্রিয়া জানাতে পারি।


1

আমার জন্য, এটি আমি যে সফটওয়্যারটি ব্যবহার করছি তার উপর নির্ভর করে।

সিভিএসের অধীনে, আমি কেবল "ট্রাঙ্ক" এ কাজ করব এবং কখনই ট্যাগ / শাখা ট্যাগ করব না, কারণ অন্যথায় এটি করা সত্যিই বেদনাদায়ক ছিল।

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

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


1

এটি সত্যই নির্ভর করে যে আপনার সংস্থা / দল ভার্সনগুলি কীভাবে পরিচালনা করে এবং আপনি কোন এসসিএম ব্যবহার করেন।

  • এরপরের কী (পরবর্তী প্রকাশে) সহজেই পরিকল্পনা করা যেতে পারে, আপনি ট্রাঙ্কে বিকাশের সাথে আরও ভাল। শাখা পরিচালনায় আরও সময় এবং সংস্থান লাগে। তবে পরবর্তী যদি সহজে পরিকল্পনা না করা যায় (বড় সংস্থাগুলিতে সর্বদা ঘটে), আপনি সম্ভবত শাখা (বহু বা দশকে) না দিয়ে চেরি পিকিং কমিট (শত / হাজার) সমাপ্ত করবেন।
  • গিট বা মার্কুরিয়ালের সাথে, শাখাগুলি পরিচালনা করা সিভিএস এবং বিপর্যয়ের চেয়ে অনেক সহজ। আমি স্থিতিশীল ট্রাঙ্ক / বিষয় শাখার পদ্ধতি পদ্ধতিতে যাব। Git.git টিম এটি ব্যবহার করে। পড়ুন: http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html
  • সাবভারশন সহ, আমি প্রথমে ট্র্যাঙ্ক-ইন-ট্র্যাঙ্ক পদ্ধতি পদ্ধতি প্রয়োগ করেছি। প্রকাশের তারিখটি আসার সময় বেশ কিছু কাজ ছিল কারণ প্রতিবার আমাকে চেরি বাছাইয়ের কাজ করতে হয়েছিল (আমার সংস্থাটি পরিকল্পনায় ভাল নয়)। আমি এখন সাবভারশনে এক ধরণের বিশেষজ্ঞ এবং সাবভারসিওনে শাখাগুলি পরিচালনা করার বিষয়ে বেশ ভাল জানি, তাই আমি স্থিতিশীল ট্রাঙ্ক / বিষয় শাখার পদ্ধতি পদ্ধতিতে চলেছি। এটি আগের চেয়ে অনেক ভাল কাজ করে। এখন আমি git.git টিম কীভাবে কাজ করে সেভাবে চেষ্টা করে যাচ্ছি, যদিও আমরা সম্ভবত সাবভারশনের সাথে লেগে থাকব।

1

আমি পছন্দ করি এমন এসভিএন নকশা এখানে:

  • মূল
    • উন্নয়ন
      • শাখা
        • feature1
        • feature2
        • ...
      • ট্রাঙ্ক
    • বিটা
      • ট্যাগ
      • ট্রাঙ্ক
    • মুক্তি
      • ট্যাগ
      • ট্রাঙ্ক

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

ট্যাগগুলি বিটা শাখা বা রিলিজ শাখায় তৈরি করা যায় যাতে আমরা বিটা এবং রিলিজ উভয়ের জন্য নির্দিষ্ট প্রকাশের ট্র্যাক রাখতে পারি।

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


0

আমরা যে পদ্ধতিটি ব্যবহার করি তা হ'ল পারফোর্স পদ্ধতির, যা লরা উইঙ্গার্ডের দুর্দান্ত বইটিতে দীর্ঘ আলোচনা করা হয়:

http://oreilly.com/catalog/9780596101855/index.html

বইটি পারফোরস কেন্দ্রিক (উইংগার্ড একজন পারফোর্স প্রোডাক্ট ম্যানেজার) হলেও ধারণাগুলি যে কোনও বা সমস্ত ভিসিএসে প্রয়োগ করা যেতে পারে।

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

বইটি পড়ার পক্ষে মূল্যবান।



0

আইএমএইচও-র সাবভার্সন কনভেনশন প্রশ্নের জন্য কোনও এক-আকারের ফিট-সব উত্তর নেই।

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

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

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


-1

@ ব্রায়ান আর। বন্ডি: দয়া করে নোট করুন যে একবার আপনার টিম প্রকল্পের সমান্তরালভাবে পরিচালিত পিপিএল / কার্যগুলির একটি নির্দিষ্ট পরিমাণে পৌঁছে গেলে এটি কোনও সমাধান নয়।

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

এই সমাধানের পাশাপাশি ইন্টিগ্রেশন পর্যায়েও অভাব রয়েছে।


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