সিমেন্টিক ভার্সনটি কি সংস্করণ সংখ্যায় 4 টি উপাদানকে অনুমতি দেয়?


16

শব্দার্থক সংস্করণের সমস্ত উদাহরণ আমি দেখেছি 3 টি উপাদান ব্যবহৃত। 2 পিরিয়ড অক্ষরের বেশি নয়। এ $DAYJOB, আমরা আমাদের প্রকাশের সংখ্যাগুলিতে 4 টি উপাদান ব্যবহার করি:

5.0.1.2

শব্দার্থক সংস্করণ কি এর জন্য অনুমতি দেয়?

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

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


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

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

@ void.pointer আপনি কেন চতুর্থ উপাদান ব্যবহার করছেন তার একটি উদাহরণ দিতে পারেন? আপনি কী এটি মূলত অভ্যন্তরীণ ব্যয় এবং অ্যাকাউন্টিং স্ট্রাকচারগুলি বাইপাস করতে ব্যবহার করছেন - আপনার দলকে প্যাচ সংখ্যাগুলি ছিটিয়ে ছাড়াই নতুন বৈশিষ্ট্যগুলি ট্র্যাক করতে দিচ্ছেন?
এন্ডারল্যান্ড

@ জেনারল্যান্ড হ্যাঁ মূলত। MAJOR(PCI).MINOR(PCI).FEATURE.HOTFIX+BUILD। আমরা কেবলমাত্র পিসিআই না পেয়ে তৃতীয় এবং চতুর্থ উপাদান পরিবর্তন করার অনুমতিপ্রাপ্ত (এবং পরবর্তীকালে সংস্থার পিসিআই ওভারলর্ডস) এতে জড়িত। আমার কাছে এটি মনে হয় এটি কিছুটা সংঘাতযুক্ত, আমি নিশ্চিত নই যে তারা যেভাবে সংস্করণ নম্বর পরিচালনা করে সেভাবে ন্যায্য, তবে আমি পিসিআই এবং অডিট প্রক্রিয়া সম্পর্কে অন্যথায় বলার পক্ষে যথেষ্ট জানি না।
void.pointer

4
আমরা 4 টি গ্রুপও ব্যবহার করি, 3 নয় কেন? কারণ সি ++। সি ++ এর বাইনারি ব্যাকওয়ার্ড সামঞ্জস্যতা এবং উত্সের পশ্চাদপদ সামঞ্জস্যতা: পূর্ববর্তীটি পরবর্তীটি বোঝায়, তবে সম্পর্কটি প্রতিসম নয় not সুতরাং, আমরা বাইনারি সামঞ্জস্যের জন্য 4 তম গ্রুপটি ব্যবহার করি (আপনি সিস্টেমটিকে হট-প্যাচ করতে পারেন) এবং উত্স সামঞ্জস্যতার জন্য 3 য় (আপনার পুনরায় সংকলন করতে হবে, তবে আপনার নিজের কোডটি পরিবর্তন করতে হবে না)। এবং আপনি কি জানেন, এটি আমাদের পক্ষে কাজ করে!
ম্যাথিউ এম।

উত্তর:


21

মনে হচ্ছে আপনি কেবল প্রক্রিয়া ওভারহেড / নিরীক্ষণ এড়ানোর জন্য সাধারণ সম্মেলনগুলি বাইপাস করছেন। যে ... সম্পর্কে আমাকে আঘাত।

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


যাইহোক, শব্দার্থানুক্রমিক সংস্করণ সম্পর্কে আপনার প্রশ্নে সিমেন্টিক ভার্সিংয়ের জন্য উত্সটি বলে:

