এসসিএম সিস্টেমের সাথে কাজ করার সময় আপনার কখন শাখা করা উচিত?
এসসিএম সিস্টেমের সাথে কাজ করার সময় আপনার কখন শাখা করা উচিত?
উত্তর:
শাখা প্রশাখার বিভিন্ন ব্যবহার রয়েছে। সর্বাধিক সাধারণ ব্যবহারগুলির মধ্যে একটি হল এমন প্রকল্পগুলিকে পৃথক করার জন্য যা একসময় সাধারণ কোড বেস ছিল। মূল ট্রাঙ্ককে প্রভাবিত না করে আপনার কোডটি নিয়ে এটি পরীক্ষামূলকভাবে কার্যকর।
সাধারণভাবে, আপনি দুটি শাখার প্রকার দেখতে পাবেন:
বৈশিষ্ট্য শাখা: যদি কোনও নির্দিষ্ট বৈশিষ্ট্য যথেষ্ট পরিমাণে বিঘ্নিত হয় তবে আপনি চান না যে পুরো বিকাশকারী দলটি প্রাথমিক পর্যায়ে প্রভাবিত হোক, আপনি একটি শাখা তৈরি করতে পারেন যার ভিত্তিতে এই কাজটি করা উচিত।
ফিক্সেস শাখা: মূল ট্রাঙ্কে বিকাশ চলতে থাকলে, সফ্টওয়্যারটির সর্বশেষ প্রকাশিত সংস্করণে ফিক্সগুলি ধরে রাখতে একটি ফিক্স শাখা তৈরি করা যেতে পারে।
আপনি নীচের নিবন্ধটি পরীক্ষা করতে আগ্রহী হতে পারেন, যা শাখার নীতিগুলি ব্যাখ্যা করে এবং কখন সেগুলি ব্যবহার করবে:
সাধারণ শব্দে, শাখা প্রশাখার মূল উদ্দেশ্য (একটি ভিসিএস - সংস্করণ নিয়ন্ত্রণ ব্যবস্থা - বৈশিষ্ট্য) কোড বিচ্ছিন্নতা অর্জন ।
আপনার কমপক্ষে একটি আছে শাখা রয়েছে যা অনুক্রমিক বিকাশের জন্য পর্যাপ্ত হতে পারে এবং একই অনন্য শাখায় রেকর্ডিং (প্রতিশ্রুতিবদ্ধ) হওয়ার জন্য অনেকগুলি কাজের জন্য ব্যবহৃত হয়।
তবে সেই মডেলটি তার সীমাটি দ্রুত দেখায়:
যখন আপনার কোনও বিকাশের প্রচেষ্টা রয়েছে (রিফ্যাক্টরিং, বিবর্তন, বাগ-সংশোধন, ...) এবং আপনি বুঝতে পারবেন যে আপনি আপনার বর্তমান উন্নয়ন শাখার চেয়ে একই শাখায় নিরাপদে সেই পরিবর্তনগুলি করতে পারবেন না (কারণ আপনি এপিআই ভেঙে ফেলবেন, বা কোডটি ভেঙে দেবেন সবকিছু), তারপরে আপনার অন্য একটি শাখা দরকার ।
( বিচ্ছিন্ন করতে সেই নতুন কোডটি করতে, যদিও দুটি কোড সেট পরে মার্জ করা হবে)
সুতরাং এখনই এটি আপনার উত্তর:
আপনি যখনই একটি শাখায় দুটি বিকাশের প্রচেষ্টা অনুসরণ করতে এবং রেকর্ড করতে না পারেন তখনই আপনার শাখা করা উচিত।
(বজায় রাখার জন্য মারাত্মক জটিল ইতিহাস না থাকলে)।
আপনার শাখাটি কার্যকর হতে পারে এমনকি যদি আপনি একমাত্র উত্স কোডে কাজ করেন তবে আপনি যদি অনেক হন।
তবে আপনার "প্রতি বিকাশকারীদের জন্য একটি শাখা" তৈরি করা উচিত নয়:
"বিচ্ছিন্নতা" উদ্দেশ্যটি উন্নয়নের প্রচেষ্টাকে আলাদা করতে তৈরি করা হয়েছে (এমন একটি কাজ যা "আমাদের সফ্টওয়্যারটির পরবর্তী সংস্করণটি বিকাশ করুন" বা "লেট ফিক্স ঠিক মতো নির্দিষ্ট" হিসাবে সাধারণ হতে পারে বাগ 23 "),
কোনও" উত্স "বিচ্ছিন্ন করার জন্য নয় ।
("ভনসি" নামে পরিচিত একটি শাখা অন্য বিকাশকারীকে কিছুই বোঝায় না: "ভনসি" যদি প্রকল্পটি ছেড়ে দেয় তবে কী করা উচিত? আপনি
"বাগফিক্স_212" নামক একটি শাখা উদাহরণস্বরূপ বাগ ট্র্যাকিং সিস্টেমের প্রসঙ্গে ব্যাখ্যা করতে পারেন) , এবং যে কোনও বিকাশকারী এটির সাথে তার কী করার কথা সে সম্পর্কে কমপক্ষে কিছু ধারণা নিয়ে এটি ব্যবহার করতে পারে)
একটি শাখা একটি ট্যাগ নয় (এসভিএন একটি রিভিশন সিস্টেম যা সস্তা ফাইলের অনুলিপি সহ ডিরেক্টরিগুলির মাধ্যমে শাখা করা এবং ট্যাগ করার মতো সংস্করণ বৈশিষ্ট্যটি প্রস্তাব করার চেষ্টা করে : এর অর্থ এই নয় যে কোনও ট্যাগটি একটি শাখা)
একটি শাখা সংজ্ঞায়িত করার অর্থ হ'ল মার্জ ওয়ার্কফ্লো সংজ্ঞা দেওয়া : আপনার শাখাটি সম্পন্ন করার পরে আপনাকে কোথায় মার্জ করতে হবে তা জানতে হবে।
তার জন্য, প্রাকটিক্যাল পার্ফোর্স (লরা উইংগার্ড - ও'রেলি) অধ্যায় 7 হ'ল বিভিন্ন ধরণের শাখাগুলির মধ্যে কর্মপ্রবাহকে একীভূত করার জন্য একটি ভাল ভূমিকা (ভিসিএস অজ্ঞেয়াদি): "" কীভাবে সফ্টওয়্যার বিবর্তিত হয় "(পিডিএফ)
এটি কোডলাইন শব্দটি সংজ্ঞায়িত করেছে (শাখা যা কোডের উল্লেখযোগ্য বিবর্তনের পদক্ষেপগুলি রেকর্ড করে, নির্দিষ্ট পয়েন্টগুলিতে ট্যাগের মাধ্যমে বা শাখায় গুরুত্বপূর্ণ একীকরণের মাধ্যমে)
এটি মূললাইন মডেলটি প্রকাশ করেছে (রিলিজেস রেকর্ড করার জন্য একটি কেন্দ্রীয় কোডলাইন), এবং শাখা প্রশাখার বিভিন্ন উদ্দেশ্য বর্ণনা করে:
ভিসিএসের চারপাশে অন্যান্য আকর্ষণীয় ধারণা: মূল ধারণাগুলি
(ক্লিয়ারক্যাস সম্পর্কে মূলত, তবে কোনও ভিসিএসের জন্য বৈধ)
একবিংশ শতাব্দীর সমস্ত এসসিএম আপনাকে বলছে:
আপনার কাজ করা প্রতিটি কাজের জন্য শাখা , এটি কোনও নতুন বৈশিষ্ট্য, বাগফিক্স, পরীক্ষা যা-ই হোক না কেন। এটাকে টপিক শাখা বলা হয় এবং এটি আপনার এসসিএম নিয়ে কাজ করার পদ্ধতি পরিবর্তন করে।
তুমি পাও:
সরঞ্জামগুলি এটি করতে পারে:
যে সরঞ্জামগুলি এটি করতে পারে না:
এটি আপনি যে এসসিএম সরঞ্জামটি ব্যবহার করছেন তার উপরও নির্ভর করে। আধুনিক এসসিএম (গিট, পার্কিয়াল ইত্যাদি) যখনই প্রয়োজন হবে তখন শাখা তৈরি এবং ধ্বংস করা ক্রমশ সহজ করে তোলে। এটি আপনাকে উদাহরণস্বরূপ, আপনি যে বাগটিতে কাজ করছেন তার প্রতি একটি শাখা তৈরি করতে দেয়। আপনি একবার আপনার ফলাফলগুলি ট্রাঙ্কে মার্জ করে দিলে আপনি শাখাটি বাতিল করেন।
অন্যান্য এসসিএমগুলিতে উদাহরণস্বরূপ সাবভার্সন এবং সিভিএসের শাখা প্রশাখার তুলনা অনেক বেশি "ভারী" হয়। তার অর্থ, একটি শাখা কেবল বিশ-কিছু-লাইন প্যাচের চেয়ে বড় কিছু করার জন্য উপযুক্ত বলে মনে করা হয়। সেখানে শাখাগুলি পূর্ববর্তী বা ভবিষ্যতের পণ্য সংস্করণের মতো পুরো বিকাশের ট্র্যাকগুলি ট্র্যাক করতে শ্রেণিবদ্ধভাবে ব্যবহৃত হয়।
আপনার কোডবেজে যখন আপনার গুরুত্বপূর্ণ এবং / অথবা পরীক্ষামূলক পরিবর্তনগুলি করা দরকার, বিশেষত আপনি যদি ট্রাঙ্ককে প্রভাবিত না করে মাঝারি পরিবর্তন করতে চান।
এটি আপনি কী ধরণের এসসিএম ব্যবহার করছেন তার উপর নির্ভর করে।
নতুন বিতরণিত সংস্করণগুলিতে (যেমন গিট এবং মুরিউরিয়াল), আপনি সারাক্ষণ শাখা তৈরি করছেন এবং যাইহোক পুনরায় উত্সাহিত করছেন। আমি প্রায়শই কিছুক্ষণের জন্য একটি পৃথক শাখায় কাজ করব কেবল কারন মূল লাইনের উপর ভিত্তি করে কেউ ভেঙে গেছে, বা নেটওয়ার্কটি ডাউন হয়েছে, এবং তারপরে এটি স্থির হয়ে গেলে পরে পরিবর্তনগুলি একীভূত হবে এবং এটি করা এতটাই সহজ যে এটি বিরক্তিকরও নয় do ।
দস্তাবেজ (ছোট এবং পাঠযোগ্য) যে সবচেয়ে সাহায্য করেছে আমাকে বুঝতে কি বিতরণ করা সিস্টেমের মধ্যে মধ্যে চালু ছিল হল: UnderstandingMercurial ।
কেন্দ্রীয় সংগ্রহস্থল সহ পুরানো সিস্টেমগুলিতে, (সিভিএস, এসভিএন এবং ক্লিয়ার কেস এর মতো), তবে এটি আরও অনেক গুরুতর বিষয় যা একটি দল পর্যায়ে সিদ্ধান্ত নেওয়া দরকার, এবং উত্তরটি হওয়া উচিত 'পুরানো রিলিজ বজায় রাখার সাথে সাথে মূল লাইনে চালিয়ে যেতে বিকাশ ', বা' একটি বড় পরীক্ষার অংশ হিসাবে '।
বিতরণকারী মডেলটি আরও ভাল, আমার মনে হয় এবং প্রভাবশালী দৃষ্টান্ত হয়ে উঠতে কেবল দুর্দান্ত গ্রাফিকাল সরঞ্জামের অভাব রয়েছে। তবে এটি ব্যাপকভাবে বোঝা যায় না, এবং ধারণাগুলি আলাদা, তাই এটি নতুন ব্যবহারকারীদের জন্য বিভ্রান্তিকর হতে পারে।
আমি পেরফোর্সে লরা উইঙ্গার্ড এবং ক্রিস্টোফার সেওয়াল্ডের পরামর্শটি সত্যিই সংক্ষিপ্ত এবং দরকারী:
* Branch only when necessary.
* Don't copy when you mean to branch.
* Branch on incompatible policy.
* Branch late.
* Branch, instead of freeze.
তাদের প্রত্যেকের এবং অন্যান্য সেরা অনুশীলনের বিশদ বিবরণের জন্য http://www.perfor.com/sites/default/files/pdf/perforce-best-practices.pdf দেখুন ।
শাখা প্রশাখার বিভিন্ন উদ্দেশ্য রয়েছে:
যখনই আপনার মনে হবে।
আপনি সম্ভবত খুব ঘন ঘন হবেন না যদি আপনি একটি কেন্দ্রিক এসসিএমের সাথে কাজ করেন যেহেতু শাখাগুলি সরকারী ভান্ডারের অংশ, এবং এটি সত্যিই অনেক পরীক্ষাকে আমন্ত্রণ জানায় না, মার্জগুলি সত্যই আঘাতের কথা উল্লেখ না করে।
OTOH, বিতরণকৃত এসসিএমগুলিতে একটি শাখা এবং চেকআউটের মধ্যে কোনও প্রযুক্তিগত পার্থক্য নেই এবং মার্জগুলি অনেক সহজ। আপনি প্রায়শই পুরোপুরি শাখা প্রশাখার মতো অনুভব করবেন।
আপনার বর্তমান শাখার উপর ভিত্তি করে যখন আপনাকে পরিবর্তনগুলি করা দরকার তখন সেই শাখা থেকে পরবর্তী প্রকাশের জন্য লক্ষ্যযুক্ত নয় (এবং আগে নয়)।
উদাহরণস্বরূপ, আমরা সাধারণত ট্রাঙ্কে কাজ করি। মুক্তির সময়, কারও কারও কাছে এমন পরিবর্তন করা দরকার যা আমরা বর্তমান প্রকাশে চাই না (এটি মুক্তির আগে হতে পারে, এই মুহুর্তে এটি সাধারণত মুক্তির পরে থাকে)। এটি যখন আমরা শাখা করি, তখন তার নিজস্ব শাখায় রিলিজ দেওয়া এবং পরবর্তী প্রকাশের জন্য ট্রাঙ্কে চালিয়ে যাওয়া continue
সমস্ত প্রযুক্তি একপাশে রেখে .....
শাখা যখন আপনি এটি ফিরে একীভূত করা আরও সহজ জানেন!
মনে রাখবেন যে কোনও প্রকল্পে কাজটি কীভাবে করা হয় তার সাথে মার্জিং সর্বদা প্রভাবিত হবে।
এটি অর্জনের পরে অন্যান্য সমস্ত তৃতীয় সমস্যাগুলি খেলতে আসবে।