আমরা কীভাবে সংস্করণ নিয়ন্ত্রণ করছি তাতে কিছু ভুল আছে?


53

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

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

এটি বেশ সংশ্লেষিত বলে মনে হচ্ছে - এই ধরণের পরিস্থিতি পরিচালনা করার জন্য আরও ভাল কোনও উপায় আছে কি? আমরা টিম ফাউন্ডেশন সার্ভার এবং ভিজ্যুয়াল স্টুডিও 2010 ব্যবহার করছি।


113
আপনার প্রোগ্রামারদের আগুন।
বার্নার্ড

11
তাদের প্রতিটি একটি শাখা দিন। প্রতিদিনের চেকিনগুলি প্রয়োগ করুন।

16
@ রায়ান যদি কেবল উত্সাহিত অজুহাত হতে পারে তবে যদি এটি সোর্সসেফের মতো পুরানো কোনও বিষয়তে কোনও উত্তরাধিকার প্রকল্প হত। টিম ফাউন্ডেশন সার্ভার ২০১০ তবে একটি খুব ভাল উত্স নিয়ন্ত্রণ সমাধান যা একাধিক শাখা পরিচালিত করতে এবং এই শাখাগুলিকে প্রধানতে মার্জ করার ক্ষেত্রে কোনও সমস্যা নেই। যদি তারা এটি না জানে তবে তারা অশ্লীলভাবে অক্ষম এবং তাদের বরখাস্ত করা উচিত। আরও সম্ভবত এটি হ'ল তারা শাখাগুলিতে বিরক্ত হওয়া এবং মিশে যাওয়ার জন্য তারা প্রকৃতপক্ষে খুব অলস বা উদাসীন তাই তারা আপনাকে একটি লাইন খাওয়াচ্ছে।
ম্যাপেল_শ্যাফ্ট

10
@ জান_ভি সোর্সসেফের কিছুই সহজ নয়।
ম্যাপেল_শ্যাফ্ট

30
আমি টিএফএসের সাথে পরিচিত নই, তবে এই প্রশ্নটি মার্কুরিয়াল বা জিআইটি-র বিজ্ঞাপনের মতো পড়ে।
টেক্সাসে জিম

উত্তর:


77

ভি 2.0 এর উচিত ছিল যা আমরা প্রকাশিত হওয়ার পরে এটির জন্য তৈরি একটি 'অবিচলিত-রাষ্ট্র শাখা' (আমরা পার্ফোর্স ব্যবহার করেছি, টিএফএস নয়) ব্যবহার করেছি। ভি 2 এর জন্য যে কোনও সংশোধন এই শাখায় করা হত এবং তারপরে v3 উন্নয়ন শাখায় আবার প্রচার করা হত, যখন ভি 3 বৈশিষ্ট্যগুলিও কাজ করা হয়েছিল, অর্থাৎ ভি 2 এর কোনও ত্রুটি ভি 3 এর ক্ষেত্রেও একটি ত্রুটি হতে পারে।

বিকাশকারীদের মেশিনে দীর্ঘ সময়ের জন্য পরিবর্তনগুলি থাকার ফলে সম্ভবত সংহতকরণের দুঃস্বপ্ন দেখা যায়।



2
এবং তারা এখনও ভি 2.0 বিল্ড ডেটটাইমের ভিত্তিতে টিএফএসে একটি সংস্করণ শাখা তৈরি করতে পারে।
ডেভ ই

2
আমি এই ব্লগ পোস্টটি অনেকটা পেরিয়েছি
গিটের

50

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

তবে আপনার বিকাশকারীদের দ্বারা বেছে নেওয়া পদ্ধতির ... জি আমি ভুলভাবে পড়েছি না তা নিশ্চিত করার জন্য আমি এটি মৌখিকভাবে উদ্ধৃত করব ...

কোড ... বিকাশকারীর স্থানীয় মেশিনগুলিতে রাখা হবে যতক্ষণ না সেগুলি হয়ে যায় ...

... উপরের মতো উপায় সম্ভবত একমাত্র পুরোপুরি, সম্পূর্ণ ভুল!

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


6
গুরুতরভাবে, প্রোগ্রামারদের সেই টিম ফাউন্ডেশন সার্ভার ব্র্যাঙ্কিং গাইডেন্সটি পড়তে হবে এবং তারা যতক্ষণ না এটি করে, অন্য বোঝার কোডটি না লিখে, বোঝে এবং 3.0 ডিভ এবং 2.0 বগফিক্সের জন্য আলাদা শাখা তৈরি করে না।
কারসন 63000

@ কারসন 000৩০০০ একমত যে টি-টিএফএস না থাকা (আমার মতো) এমনকি এটি পড়া ভাল। মাইক্রোসফ্ট ছেলেরা কীভাবে প্রকল্পগুলিকে শ্রেণিবদ্ধ করে এবং উপযুক্ত শাখাগুলি কৌশল বেছে নেওয়ার সময় তারা কীভাবে বিবেচনা করার কারণগুলি বিবেচনা করে তা সরঞ্জাম-অজগনীয় এবং চিন্তার জন্য বেশ ভাল খাবার তৈরি করে।
gnat

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

