ঘড়ির বাইরে আমি চেষ্টা করতে যাচ্ছি এবং আমার সংস্থার জন্য সংস্করণ নিয়ন্ত্রণের জন্য একটি কৌশল নিয়ে আসছি; আমরা বর্তমানে এসভিএন ব্যবহার করি তবে এর কোনও কাঠামো নেই - আমাদের মূলত কেবল একটি ট্রাঙ্ক থাকে এবং কেবল এটির প্রতিশ্রুতিবদ্ধ। সম্প্রতি ডেভলপমেন্ট ম্যানেজার একটি দ্বিতীয় সংগ্রহশালা শুরু করেছিল যা আমাদের "ট্যাগ" হিসাবে কাজ করে তবে এটি একই ট্র্যাপোসটরির অংশ না হয়ে পুরোপুরি পৃথক পৃথক একটি ম্যানুয়ালি "ট্রাঙ্ক" এর সাথে মিশতে হবে। প্রকৃতপক্ষে কেবলমাত্র একটি ফোল্ডার রয়েছে যার নাম "দেব" (বিভিন্ন তারিখে আসলে আলাদা আলাদা "দেব" ফোল্ডার রয়েছে তবে কেবল "দেব" প্রধান একটি) এবং এর অধীনে সমস্ত কিছু রয়েছে; অন্যান্য সমস্ত প্রকল্প। এটি প্রকল্প দ্বারা মোটেই সংগঠিত নয়, এর শাখা / ট্যাগ / ট্রাঙ্ক বা কোনও কিছুর ধারণা নেই। যে ব্যক্তি প্রাথমিকভাবে এটি সেট আপ করেছে (দীর্ঘকাল চলে গেছে, অবশ্যই) দেখে মনে হয়েছিল যে কীভাবে এসভিএন সেট আপ করতে হবে তা মোটেই জানে না এবং তার পর থেকে কেউ কোনও কিছু ভেঙে যাওয়ার ভয়ে কীভাবে সঠিকভাবে কীভাবে কাজ করবেন তা শিখতে বিরক্ত করেননি। আমরা কোনও ধরণের সিআই (বা দুর্ভাগ্যক্রমে স্বয়ংক্রিয় পরীক্ষা) ব্যবহার করি না।
প্রথমত, আমাদের কি প্রকল্প দ্বারা পৃথক করা উচিত? উদাহরণস্বরূপ, আমাদের কাছে রয়েছে: দুটি এএসপি.এনইটি ওয়েব সাইট (ওয়েব অ্যাপ্লিকেশন নয়, ওয়েব সাইট নয়), একটি ওয়েব সার্ভিস, সমস্ত টেবিল স্ক্রিপ্ট এবং সঞ্চিত পদ্ধতিগুলির জন্য একটি স্থাপনার ফোল্ডার, বাহ্যিক প্রকল্পগুলির জন্য দুটি কমান্ড-লাইন ক্লায়েন্ট যা কল করে ওয়েবসাইট এবং একটি ভাগ করা ফোল্ডার যা সাধারণ ব্যবসায়ের অবজেক্ট এবং এর মতো। এগুলির প্রত্যেকের নিজস্ব শাখা / ট্যাগ / ট্রাঙ্ক সেটআপ সহ নিজস্ব প্রকল্প হওয়া উচিত, বা এটির মতো হওয়া উচিত:
dev/
branches/
tags/
trunk/
Site1/
Site2/
WebService/
SharedCode/
এবং সমস্ত শাখা এবং সমস্ত কি পুরো দেব ফোল্ডারের একটি অনুলিপি আছে? এই পদ্ধতিকে গ্রাস করা সহজ হতে পারে যেহেতু আমাদের প্রায়শই এমন পরিস্থিতি হয় যেখানে আমাদের ভাগ করা কোড লাইব্রেরিতে এবং কমপক্ষে একটি ওয়েবসাইট (সাধারণত উভয়) ওয়েব সাইটের পরিবর্তন করতে হয়।
দ্বিতীয়ত, আমরা আমাদের ডেভ সার্ভার এবং লাইভ সার্ভারে নিয়মিত রিলিজ করি (আমাদের পার্লেন্সে "ধাক্কা" দিই)। যা হ্যান্ডেল করার সর্বোত্তম উপায়টি পড়েছি তা থেকে সমস্ত বিকাশ ট্রাঙ্কে চলে যায় /, শাখাগুলি "অস্থায়ী" এবং ট্রাঙ্ককে প্রভাবিত করতে পারে এমন একটি নতুন বৈশিষ্ট্য যুক্ত করার জন্য ব্যবহৃত হয়, এবং ট্যাগগুলি প্রকাশের জন্য? সুতরাং, আমরা প্রতি মাসে চাপ দিন যাক, এবং আমি একেবারে নতুন মডিউলটিতে কাজ করছি। আমি শাখা ট্রাঙ্ক করব, এবং আমার কোডের জন্য সেই শাখাটি ব্যবহার করব, এটি লিখতে এবং এটি এবং যা কিছু যাচাই করার জন্য। মডিউলটি শেষ হয়ে গেলে, আমি এটিকে আবার ট্রাঙ্কে একীভূত করব (এবং সম্ভবত শাখাটি মুছুন), এবং যখন আমরা মোতায়েনের জন্য প্রস্তুত হই তখন আমরা এটি ট্যাগ করতাম ("মে2011" আসুন বলি)। এটি লাইভ হওয়ার পরে যদি আমাদের একটি বাগ ফিক্স থাকে তবে এটি মে ২০১১ এর ট্যাগে স্থির করে ট্রাঙ্কে একীভূত করা হবে (সুতরাং ট্রাঙ্কটিও ঠিক হয়ে যায়), এবং তারপরে মে ২০১১১ কে আবার ঠিক করে ধাক্কা দিয়ে বের করা হবে? এটি কি ট্যাগিংয়ের অভিপ্রায়?