MAJOR.MINOR.PATCH সংস্করণ নম্বর দেওয়া হয়েছে, বৃদ্ধি করুন:

  • মেজর সংস্করণ যখন আপনি বেমানান এপিআই পরিবর্তন করেন,
  • মাইনর সংস্করণ আপনি যখন পিছনের দিকে সামঞ্জস্যপূর্ণ পদ্ধতিতে কার্যকারিতা যুক্ত করেন এবং
  • আপনি পিছনের দিকে সামঞ্জস্যপূর্ণ বাগ ফিক্সগুলি তৈরি করার সময় প্যাচ সংস্করণ।
  • প্রাক-প্রকাশ এবং মেটাডেটা তৈরির জন্য অতিরিক্ত লেবেলগুলি MAJOR.MINOR.PATCH ফর্ম্যাটের এক্সটেনশান হিসাবে উপলব্ধ

জোর আমার।

সুতরাং প্রশ্নটি হল, আপনি কি প্রাক-প্রকাশের / মেটাডেটা তৈরির জন্য চতুর্থ চরিত্রটি ব্যবহার করছেন? অথবা এটি মূলত অন্য সংস্করণের ইঙ্গিত যা আপনি প্রকাশ করছেন?

যদি "হ্যাঁ" হয় তবে অর্থশাস্ত্রীয় সংস্করণটির বৈশিষ্ট্য এটির জন্য অনুমতি দেয় না। যদি "না" হয় তবে আপনি প্রযুক্তিগতভাবে শব্দার্থক সংস্করণ অনুসরণ করছেন না।

এবং একটি উচ্চ-স্তরের এবং আরও বিতর্কিত পার্শ্ব প্রশ্ন হিসাবে, এটি কি সত্যই কি গুরুত্বপূর্ণ?

আপনি কঠোরভাবে এটি অনুসরণ করতে চান বা না চান তা আপনার এবং আপনার দলের সিদ্ধান্ত নিতে হবে। শব্দার্থক সংস্করণটির উদ্দেশ্য হ'ল এপিআই সামঞ্জস্যতা:

ত্রুটি সংশোধনকারীগুলি প্যাচ সংস্করণটি API বৃদ্ধি করে না, পিছনের দিকে সামঞ্জস্যপূর্ণ এপিআই সংযোজন / পরিবর্তনগুলি গৌণ সংস্করণে বৃদ্ধি করে এবং পিছনে অসামঞ্জস্যপূর্ণ এপিআই পরিবর্তনগুলি মুখ্য সংস্করণে বৃদ্ধি করে।

আমি এই সিস্টেমটিকে "সিমেন্টিক ভার্সন" বলি। এই স্কিমের আওতায় সংস্করণ সংখ্যা এবং যেভাবে তারা পরিবর্তন করে তার অন্তর্নিহিত কোড এবং কীভাবে একটি সংস্করণ থেকে অন্য সংস্করণে পরিবর্তন করা হয়েছে তা বোঝায়।

এটি এমন একটি সিস্টেম যা এপিআই-এর ডাউনস্ট্রিম ব্যবহারকারীদের সংস্করণে প্রভাব ফেললে এটি আরও স্পষ্ট করে তুলতে সহায়তা করে।

যতক্ষণ না আপনার এপিআই একইভাবে পরিষ্কার থাকে আপনি কোন উপায়টিকে বেছে নেবেন এটি কোনও বিশাল চুক্তি নয়। অর্থসূচক সংস্করণটি কেবল সহজবোধ্য হতে পারে, উদাহরণস্বরূপ যদি আমি ৩.৪.২ ব্যবহার করি এবং 3.4.10 এ আপগ্রেড করতে হয় তবে আমি জানি যে আমি কিছু না ভাঙ্গিয়েই এটি করতে পারি। নতুন সংস্করণটি যদি 3.5.1 হয় তবে আমি জানি এটি পিছনের দিকে সামঞ্জস্যপূর্ণ। এবং আমি জানি 4.0.0.1 সংস্করণটি একটি ব্রেকিং পরিবর্তন হবে।

সংস্করণ সংখ্যাগুলি কী বোঝায় তার সমস্ত অংশ।

