উন্নত subversion কৌশল, আমি কি অনুপস্থিত?


10

আমি প্রায় 9 মাস আগে এসভিএন ব্যবহার শুরু করেছি এবং এটি গেম চেঞ্জার হিসাবে কমপক্ষে বলতে হবে। যদিও, আমি মনে করি আমি এখনও কিছুটা হারিয়েছি। আমি মনে করি আমার অ্যাপ্লিকেশন বিকাশের সত্যিকার অর্থে পদক্ষেপ গ্রহণের জন্য আরও অনেক কিছু করার দরকার আছে।

উদাহরণ স্বরূপ

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


3
আপনি (যদি আপনি SVN শুধু জরিমানা দিয়ে এটি ব্যবহার করতে পারেন, চেক আপনার স্থানীয় শাখা জন্য HG ব্যবহারের বিষয়ে বিবেচনা করতে চাইবেন এই )
OneOfOne

হা! আপনি পারদর্শী নিখোঁজ।
ডেক্সটারডব্লিউ

3
"অ্যাডভান্সড সাবভার্সন" শোনার একটি অক্সিমোরনের মতো। গিট বা মার্চুরিয়াল ব্যবহার করুন, কেবল যদি স্থানীয়ভাবে।
ম্যাকনিল

উত্তর:


7

আপনার উদাহরণকে সম্বোধন করার জন্য, এটি করার জন্য আপনার কাছে তিনটি সম্ভাবনা রয়েছে:

  1. আপনি একক ফাইল প্রতিশ্রুতিবদ্ধ করতে পারেন। আপনি যদি সংগ্রহশালা অ্যাক্সেসের জন্য কোনও আইডিই ব্যবহার করেন তবে কমিট করার আগে একক ফাইল নির্বাচন বা নির্বাচন নির্বাচন করার জন্য এটির সম্ভবত একটি ভিউ রয়েছে। কমান্ড-লাইনে আপনি svn commit file1 path1/file2 path2ফাইল 1, প্যাথ 1 / ফাইল 2 এবং পাথ 2 এর নীচে প্রতিটি পরিবর্তন প্রতিশ্রুতিবদ্ধ করতে টাইপ করুন ।
  2. আপনি বিভিন্ন কাজের অনুলিপি করতে পারেন। আপনি আপনার স্ট্যান্ডার্ড ওয়ার্কিং কপিতে আপনার বিশাল বৈশিষ্ট্যটিতে কাজ করেন এবং জরুরি বাগ সম্পর্কে তথ্য পান। আপনি আপনার সংগ্রহশালাটিকে একটি ভিন্ন ডিরেক্টরিতে চেকআউট করতে পারেন এবং এই দ্বিতীয় কার্যকরী অনুলিপিতে বাগটি ঠিক করতে পারেন। এমনকি আপনি যে উপাদানটি ত্রুটিযুক্ত সেখানে কেবল একটি উপ-ডিরেক্টরিটিও পরীক্ষা করতে পারেন। বাগফিক্সের পরে আপনি বড় বৈশিষ্ট্যটিতে আপনার কাজটি প্রতিশ্রুতি ছাড়াই আপনার দ্বিতীয় কার্যকরী অনুলিপিতে প্রতিশ্রুতিবদ্ধ করতে পারেন। সম্পাদনা: আনা লিয়ারের উত্তরেও সেভাবে বর্ণিত হয়েছে।
  3. আপনি আপনার বৈশিষ্ট্যটিতে কাজের জন্য একটি শাখা তৈরি করেন। তার জন্য আপনি কপি কমান্ডটি ব্যবহার করুন। আপনি আপনার সংগ্রহস্থলের জন্য মান-বিন্যাস ব্যবহার করেন তাহলে (projectname এবং নামের সাথে সাবডিরেক্টরি সঙ্গে ডিরেক্টরি ট্রাঙ্ক, ট্যাগ এবং শাখা, প্রকল্প ধারণকারী ট্রাঙ্ক) শাখা তৈরি করতে নিম্নরূপ মত SVN-অনুলিপি-কমান্ড ব্যবহার করতে পারেন: svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X। এখন আপনি নিজের কাজের অনুলিপিটি নতুন স্থানে স্যুইচ করতে পারেন: এসএনএন সুইচ svn switch svn://hostname/projectname/branches/branch-for-feature-X। আপনি যদি বাগ-ফিক্সিং মোডে স্যুইচ করেন তবে আপনি আপনার আসল পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করেন, আপনার কার্যকরী অনুলিপিটি ট্রাঙ্কে ফিরে যান, বাগটি সংশোধন করে প্রতিশ্রুতি দেন এবং কার্যকরী অনুলিপিটি আপনার বৈশিষ্ট্য-শাখায় ফিরে যান। আপনি যদি বৈশিষ্ট্যটি বিকাশের সাথে প্রস্তুত থাকেন তবে আপনি এটিকে আবার ট্রাঙ্কে একীভূত করতে পারেন।

