বিজোড় সংস্থার রিলিজ চক্র: বিতরণ উত্স নিয়ন্ত্রণে যান?


13

এই দীর্ঘ পোস্ট সম্পর্কে দুঃখিত, তবে আমি মনে করি এটি মূল্যবান।

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

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

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

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

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

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

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

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

এ সম্পর্কে মানুষের চিন্তাভাবনা কী?

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


উত্তর:


5

কোন ডিভিসিএসকে সংজ্ঞায়িত করে?

বিতরণ DVCS মানে একটি সংগ্রহস্থলের প্রতিটি ক্লোন সমস্ত তথ্য আছে যা, সমর্পণ করতে, আপডেট করে শাখা, একত্রীকরণ বা কি কখনো স্পর্শ ছাড়া যে সংগ্রহস্থলের মধ্যে কোন সংস্করণ অনুসন্ধান প্রয়োজনীয় একটি সার্ভার । কেবলমাত্র আপনি অফলাইনে যা করতে পারবেন svnতা আসলে ফাইলগুলি সম্পাদনা করা - আপনার svnগ্রিপিংয়ের মতো সাধারণ কিছু করা সহ প্রায় সমস্ত কমান্ডের জন্য সার্ভার অ্যাক্সেসের প্রয়োজন হয় svn log, সুতরাং এটি 90% এর চেয়ে 0% এর কাছাকাছি!

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

কোন শাখা মডেল উপযুক্ত?

আপনি এখনই যে পরিস্থিতিতে আছেন আমি তার মধ্যে ছিলাম। এই জাতীয় সিস্টেমগুলি আসল ব্যথা হতে পারে তবে বাস্তববাদী কারণগুলি তারা এ জাতীয় হয়ে উঠেছে এবং বুঝতে হবে যে তারা মুক্তির বাইরে নয় । অনেকগুলি সরঞ্জাম তৈরি করা হয়েছে যা এই ধরণের জটিলতা পরিচালনা করতে সহায়তা করতে পারে

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

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

এই দুটি বিকল্পই আপনার বর্তমান কর্মপ্রবাহের চেয়ে অনেক বেশি নমনীয়তা, স্বচ্ছতা এবং সুরক্ষা সরবরাহ করবে এবং কেবলমাত্র জটিল জটিল শাখার চেয়ে আরও সহজ কৌশল ব্যবহার করা সহজ হতে পারে। আমি যখন আপনার পরিস্থিতিতে থাকতাম আমি অবশ্যই এই সরঞ্জামগুলিতে অ্যাক্সেস পেয়েছি wish

এই বিকল্পগুলির বিষয়ে আরও তথ্যের জন্য, একটি মডুলার সিস্টেমে সংস্করণ নিয়ন্ত্রণ ব্যবহারের কৌশল সম্পর্কে আমার উত্তরগুলি দেখুন , গিট সংগ্রহস্থলের অভ্যন্তরে সাবভার্সন সংগ্রহশালা কীভাবে ব্যবহার করবেন? এবং একাধিক সংস্থাগুলি দ্বারা ব্যবহৃত অ্যাপ্লিকেশনটির জন্য উত্স / সংস্করণ নিয়ন্ত্রণ

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

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


1
সফল Git মডেল যে শাখাবিন্যাস খোঁজার জন্য +1 আপনার জন্য কাজ করে
jcmeloni

1
"তাদের জীবন আরও সহজ করুন" এর জন্য +1। এটি প্রধান প্রেরণা।

5

প্রথমত, ডিভিসিএস হ'ল আপনার সমস্যাগুলির জন্য একটি রেড হেরিং - ব্যবহৃত সংস্করণ নিয়ন্ত্রণ সরঞ্জামটি যে সমস্যার সমাধান করতে হবে তার মূল নয়। এটি হতে পারে যে ডিভিসিএসের সমাধানগুলির দিকগুলি রয়েছে যা টিএফএসের চেয়ে "ভাল" তবে এই মুহুর্তে এটি ঠিক করার দরকার নেই।

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

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

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

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

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

সবশেষে, আপনার সমস্ত সমস্যা একবারে সমাধান করার চেষ্টা করবেন না - বিল্ড এবং পরীক্ষাগুলি আমাকে প্রথমে আপনার দৃষ্টি নিবদ্ধ করা উচিত বলে মনে করবে।


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

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

1

দ্বিতীয় প্রশ্নটি সহজ এবং খাটো, তাই আমি এটি থেকে শুরু করার চেষ্টা করব

ডিভিসিএস হ'ল সিস্টেম, যেখানে কোনও "অনুমোদনশীল" কোডের উত্স ("চুক্তিতে থাকা" ব্যতীত) ব্যবহৃত হয় এবং পি 2 পি-এক্স-ডেটা এক্সট্রা অতিরিক্ত স্তর ছাড়াই সম্ভব (ব্যক্তিগত, অ-নীতিগত সংজ্ঞা)

বিষয়টিতে প্রথম প্রশ্ন

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

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


1

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

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

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

Git ইন আয় চেয়ে বৈশিষ্ট্য শাখা next, masterবা maintনির্ভর যার উপর এ টার্গেটিং এর (maint বর্তমান রিলিজ, বর্তমান-প্রস্তুতি মুক্তি ও যে পরে এক জন্য পরের জন্য মাস্টার bugfixing জন্য) মুক্তি, কিন্তু আপনি যে অনেক থাকবে না।

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

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

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


1

দুর্ভাগ্যক্রমে, কোডগুলিতে বাগগুলির কোনও জ্ঞাত সমাধান নেই :)

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

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

খুব সুন্দর না, তবে এটি খুব ভালভাবে কাজ করতে পারে। আপনি কোডটি সংগঠিত এবং সুন্দরভাবে আলাদা রাখেন। অন্যান্য ডিভসের পক্ষে এটি সহজেই বোঝা সহজ - "কোড" এ সরাসরি ছোট বাগফিক্স, একটি समर्पित শাখায় কয়েক লাইনের চেয়ে বেশি কিছু হয়ে যায় যেখানে তারা এটি শেষ করতে যতক্ষণ সময় নিতে পারে। (আপনাকে মার্জ সংক্রান্ত সমস্যাগুলি বাছাই করতে হবে এবং তাদের আশ্বস্ত করতে হবে যে ঠিক আছে যদি 2 ডেভস একই সাথে 2 টি বৈশিষ্ট্যে কাজ করে !!)

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

DVCS:

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

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