@ জেনারল্যান্ড হ্যাঁ মূলত। মেজর (পিসিআই) .MINOR (পিসিআই) .FEATURE.HOTFIX + + তৈরি করুন। আমরা কেবলমাত্র পিসিআই না পেয়ে তৃতীয় এবং চতুর্থ উপাদান পরিবর্তন করার অনুমতিপ্রাপ্ত (এবং পরবর্তীকালে সংস্থার পিসিআই ওভারলর্ডস) এতে জড়িত। আমার কাছে এটি মনে হয় এটি কিছুটা সংঘাতযুক্ত, আমি নিশ্চিত নই যে তারা যেভাবে সংস্করণ নম্বর পরিচালনা করে সেভাবে ন্যায্য, তবে আমি পিসিআই এবং অডিট প্রক্রিয়া সম্পর্কে অন্যথায় বলার পক্ষে যথেষ্ট জানি না।

ঠিক আছে, এটা ঠিক আছে। আপনার একটি সিস্টেম রয়েছে যা আপনার পক্ষে কাজ করে এবং আপনার প্রয়োজনগুলি পূরণ করে। এটাই সংস্করণ করার বিষয়।

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

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


শীর্ষে আপনার সম্পাদনা সম্পর্কিত: আমাকে এখানে শয়তানের উকিল খেলতে দিন। পিসিআই অডিটগুলি সংস্থার অর্থ ব্যয় করে এবং বাস্তবায়িত প্রতিটি বৈশিষ্ট্য তাদের জন্য উদ্বেগের নয়। তাহলে একা নীতিগুলিতে কেন ব্যয় এবং অন্যান্য ওভারহেড ব্যয় করতে হবে? এটা কিভাবে এই বিষয়ে? আমি বুঝতে পারি নিরীক্ষা নির্ধারণের পদ্ধতিটি সম্ভবত ত্রুটিযুক্ত, তবে উদ্বেগের পৃথকীকরণ যুক্তিসঙ্গত বলে মনে হয়। কার্ড প্রসেসিংয়ের সাথে দূরবর্তীভাবে সম্পর্কিত নয় এমন জিনিসগুলি পিসিআইয়ের সাথে অপ্রাসঙ্গিক।
void.pointer

@ void.pointer আমি / আপনার অডিটগুলি কীভাবে নির্ধারিত হয় তা বিচার করার মতো অবস্থানে নেই। তবে কেউ সিদ্ধান্ত নিয়েছে যে তারা নির্দিষ্ট মানদণ্ডের ভিত্তিতে নিরীক্ষণ করতে চায়। ইচ্ছাকৃতভাবে যে নিরীক্ষা মানদণ্ড বাইপাস মনে (আপনি কত টাকা সংরক্ষণ নির্বিশেষে এমনটি করে) বিষয়ে।
এন্ডারল্যান্ড

1
@ void.pointer, এন্ডারল্যান্ড ঠিক আছে। যদি কোনও সন্ত্রাসী যদি আপনার সংস্করণগুলি সম্পূর্ণ বর্ণানুক্রমিক অক্ষর দ্বারা রচিত না হয় তবে আপনার পরিবারকে হত্যা করার হুমকি দিলে আসল সমস্যাটি সন্ত্রাসবাদী। এটিকে ঘিরে কাজ করার জন্য সিনথেটিক সংস্করণ অনুসরণ না করে নির্দ্বিধায় (বাস্তবে, আমি এ ক্ষেত্রে দৃ strongly়তার সাথে এটি প্রস্তাব করব), তবে এটি সত্যই: একটি ভিন্ন সমস্যা দ্বারা আবশ্যক এমন একটি কর্মপরিকল্পনা।
পল ড্রাগন

1
@ পলড্রাপার কখন সেমভার সংস্করণে ওয়ান ট্রু ওয়ে হয়ে উঠেছে?
অ্যান্ডি

1
অ্যান্ডি, এটি হয়নি। ওপি সেমওয়ার সম্পর্কে জিজ্ঞাসা করেছিল। আইডিকে কেন, তবে তিনি সেটাই করলেন।
পল ড্রাগন

