সেরা অনুশীলন: সফ্টওয়্যার সংস্করণ [বন্ধ]


211

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

তবে আমি সংস্করণটি কোথায় শুরু করব? 0.0.0? বা 0.0? এবং তারপর আমি সংখ্যা বৃদ্ধি কিভাবে? বড় রিলিজ.মিনারের পরিবর্তন? এবং কোনও সংস্করণ নিয়ন্ত্রণ সিস্টেমে কোনও প্রতিশ্রুতি অন্য সংস্করণ হওয়া উচিত নয়? বা এটি কেবল সংস্করণগুলির জন্য যা উত্পাদনশীল পদ্ধতিতে ব্যবহৃত হয়?


2
আপনার উত্স কোড নিয়ন্ত্রণ সরঞ্জামটি কী করে? আপনার অবশ্যই একটি ব্যবহার করা উচিত । আপনি কোনটি ব্যবহার করছেন?
এস .লট

3
আমি একটু দেরি করে ফেলেছেন ... কিন্তু একটি প্রতারিত নই stackoverflow.com/questions/615227/how-to-do-version-numbers
শিক্ষাদীক্ষা


1
@ ডেভগ্রিগরির প্রশ্নের একটি মতামত ভিত্তিক উত্তর আছে। সেই লিঙ্কটি semver.org বিস্তারিতভাবে একটি সংস্করণ রূপক বর্ণনা করে। একই স্কিমটি অ্যান্ড্রয়েড সহ বেশিরভাগ গুগল প্রকল্পগুলি সাধারণত ব্যবহার করে। তম, টম প্রেস্টন-ওয়ার্নারে আমরা এই বিষয়ে যে কোনও হিসাবে বিশ্বাসযোগ্য ভয়েস খুঁজে পেতে পারি।
রাহুল মুরমুরিয়া

উত্তর:


125

আপনার প্রথম সংস্করণ 1 দিয়ে শুরু করা উচিত, যদি না আপনি না জানেন যে প্রথম সংস্করণটি আপনি "প্রকাশ" করছেন কোনওভাবে অসম্পূর্ণ।

আপনি কীভাবে সংস্করণগুলি বাড়িয়ে তোলেন, এটি আপনার উপর নির্ভর করে তবে প্রধান হিসাবে, অপ্রধান, বিল্ড নম্বরটি গাইড হিসাবে ব্যবহার করুন।

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

সুতরাং আপনি যদি 1.0.0.0 সংস্করণ থেকে 2.0.0.0 সংস্করণে কোনও বড় পরিবর্তন করেন (উদাহরণস্বরূপ আপনি উইনফর্মগুলি থেকে ডাব্লুপিএফ পরিবর্তন করেছেন)। আপনি যদি 1.0.0.0 থেকে 1.1.0.0 এ ছোট পরিবর্তন করেন তবে আপনি পিএনজি ফাইলগুলির জন্য সমর্থন যোগ করেছেন)। আপনি যদি সামান্য পরিবর্তন করেন তবে 1.0.0.0 থেকে 1.0.1.0 এ যান (আপনি কিছু বাগ স্থির করেছেন)।

আপনি যদি সত্যিই বিশদটি পেতে চান তবে বিল্ড নম্বর হিসাবে চূড়ান্ত নম্বরটি ব্যবহার করুন যা প্রতিটি চেকিন / কমিটের জন্য বৃদ্ধি পাবে (তবে আমি মনে করি এটি খুব দূরে চলেছে)।


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

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

@ জেফ্রেইম্প্প হ্যাঁ, আমিও তাই মনে করি। তবে কর্মক্ষেত্রে আমরা বছরের নম্বর দিন ব্যবহার করি এবং এটি আমার পছন্দ হয় না।
ভ্যানসফ্যানেল