বর্ণিত সাধারণ মামলার জন্য আপনি সাধারণত # 1 ব্যবহার করবেন (আমি বেশিরভাগ ক্ষেত্রেই ব্যবহার করি), কখনও কখনও # 2। শাখাগুলির সাথে কাজ করা (কেস # 3) আরও জটিল ( আরও পড়ুন ) তবে আরও কৌশল অবলম্বন করার অনুমতি দেয়। তবে শাখাগুলি আপনার সাবরেপোসিটরির বর্ণনার সাথে মিলে।

আপনার উদাহরণ ছাড়াও আমি বেশি কিছু বলতে পারি না। সাবভারশন সম্পর্কে অনেকগুলি বিষয় রয়েছে তবে আপনি কী ইতিমধ্যে ব্যবহার করছেন এবং আপনার প্রকল্পের জন্য আপনার কী প্রয়োজন তা আমি জানি না। এসভিএন সম্পর্কে আরও জানার জন্য এসভিএন-বুক একটি দুর্দান্ত সংস্থান: http://svnbook.red-bean.com/


3
# 1 পদ্ধতির সমস্যাটি হ'ল আপনি সর্বদা আগেই জানতে পারবেন না যে আপনার নতুন বৈশিষ্ট্য এবং বাগ-ফিক্স উভয়ই একই ফাইলগুলিতে পরিবর্তন জড়িত না। এই কারণে, আমি # 2 (প্রতিটি বৈশিষ্ট্য বা বাগ ফিক্সের জন্য স্বতন্ত্র ওয়ার্কিং কপি) বা # 3 (প্রতিটি বৈশিষ্ট্য বা বাগ ফিক্সের জন্য স্বতন্ত্র শাখা) পুনরুদ্ধার করব। শাখাগুলির সুবিধা রয়েছে যা আপনি ট্রাঙ্ক থেকে চেকআউটগুলিকে প্রভাবিত না করে বৈশিষ্ট্য বা বাগ ফিক্স সম্পূর্ণ হওয়ার আগে কোনও শাখায় পরিবর্তন আনতে পারেন (আলাদা ওয়ার্কিং কপি সহ, সমস্ত কমিট ট্রাঙ্ককে প্রভাবিত করে)।
স্টিফেন সি স্টিল

7

আপনি কেবল একটি অনুলিপি নিয়ে সেখানে আপনার সমস্ত পরিবর্তন করার পরিবর্তে কোডটি বিভিন্ন স্যান্ডবক্সে পরীক্ষা করে দেখতে পারেন।

সুতরাং আপনার একটি ফোল্ডার কাঠামো থাকতে পারে যা এরকম কিছু হয়:

D:\Dev\MajorFeature1
D:\Dev\Bug12345
D:\Dev\MajorFeature2

প্রভৃতি

এগুলির সবগুলিই আপনার এসভিএন-তে একই অবস্থান থেকে পরীক্ষা করা যেতে পারে, যেমন http://mysvnrepo/trunk

বৈশিষ্ট্য বিকাশকারীগুলিকে প্রভাবিত না করে আপনি নিজের বাগ ফিক্সের স্যান্ডবক্স থেকে এইভাবে প্রতিশ্রুতিবদ্ধ করতে পারেন, যদিও svn updateবাগ ফিক্সের জন্য প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি পেতে আপনার অন্যান্য স্যান্ডবক্স থেকে চালানো দরকার ।


4

আপনি কি আদৌ সাবভার্সন শাখা দেখেছেন ?

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

অন্য পদ্ধতির হ'ল একটি নির্দিষ্ট রিলিজের জন্য একটি শাখা রাখা, যাতে ট্রাঙ্কের কারণে সমস্যা সৃষ্টি হওয়ার কারণে অন্য কোনও কাজ দুর্ঘটনাক্রমে না ঘটে। আপনি প্রয়োজন হিসাবে 'রিলিজ ব্রাঞ্চ' বাগ-ফিক্স করতে পারেন এবং তারপরে প্রস্তুত হয়ে গেলে সেই ফিক্সগুলি ট্রাঙ্কে ফিরে ভাঁজ করতে পারেন।

আপনার বিকাশকারীদের একাধিক ওয়ার্কিং কপি - ট্রাঙ্ক এবং যে কোনও শাখার চেক আউট থাকতে পারে বা কান্ডের সাহায্যে ট্রাঙ্ক এবং একটি নির্দিষ্ট শাখার মধ্যে অদলবদল করতে পারে svn switch

আমি প্রচুর 'স্যান্ডবক্স' ওয়ার্কিং কপি রাখার প্রস্তাব দিচ্ছি না যা আপনি আলাদাভাবে চেকআউট রাখেন (ক) এটি অন্যের সাথে সহযোগিতা নিষিদ্ধ করে এবং (খ) দুর্ঘটনাক্রমে কাজ করে না-তবুও মুখ্য ট্রাঙ্কে পরিবর্তন আনতে খুব সহজ হবে।


3

আমার ওয়ার্কিং কপির বর্তমান আকার 10 জিবি, 50.000 এরও বেশি ফাইল রয়েছে। আমার বিভিন্ন শাখার জন্য বেশ কয়েকটি অনুলিপি থাকতে পারে তবে নতুন অনুলিপি তৈরি করতে এটি কিছুটা সময় নেয়!

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

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