8

ইন শব্দার্থিক ভারশনিং, যা 2.0.0 হয় এর বর্তমান সংস্করণ , কোন। একটি প্রয়োজনীয়তা রয়েছে যা সংস্করণটিকে এক্সওয়াইজেড হিসাবে রূপ হিসাবে সংজ্ঞায়িত করে যেখানে এক্স, ওয়াই, এবং জেড অ-নেতিবাচক পূর্ণসংখ্যা যেখানে নেতৃস্থানীয় 0 টি থাকে না:

একটি সাধারণ সংস্করণ নম্বরটি XYZ রূপ ধারণ করতে হবে যেখানে এক্স, ওয়াই এবং জেড অ-নেতিবাচক পূর্ণসংখ্যার, এবং নেতৃত্বের শূন্যগুলি থাকা উচিত নয়। এক্স হ'ল প্রধান সংস্করণ, ওয়াই হল ছোটখাটো সংস্করণ এবং জেডটি প্যাচ সংস্করণ। প্রতিটি উপাদান সংখ্যাগতভাবে বৃদ্ধি করা উচিত। উদাহরণস্বরূপ: 1.9.0 -> 1.10.0 -> 1.11.0।

তবে মেটাডেটা যুক্ত করার ক্ষমতাটির জন্য অনুমোদিত:

প্যাচ বা প্রাক-প্রকাশের সংস্করণটি অবিলম্বে অনুসরণ করে একটি প্লাস চিহ্ন এবং ডট বিভাজনকারী শনাক্তকারীদের একটি সিরিজ যুক্ত করে মেটাডেটা তৈরি হতে পারে। শনাক্তকারীদের কেবলমাত্র ASCII বর্ণানুক্রমিক এবং হাইফেন [0-9A-Za-z-] থাকতে হবে। শনাক্তকারীদের খালি থাকতে হবে না। সংস্করণ অগ্রাধিকার নির্ধারণের সময় মেটাডেটা তৈরি করা উপেক্ষা করা উচিত। সুতরাং দুটি বিল্ড যা কেবল বিল্ড মেটাডেটাতে পৃথক হয়, তার একই নজির রয়েছে। উদাহরণ: 1.0.0-alpha + 001, 1.0.0 + 20130313144700, 1.0.0-বিটা + exp.sha.5114f85।

তবে লক্ষণীয় কিছু গুরুত্বপূর্ণ বিষয় হল যে সিমেন্টিক সংস্করণটি বিশেষত এমন একটি সফটওয়্যারগুলির জন্য যা একটি পাবলিক এপিআই ঘোষণা করে:

সিমেন্টিক ভার্সন ব্যবহার করে সফ্টওয়্যার একটি সর্বজনীন এপিআই ঘোষণা করতে হবে। এই এপিআইটি কোডটিতেই ঘোষিত হতে পারে বা ডকুমেন্টেশনে কঠোরভাবে উপস্থিত থাকতে পারে। তবে এটি করা হয়, এটি সুনির্দিষ্ট এবং বিস্তৃত হওয়া উচিত।

এটি অ্যাপ্লিকেশন পর্যায়ে নয়, গ্রন্থাগার বা পরিষেবাগুলির উন্নয়নে সহায়তা করে।

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


সর্বজনীন এপিআই নোটের জন্য +1। আমাদের কোনও পাবলিক এপিআই নেই তবে আমাদের কাছে অন্যান্য দিক যেমন ডেটা হিসাবে পশ্চাদপটে সামঞ্জস্যতা ভাঙার ক্ষমতা রাখে। এটি সম্ভব যে আমরা একটি বিল্ড শিপ করে যা পুরানো রিলিজের উপর ইনস্টল হয়ে যায় তবে ডেটা পরিবর্তন হয় না এবং আমরা সেই ডেটাতে আর পড়তে পারি না (সাধারণত আমরা পুরানো ফর্ম্যাটগুলিকে সমর্থন করি)
void.pointer
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.