দীর্ঘমেয়াদী প্রকল্পগুলির পণ্য সংস্করণ এবং শাখা প্রশস্ত করার সর্বোত্তম উপায় কী?


21

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

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

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


2
বিকাশকারী দলের (টি) পণ্য, প্রকল্প এবং সংস্থার বিষয়ে আরও তথ্য ছাড়াই এটির পক্ষে উত্তর দেওয়া খুব কঠিন হতে চলেছে যা সতর্কতার সাথে আবদ্ধ নয়।
ক্রিসএফ

@ ক্রিসএফ - আমি কিছু ব্যাকগ্রাউন্ডে কাজ করছি তবে আমি নিশ্চিত যে অন্যান্য বিকাশকারীরাও এখানে আড্ডা দিচ্ছেন যাতে আমার নিরীহ / দোষীদের সুরক্ষা দেওয়া দরকার।
rjzii


আপনার সেরা বাজি হ'ল অন্যান্য প্রশ্নগুলি যেমন উপরের সাথে যুক্ত - এবং তারপরে বিটগুলির জন্য জিজ্ঞাসা করা যা তারা আচ্ছাদন করে না।
ক্রিসএফ

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

উত্তর:


20

আপনার কত (এবং কী ধরণের) কাঠামো দরকার তা আপনি কী করতে সক্ষম হতে চান তার উপর অনেক কিছু নির্ভর করে। আপনি কী ছাড়া বাঁচতে পারবেন না, আপনার কী থাকতে চান এবং কী কী আপনার যত্ন নেই তা চিত্রিত করুন।

সিদ্ধান্তের একটি ভাল উদাহরণ হতে পারে:

যে জিনিসগুলি আমরা ছাড়া বাঁচতে পারি না:

  • যে কোনও সময় অতীতের যে কোনও রিলিজ পুনর্গঠন করতে সক্ষম হবেন
  • যে কোনও সময়ে পণ্যটির একাধিক সমর্থিত প্রধান সংস্করণ বজায় রাখতে সক্ষম হোন

আমরা যে জিনিসগুলি রাখতে চাই:

  • শাখা সংযুক্তির বিষয়ে চিন্তা না করে চলমান মেজর-বৈশিষ্ট্য বিকাশ (পরবর্তী বড় রিলিজের জন্য) সম্পাদন করতে সক্ষম হোন
  • অতীতের প্রকাশে রক্ষণাবেক্ষণের আপডেটগুলি সম্পাদন করতে সক্ষম হোন

যে জিনিসগুলি আমরা ছাড়া বাঁচতে পারি:

  • বর্তমান কাজ থেকে অতীতের রিলিজে পরিবর্তনগুলির স্বয়ংক্রিয় ব্যাকপোর্টিং
  • এমনকি সময়ে কয়েক দিন বা এক সপ্তাহের জন্য এমনকি প্রধান বৈশিষ্ট্য বিকাশে কখনও বাধা সৃষ্টি করবেন না

উপরেরগুলি যদি আপনার লক্ষ্যগুলি থাকে তবে আপনি এই জাতীয় প্রক্রিয়াটি গ্রহণ করতে পারেন:

  1. আপনার ভিসিএসের ট্রাঙ্কে সমস্ত উন্নয়ন কাজ করুন (গিটে "মাস্টার")
  2. আপনি যখন কোনও প্রধান রিলিজের কাছাকাছি থাকেন, তখন প্রধান বৈশিষ্ট্য বিকাশ বন্ধ করুন এবং এক সপ্তাহ বা তার জন্য সিস্টেমের স্থায়িত্বের দিকে মনোনিবেশ করুন
  3. ট্রাঙ্কটি স্থিতিশীল বলে মনে হলে, এই বড় রিলিজের জন্য একটি শাখা তৈরি করুন
  4. প্রধান বৈশিষ্ট্য বিকাশ এখন ট্রাঙ্কে এগিয়ে যেতে পারে, যখন কেবল বাগ ফিক্স এবং রিলিজ প্রস্তুতির শাখায় অনুমতি দেওয়া হয়
  5. তবে, শাখায় করা সমস্ত বাগ ফিক্সগুলি প্রথমে ট্রাঙ্কে পরীক্ষা করা উচিত; এটি নিশ্চিত করে যে তারা ভবিষ্যতের সমস্ত প্রকাশেও উপস্থিত থাকবে
  6. আপনি যখন প্রকাশের জন্য প্রস্তুত তখন শাখায় একটি (ভিসিএস) ট্যাগ তৈরি করুন; এই শাখাটি একই শাখায় আরও কাজ করার পরেও যেকোন সময় রিলিজটি পুনরায় তৈরি করতে ব্যবহার করা যেতে পারে
  7. এই প্রধান রিলিজ (গৌণ প্রকাশ) এর আরও রক্ষণাবেক্ষণ রিলিজ এখন শাখায় প্রস্তুত করা যেতে পারে; প্রতিটি মুক্তির আগে ট্যাগ করা হবে
  8. মাঝামাঝি সময়ে, পরবর্তী প্রধান রিলিজের দিকে তাত্পর্যপূর্ণ প্রধান বৈশিষ্ট্য বিকাশ ট্রাঙ্কে চালিয়ে যেতে পারে
  9. আপনি যখন এই রিলিজটির কাছাকাছি আসবেন, উপরের পদক্ষেপগুলি পুনরাবৃত্তি করুন এবং সেই মুক্তির জন্য একটি নতুন রিলিজ শাখা তৈরি করুন । এটি আপনাকে একসাথে একই স্থানে সমর্থিত স্থিতিতে এবং প্রতিটিটির বিপরীতে পৃথক ছোট ছোট রিলিজ প্রকাশের ক্ষমতা সহ একাধিক বড় প্রকাশ করতে দেয় allows

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


+1 তবে আমি যুক্ত করব যে উত্স নিয়ন্ত্রণটি আপনার পরিবেশের একমাত্র অংশ। আমি যে কোনও বিল্ড সার্ভার (গুলি) এর উপর একটি ভিএম স্ন্যাপশট এবং বিকাশের পরিবেশের একটি স্ন্যাপ শট নেব, যাতে আপনার যখন প্রয়োজন হয় তখন আপনি সরাসরি একটি বাস্তব বিল্ড পরিবেশে যেতে পারেন।
নিল টিব্রেওয়ালা

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

1
উদাহরণস্বরূপ, যদি ট্রাঙ্কে সংস্করণ 4.3 বিকাশ করা হচ্ছে, এবং আপনাকে সংস্করণ 4.1.x এ একটি বাগ ঠিক করতে হবে, তবে 4.1 শাখায় বাগটি ঠিক করুন, এটি 4.1 শাখায় পরীক্ষা করুন, এটি 4.2 শাখায় মার্জ করুন, পরীক্ষা করুন (এবং সম্ভবত এটি ঠিক করুন) এটি ৪.২ শাখায় রাখুন, এটি ট্রাঙ্কে মার্জ করুন, তারপরে এটি ট্রাঙ্কে পরীক্ষা করুন (এবং সম্ভবত ঠিক করুন)।
দাউদ বলেছেন মনিকা

1

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

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


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

1

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

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

আমি সম্পর্কে অবগত নই, তবে নিশ্চিত যে এটি উপস্থিত থাকবে, গিটের জন্য একটি সিএম টুল অ্যাডিশন।


0

এই প্রশ্নটি আমি অন্য একটি প্রশ্নের সাথে খুব মিল বলে মনে হচ্ছে যা আমি সম্প্রতি উত্তর দিয়েছি ।

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

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

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

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