সম্পাদন করা

  • আপনার কাজের কম্পিউটারে সংস্করণ নিয়ন্ত্রণ রাখুন।
    • আপনি এখনই এই কাজটি করতে পারেন w / আউট দলের সমন্বয় can
    • এমনকি টিম সংস্করণ নিয়ন্ত্রণ সহ, আমি এটির সুপারিশ করছি
    • যদি আপনার দল গিট বা মার্কুরিয়াল ব্যবহার করে তবে আপনি একটি স্বতন্ত্র, স্থানীয় সংগ্রহশালা ব্যবহার করছেন। বিতরণ সংস্করণ নিয়ন্ত্রণ কাজ করে যে কিভাবে।
    • আপনি আপনার দল থেকে বিভিন্ন ভিসি সফ্টওয়্যার ব্যবহার করতে পারেন। আমাদের দল সাবভারশন ব্যবহার করে, আমি স্থানীয়ভাবে মার্কুরিয়াল ব্যবহার করি। ভিসি সফ্টওয়্যার মেটাফিলগুলি (".svn", ".mg", লুকানো ফোল্ডার) বিরোধী নয়।

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

শেষ সম্পাদনা


3
নিতপিক: "সমস্ত কোড ফাইলগুলিতে সংস্করণ নম্বর রয়েছে automatically অবশ্যই বেসিক পয়েন্ট এখনও দাঁড়িয়ে।
sleske

"প্রতি ফাইল / প্রতি রেপো (সিটরি)" সংস্করণ। হাঁ। এটি ভিসি সফ্টওয়্যারের একটি মৌলিক পার্থক্য ation আমি উভয় প্রকারের ব্যবহার করেছি - "দেশ ও পশ্চিমা" (এই রেফারেন্সটি কে জানে +1)। আমি "প্রতি রেপো" মডেলটি আরও পছন্দ করি।
রডারবব

13

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

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


9
টিএফএস ব্যবহারে সমস্যা কী?
বার্নার্ড

2
আপনি কী অর্জন করার চেষ্টা করছেন তার উপর নির্ভর করে। উপকারিতা এবং কনসগুলি এসও তে একটি সাধারণ বিষয়। এটি একটি শালীন সূচনা পয়েন্ট। stackoverflow.com/questions/4415127/...
jdl

4
বিতরণ করা সংস্করণ নিয়ন্ত্রণ সিস্টেমগুলি সর্বদা অর্থ দেয় না।
ম্যাপেল_শ্যাফ্ট

3
-১: প্রচারকরা যা দাবি করেন তা সত্ত্বেও বিতরণিত সংশোধন নিয়ন্ত্রণ প্রতিটি সমস্যার উত্তর নয় এবং এটিকে সমাধান করবে না।
mattnz

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

7

তাত্ক্ষণিক উত্তর: ডেভলপমেন্ট টিমের প্রধান ট্রাঙ্ক থেকে ডিপোড কোড-বেস ভি 2.0 রাখতে আলাদা প্রোডাকশন শাখা থাকা উচিত ।

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

আপনার প্রকল্পে প্রোড, স্টেজিং, কিউএ এবং দেব (কখনও কখনও ইউএটি) এর for health developmentমতো বেশ কয়েকটি পরিবেশ থাকা উচিত । প্রোডাকশন রিলিজে যাওয়ার আগে এই পরিবেশগুলি সেট আপ করা উচিত ।

সব মিলিয়ে ত্রুটি এবং সংশোধনের জন্য প্রস্তুত হ'ল একটি প্রকাশিত অ্যাপ্লিকেশন সমর্থন করার উপায়।

যেহেতু টিএফএস সংস্করণ নিয়ন্ত্রণ হিসাবে উল্লেখ করা হয়েছিল, তাই আমি নিবন্ধগুলির তালিকাও সংকলন করেছি যা স্বাস্থ্য বিকাশের পরিবেশ নির্ধারণে সহায়ক হবে:


4

না, কারণ আপনি যখন ভিসিএস ব্যবহার করছেন তখন আপনি সংস্করণ নিয়ন্ত্রণ করছেন না।

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

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


0

আমি একজন বিকাশকারী এবং বর্তমান সংস্করণ সংশোধন করার জন্য আমাদের বিভিন্ন শাখা কোড এবং ডিবি এবং বর্ধনের জন্য এবং পরের সংস্করণে আলাদা দেওয়া হয়।

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

তদুপরি আমরা একটি অনুশীলন অনুসরণ করি যেমন আমার আমার বর্তমান সংস্করণে 10 টি স্থির রয়েছে

আমি যেমন লিখি

//Start Iteration 2, Fix No-1, Branch No-"ABC"
code where I have done changes or fixes or added new code lines
//End Iteration 2, Fix No-1, Branch No-"ABC"

একইভাবে অন্যান্য ফিক্সগুলির জন্য, আমি কেবল প্রতিটি লাইন পরিবর্তন করি বা ফিক্সিংয়ের জন্য যুক্ত করি for এবং শুধু তুলনা এবং প্রতিশ্রুতিবদ্ধ। একইভাবে যদি তারা একই শাখায় সমান্তরাল কাজ করে তবে তারা ব্যবহার করতে পারে

//Start Enhancement -1, Branch No-"ABC" 
code where I have done changes of fixes or added new code lines
//End Enhancement -1, Branch No-"ABC" 

Ctrl+Shift+F//Start Iteration 2, Fix No-1, Branch No-"ABC" সম্পূর্ণ সমাধানে অনুসন্ধানের জন্য কমান্ড এবং প্রকারটি সঠিক অবস্থানগুলি, কোড যেখানে পরিবর্তন করা হয়েছে সে ফাইলগুলি সন্ধান করতে এবং নতুন অংশটি গ্রহণের ক্ষেত্রে কেবল সেই অংশটি প্রতিশ্রুতিবদ্ধ করতে ব্যবহৃত হতে সাহায্য করে helps

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