ইয়াক, আমি এটিরও পছন্দ করব না :(
জেফ্রি কেম্প

2
এটিও লক্ষ করা উচিত যে প্রধান সংস্করণগুলিতে সাধারণত পরিবর্তনগুলি সামঞ্জস্যপূর্ণ নয়। গৌণ সংস্করণে বৃদ্ধি প্রধান সংস্করণের মধ্যে পশ্চাদপটে সামঞ্জস্যপূর্ণ। একটি হার্ড কোডিং মাইএসকিউএল বাস্তবায়ন থেকে জেনেরিক বাস্তবায়নে পরিবর্তন করা পরিবর্তনের আকারের কারণে একটি বড় সংস্করণ হতে পারে তবে এটি বৈশিষ্ট্য পরিবর্তন (নাবালিক) হিসাবেও বিবেচিত হতে পারে কারণ এটি পশ্চাদপটে সামঞ্জস্যপূর্ণ রয়েছে।
DHW


42

আমি মূলত এই প্যাটার্নটি অনুসরণ করি:

  • ০.০.০ থেকে শুরু করুন

  • যখন এটি প্রস্তুত হয় আমি কোডটি সোর্স রেপোতে শাখা করি, 0.1.0 ট্যাগ করি এবং 0.1.0 শাখা তৈরি করি, মাথা / ট্রাঙ্কটি 0.2.0-স্ন্যাপশট বা অনুরূপ কিছু হয়ে যায়

  • আমি কেবল ট্রাঙ্কে নতুন বৈশিষ্ট্য যুক্ত করেছি, তবে শাখায় ব্যাকপোর্টের সংশোধন করা হয়েছে এবং সময়মতো আমি এটি থেকে 0.1.1, 0.1.2, প্রকাশ করি ...

  • আমি পণ্যটি বৈশিষ্ট্য সম্পূর্ণ বিবেচনা করা হয় এবং এর মধ্যে বড় ত্রুটি নেই বলে 1.0.0 সংস্করণ ঘোষণা করি

  • এরপরে - সবাই সিদ্ধান্ত নিতে পারে কখন বড় সংস্করণটি বাড়ানো হবে ...


আমার যদি 9 টিরও বেশি বৈশিষ্ট্য থাকে তবে আমি কি x.20.0 লিখতে পারি?
জেমশিত ইস্কেন্দ্রভ

@ জেমশীতশেকেন্দ্রভ অবশ্যই আপনি পারেন।
পাভেল এস

35

আমি আমার অ্যাপ্লিকেশনগুলির জন্য এই নিয়মটি ব্যবহার করি:

Xyz

কোথায়:

  • x = প্রধান সংস্করণ নম্বর, 1- ~।
  • y = বৈশিষ্ট্য সংখ্যা, 0-9। পরিবর্তনটিতে বাগ ফিক্স সহ বা ছাড়াই নতুন বৈশিষ্ট্য উপস্থিত থাকলে এই সংখ্যাটি বাড়ান।
  • z = হটফিক্স নম্বর, 0- ~ ~ যদি পরিবর্তনটিতে কেবল বাগ সংশোধন থাকে তবে এই সংখ্যাটি বাড়ান।

উদাহরণ:

  • নতুন অ্যাপ্লিকেশনটির জন্য, সংস্করণ নম্বরটি 1.0.0.0 দিয়ে শুরু হয়।
  • যদি নতুন সংস্করণে কেবল বাগ ফিক্স থাকে তবে হটফিক্স নম্বরটি বাড়ান যাতে সংস্করণ সংখ্যাটি 1.0.1 হয়।
  • যদি নতুন সংস্করণে বাগ ফিক্সগুলি ছাড়াই বা ছাড়াই নতুন বৈশিষ্ট্য থাকে তবে বৈশিষ্ট্য সংখ্যাটি বাড়িয়ে হটফিক্স নম্বরটি শূন্যে পুনরায় সেট করুন যাতে সংস্করণ নম্বরটি 1.1.0 হবে। যদি বৈশিষ্ট্যটির সংখ্যা 9 এ পৌঁছায় তবে মূল সংস্করণ নম্বরটি বাড়ান এবং বৈশিষ্ট্যটি এবং হটফিক্স নম্বরটি শূন্যে পুনরায় সেট করুন (2.0.0 ইত্যাদি)

36
আমি এই স্কিমটি "বৈশিষ্ট্য" / "হটফিক্স" নাম্বারে 9 -> 0 এর উপরে ঘূর্ণন না করেই ব্যবহার করার পরামর্শ দেব, কেবল 10 এ যান! 10 ছোট ছোট আপডেটগুলি এখনও সামান্য আপডেট থাকে যদি সেগুলি বর্ধিতভাবে জারি করা হয় তবে 1.10.0 বা 1.1.10 এর সাথে কোনও ভুল নেই।
ttarik

4
.. এবং উপরে যেতে থাকুন। আপনার যদি সত্যিই v.2 এর আগে প্রয়োগ করার জন্য 23 টি বৈশিষ্ট্য রয়েছে? এবং তারপরে শেষ বৈশিষ্টটিতে 30 টি বাগফিক্স? আপনার সংস্করণটি 1.23.30 হবে। প্রধান সংস্করণ প্রকাশগুলি হ'ল নির্দিষ্ট মাইলফলক সহ বড় বিমূর্ত ধারণা, দশমিক গণনার নিয়মগুলিতে নির্বিচারে মেনে চলার দরকার নেই।
5:58 এ ব্রেইনলেকমেন্টস

11

আমরা যেখানে abcd ব্যবহার করি

  • এ - মেজর (ক্লায়েন্টে বিতরণে বর্ধিত)
  • খ - গৌণ (ক্লায়েন্টে বিতরণে বর্ধিত)
  • সি - পুনর্বিবেচনা (অভ্যন্তরীণ প্রকাশে বর্ধিত)
  • d - বিল্ড (ক্রুজ নিয়ন্ত্রণ দ্বারা বর্ধিত)

5

তবুও A.B.Cপদ্ধতির জন্য আরেকটি উদাহরণ হ'ল এক্সিলিপ্স বান্ডিল ভার্সন । গ্রহপ বান্ডিলগুলির পরিবর্তে চতুর্থ বিভাগ রয়েছে:

ইক্লিপসে সংস্করণ সংখ্যাগুলি চারটি (4) বিভাগগুলি নিয়ে গঠিত: যথাক্রমে 3 পূর্ণসংখ্যা এবং একটি স্ট্রিং নামকরণ করা হয় major.minor.service.qualifier। প্রতিটি বিভাগ পৃথক অভিপ্রায় ধারণ করে:

  • প্রধান বিভাগটি API এ ভাঙ্গা নির্দেশ করে
  • গৌণ বিভাগটি "বাহ্যিকভাবে দৃশ্যমান" পরিবর্তনগুলি নির্দেশ করে
  • পরিষেবা বিভাগটি বাগ ফিক্স এবং উন্নয়ন প্রবাহের পরিবর্তন নির্দেশ করে indicates
  • কোয়ালিফায়ার বিভাগটি একটি নির্দিষ্ট বিল্ডকে নির্দেশ করে

5

রয়েছে তারিখ ভার্সন স্কিম , যেমন: YYYY.MM, YY.MM,YYYYMMDD

এটি বেশ তথ্যবহুল কারণ প্রথম চেহারা মুক্তির তারিখ সম্পর্কে ধারণা দেয়। তবে আমি জাইজেড স্কিমটি পছন্দ করি, কারণ আমি সর্বদা একটি পণ্যটির জীবনচক্রের সঠিক পয়েন্টটি জানতে চাই (মেজর.মিনোর.রিলিজ)


2

প্রাথমিক উত্তরটি "এটি নির্ভর করে"।

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

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

তবুও, দিন শেষে, এটি আপনার উপর নির্ভর করে এবং এটি আপনাকে বোঝাতে হবে।


2

যেমন মহেশ বলেছেন: আমি জাইজেড ধরণের সংস্করণ ব্যবহার করতাম

এক্স - বড় রিলিজ y - মাইনর রিলিজ z - বিল্ড নম্বর

আপনি হয়ত ডেটটাইম যুক্ত করতে চাইতে পারেন z এর পরিবর্তে।

আপনি যখন অন্য রিলিজ পেয়েছেন তখন আপনি নাবালিকাকে মুক্তি দিন incre প্রধান প্রকাশটি সম্ভবত 0 বা 1 এ থাকবে, আপনি যখন সত্যিই বড় পরিবর্তনগুলি পরিবর্তন করেন (প্রায়শই যখন আপনার সফ্টওয়্যারটি এমন এক পর্যায়ে থাকে যেখানে পূর্ববর্তী প্রকাশগুলির সাথে পিছনের দিকে সামঞ্জস্য হয় না, বা আপনি আপনার পুরো কাঠামো পরিবর্তন করেছেন)


2

আপনি জানেন যে আপনি সর্বদা অন্যেরা কী করছেন তা পরীক্ষা করতে পারেন। ওপেন সোর্স সফ্টওয়্যার তাদের স্টোরগুলিতে অ্যাক্সেসের অনুমতি দেয়। উদাহরণস্বরূপ আপনি আপনার এসভিএন ব্রাউজারটিকে http: //svn.doctrine-project.org- এ নির্দেশ করতে পারেন এবং একটি বাস্তব প্রকল্প দ্বারা ব্যবহৃত সংস্করণ সিস্টেমটি একবার দেখে নিতে পারেন।

সংস্করণ নম্বর, ট্যাগ, সব আছে।


2

আমরা এবিসি পদ্ধতির অনুসরণ করি:

প্রয়োগে কিছু বড় পরিবর্তন ঘটে থাকলে ইনক্রিমেন্ট 'এ'। যেমন আমরা .NET 1.1 অ্যাপ্লিকেশনটিকে .NET 3.5 তে আপগ্রেড করি

যদি কোনও নতুন সিআর বা এনহান্সমেন্টের মতো কিছু ছোটখাটো পরিবর্তন প্রয়োগ করা হয় তবে ইনক্রিমেন্ট 'বি'।

কোডটিতে কিছু ত্রুটিযুক্ত সমস্যা রয়েছে তবে ইনক্রিমেন্ট 'সি'।


0

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

আপনি যদি আমার মতো হন তবে আপনি এগুলি পদ্ধতির একটি সংকর তৈরি করবেন যাতে আপনার সফ্টওয়্যারটির অগ্রগতির গতি মেলে।

আমি মনে করি সবচেয়ে গ্রহণযোগ্য প্যাটার্নের abc বা abcd বিশেষত যদি আপনার মিক্সে QA / সম্মতি থাকে। সংস্করণগুলির নিয়মিত অংশ হিসাবে আমি তারিখের চারপাশে এত বেশি ঝাপটায় পড়েছি যে আমি এটি মূলধারার জন্য ছেড়ে দিয়েছি।

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

আমি ব্যক্তিগতভাবে va.b রেভসি সফ্টওয়্যার স্কিমের বিরোধিতা করব না যেখানে সি ওয়াইওয়াইওয়াইএমএমডিডিএইচএমএম বা ওয়াইওয়াইএমএমডিডি।

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

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