সংস্করণ হ'ল এমন একটি জিনিস যা সম্পর্কে আমি খুব উত্সাহী এবং সংস্করণ ব্যবস্থা ব্যবহার করার সহজ পদ্ধতির সাথে আসতে দীর্ঘ সময় ব্যয় করেছি। আপনি ইতিমধ্যে আপনার প্রশ্নে যা বলেছেন তা থেকে এটি স্পষ্ট যে আপনি একটি গুরুত্বপূর্ণ বিষয়টি বুঝতে পেরেছেন, সমাবেশ সংস্করণ সংখ্যাগুলি পণ্যের সংস্করণের সমার্থক নয়। একটি প্রযুক্তিগতভাবে চালিত, এবং অন্যটি ব্যবসায় দ্বারা চালিত।
নিম্নলিখিতটি ধরে নেওয়া হয়েছে যে আপনি উত্স নিয়ন্ত্রণের একটি ফর্ম এবং একটি বিল্ড সার্ভার ব্যবহার করেন। প্রসঙ্গে আমরা TeamCity এবং সাবভার্সন / গিট ব্যবহার করি । টিমসিটি একটি ছোট (10) সংখ্যক প্রকল্পের জন্য বিনামূল্যে এবং এটি একটি খুব ভাল বিল্ড সার্ভার তবে আরও কিছু রয়েছে, যার কয়েকটি সম্পূর্ণ নিখরচায়।
সংস্করণ সংখ্যার অর্থ কী
কোনও সংস্করণটি কোনও ব্যক্তির অর্থ কী, তা অন্যটির থেকে আলাদা কিছু বোঝাতে পারে, সাধারণ কাঠামোটি হ'ল বড়, গৌণ, ম্যাক্রো, মাইক্রো। সংস্করণ নম্বরটি আমি যেভাবে দেখছি তা হল এটি দুটি ভাগে বিভক্ত। প্রথমার্ধে মূল সংস্করণ (মেজর) এবং কোনও কী আপডেট (মাইনর) বর্ণনা করে। দ্বিতীয়ার্ধটি কখন এটি তৈরি হয়েছিল এবং উত্স কোড সংস্করণটি কী তা নির্দেশ করে। সংস্করণ নম্বরগুলি প্রসঙ্গের উপর নির্ভর করে বিভিন্ন জিনিস বোঝায়, এটি কি কোনও এপিআই, ওয়েব অ্যাপ্লিকেশন ইত্যাদি depending
Major
। Minor
। Build
।Revision
Revision
এটি আসলে কী তৈরি হয়েছিল তা সনাক্ত করতে উত্স নিয়ন্ত্রণ থেকে নেওয়া নম্বর।
Build
এটি একটি ক্রমবর্ধমান সংখ্যা যা বিল্ড সার্ভারে একটি নির্দিষ্ট বিল্ড সন্ধান করতে ব্যবহার করা যেতে পারে। এটি একটি গুরুত্বপূর্ণ সংখ্যা কারণ বিল্ড সার্ভারটি প্যারামিটারগুলির বিভিন্ন সেট দিয়ে দু'বার একই উত্স তৈরি করেছে। উত্স সংখ্যার সাথে মিলিতভাবে বিল্ড নম্বরটি ব্যবহার করা আপনাকে কী তৈরি হয়েছিল এবং কীভাবে তা সনাক্ত করতে সহায়তা করে।
Minor
পাবলিক ইন্টারফেসে উল্লেখযোগ্য পরিবর্তন হলেই এটি পরিবর্তন করা উচিত change উদাহরণস্বরূপ, এটি যদি একটি এপিআই হয় তবে গ্রাসকারী কোডটি কি এখনও সংকলন করতে সক্ষম হবে? মেজর নম্বর পরিবর্তিত হলে এই সংখ্যাটি শূন্যে পুনরায় সেট করা উচিত।
Major
আপনি কী পণ্যটির সংস্করণটি নির্দেশ করছেন তা বোঝায়। উদাহরণস্বরূপ সমস্ত ভিজ্যুয়াল স্টুডিও ২০০৮ এর এসেম্বলির মেজর 9 এবং ভিজ্যুয়াল স্টুডিও 2010 হ'ল 10।
বিধি ব্যতিক্রম
নিয়মটিতে সর্বদা ব্যতিক্রম রয়েছে এবং এগুলি জুড়ে আসার সাথে সাথে আপনাকে মানিয়ে নিতে হবে। আমার আসল পদ্ধতির বিষয়টি সাবস্ট্রেশন ব্যবহারের উপর ভিত্তি করে তৈরি হয়েছিল তবে সম্প্রতি আমি গিতে চলে এসেছি। সেন্ট্রাল রিপোজিটরি ব্যবহার করে এমন সাবভারশন এবং সোর্স সেফের মতো সোর্স কন্ট্রোলের এমন একটি নম্বর রয়েছে যা নির্দিষ্ট সময় থেকে উত্সগুলির একটি নির্দিষ্ট সেট সনাক্ত করতে ব্যবহার করা যেতে পারে। গিটের মতো বিতরণ উত্স নিয়ন্ত্রণের ক্ষেত্রে এটি হয় না। যেহেতু গিট প্রতিটি বিকাশকারী মেশিনে বিতরণ করা সংগ্রহস্থল ব্যবহার করে সেখানে কোনও অটো বর্ধমান সংখ্যা নেই যা আপনি ব্যবহার করতে পারেন, এমন একটি হ্যাক রয়েছে যা চেক-ইনগুলির সংখ্যা ব্যবহার করে তবে এটি কুৎসিত। এ কারণে আমাকে আমার পদ্ধতির বিকাশ করতে হয়েছিল।
Major
। Minor
। Macro
।Build
রিভিশন নম্বরটি এখন চলে গেছে, বিল্ডটি স্থানান্তরিত হয়েছে যেখানে পুনর্বিবেচনা ব্যবহৃত হত এবং ম্যাক্রো .োকানো হয়েছে। আপনি যেভাবে মাপসই দেখছেন তা আপনি ম্যাক্রোটি ব্যবহার করতে পারেন তবে বেশিরভাগ সময় আমি এটি একা রেখে যাই। যেহেতু আমরা টিমসিটি ব্যবহার করি সেগুলি পুনর্বিবেচনার নম্বর থেকে হারিয়ে যাওয়া তথ্যগুলি বিল্ডটিতে পাওয়া যাবে, এর অর্থ এই যে এখানে দুটি পদক্ষেপ প্রক্রিয়া রয়েছে তবে আমরা কিছু হারাতে পারি নি এবং এটি একটি গ্রহণযোগ্য সমঝোতা।
কি সেট করতে হবে
প্রথম জিনিসটি বুঝতে হবে যে অ্যাসেম্বলি ভার্সন, ফাইল সংস্করণ এবং পণ্য সংস্করণটির কোনও মিল নেই। আমি বিভিন্ন সংখ্যক সংখ্যক সংখ্যা রাখার পক্ষে পরামর্শ দিচ্ছি না তবে কোনও অ্যাসেমব্লিতে ছোটখাটো পরিবর্তন করার ফলে এটি জীবনকে অনেক সহজ করে তোলে যা কোনও পাবলিক ইন্টারফেসকে প্রভাবিত করে না যে আপনি নির্ভরশীল সমাবেশগুলি পুনরায় সংকলন করতে বাধ্য নন। আমি এটির সাথে যেভাবে আচরণ করি তা হ'ল কেবল বিধানসভা সংস্করণে মেজর এবং মাইনর সংখ্যা নির্ধারণ করা তবে ফাইল সংস্করণে সমস্ত মান সেট করা। উদাহরণ স্বরূপ:
- ১.২.০.০ (অ্যাসেম্বলি ভার্সন)
- 1.2.3.4 (ফাইল ভার্সন)
এটি আপনাকে হট ফিক্সগুলি রোল আউট করার ক্ষমতা দেয় যা বিদ্যমান কোডটি ভেঙে দেবে না কারণ সমাবেশগুলির সংস্করণগুলি মেলে না তবে এটির ফাইল সংস্করণ নম্বর দেখে কোনও সমাবেশের সংশোধন / বিল্ডিং আপনাকে দেখতে দেয়। এটি একটি সাধারণ পদ্ধতি এবং যখন আপনি সমাবেশের বিবরণটি দেখেন তখন কয়েকটি মুক্ত উত্স অ্যাসেমব্লিতে দেখা যায়।
যখন কোনও ব্রেকিং পরিবর্তন প্রয়োজন হয় তখন দলের নেতৃত্ব হিসাবে আপনার গৌণ সংখ্যা বাড়ানোর জন্য দায়বদ্ধ হতে হবে। একটি ইন্টারফেসে প্রয়োজনীয় পরিবর্তন ঘুরিয়ে দেওয়ার আগের সমাধানটি কিন্তু আগের কোডটি না ভেঙে বর্তমানটিকে অপ্রচলিত হিসাবে চিহ্নিত করা এবং একটি নতুন ইন্টারফেস তৈরি করা। এর অর্থ হ'ল বিদ্যমান কোডটি সতর্ক করে দেওয়া হয়েছে যে পদ্ধতিটি অপ্রচলিত এবং যে কোনও সময় অপসারণ করা যেতে পারে তবে আপনাকে অবিলম্বে সমস্ত কিছু ভাঙার দরকার নেই। তারপরে সমস্ত স্থানান্তরিত হয়ে গেলে আপনি অপ্রচলিত পদ্ধতিটি সরাতে পারেন।
কিভাবে এটি একসাথে তারের
উপরের সমস্তটি আপনি ম্যানুয়ালি করতে পারতেন তবে এটি খুব সময় সাশ্রয়ী হবে, নীচে আমরা কীভাবে প্রক্রিয়াটিকে স্বয়ংক্রিয় করব। প্রতিটি পদক্ষেপ চালানো যায়।
- সমস্ত প্রজেক্টের એસেম্বলিআইএনফো ফাইলগুলি থেকে বৈশিষ্ট্য
AssemblyVersion
এবং AssemblyFileVersion
বৈশিষ্ট্যগুলি সরান ।
- একটি সাধারণ সমাবেশ তথ্য ফাইল তৈরি করুন (একে VersionInfo.cs কল করুন) এবং আপনার সমস্ত প্রকল্পের সাথে এটি একটি লিঙ্কযুক্ত আইটেম হিসাবে যুক্ত করুন।
- "0.0.0.0" এর মান সহ সংস্করণে যুক্ত করুন
AssemblyVersion
এবং AssemblyFileVersion
গুণাবলী।
- এমএসবিল্ড প্রকল্প তৈরি করুন যা আপনার সমাধান ফাইল তৈরি করে।
- বিল্ড করার পূর্বে কোনও কার্যে যুক্ত করুন যা ভার্সনআইএনফোস আপডেট করে। এখানে অনেকগুলি ওপেন সোর্স এমএসবিল্ড গ্রন্থাগার রয়েছে যা একটি এসেম্বলিআইএনফো কার্যকে অন্তর্ভুক্ত করে যা সংস্করণ নম্বর নির্ধারণ করতে পারে। এটি কেবল একটি স্বেচ্ছাসেবী সংখ্যা এবং পরীক্ষায় সেট করুন।
- বিল্ড নম্বরের প্রতিটি বিভাগের জন্য একটি সম্পত্তি যুক্ত একটি সম্পত্তি গোষ্ঠী যুক্ত করুন। আপনি এখানে বড় এবং নাবালিকাকে সেট করেছেন set বিল্ড এবং রিভিশন নম্বরটি আর্গুমেন্ট হিসাবে পাস করা উচিত।
সাবস্ট্রেশন সহ:
<PropertyGroup>
<Version-Major>0</Version-Major>
<Version-Minor>0</Version-Minor>
<Version-Build Condition=" '$(build_number)' == '' ">0</Version-Build>
<Version-Build Condition=" '$(build_number)' != '' ">$(build_number)</Version-Build>
<Version-Revision Condition=" '$(revision_number)' == '' ">0</Version-Revision>
<Version-Revision Condition=" '$(revision_number)' != '' ">$(revision_number)</Version-Revision>
</PropertyGroup>
আশা করি আমি পরিষ্কার হয়েছি তবে অনেক কিছু জড়িত আছে। কোন প্রশ্ন জিজ্ঞাসা করুন। আরও সংক্ষিপ্ত ব্লগ পোস্ট একসাথে রাখতে আমি কোনও প্রতিক্রিয়া ব্যবহার করব।