আপনি কীভাবে আপনার সংস্করণ নিয়ন্ত্রণের সংগ্রহের ব্যবস্থা করেন?


108

প্রথমত, আমি এটি সম্পর্কে জানি: আপনি কীভাবে বাড়ির সফ্টওয়্যার প্রকল্পগুলির জন্য সাবভার্সন সংগ্রহের ব্যবস্থা করবেন? এর পরে, আসল প্রশ্ন: আমার দলটি আমাদের সংগ্রহশালার পুনর্গঠন করছে এবং আমি কীভাবে এটি সংগঠিত করব সে সম্পর্কে ইঙ্গিতগুলি সন্ধান করছি। (এক্ষেত্রে এসভিএন)। এখানে আমরা কী নিয়ে এসেছি তা এখানে। আমাদের কাছে একটি সংগ্রহস্থল, একাধিক প্রকল্প এবং একাধিক এসএনএন রয়েছে: বহিরাগত ক্রস-রেফারেন্স

\commonTools /*tools used in all projects. Referenced in each project with svn:externals*/
   \NUnit.v2.4.8
   \NCover.v.1.5.8
   \<other similar tools>
\commonFiles /*settings strong name keys etc.*/
   \ReSharper.settings
   \VisualStudio.settings
\trash /*each member of the team has trash for samples, experiments etc*/
   \user1
   \user2
\projects
   \Solution1 /*Single actual project (Visual Studio Solution)*/
      \trunk
         \src
             \Project1 /*Each sub-project resulting in single .dll or .exe*/
             \Project2
         \lib
         \tools
         \tests
         \Solution1.sln
      \tags
      \branches
   \Solution2
      \trunk
         \src
             \Project3 /*Each sub-project resulting in single .dll or .exe*/
             \Project1 /*Project1 from Solution1 references with svn:externals*/
         \lib
         \tools
         \tests
         \Solution2.sln
      \tags
      \branches

শব্দভান্ডার সাফ করার জন্য: সমাধানটির অর্থ একক পণ্য, প্রকল্পটি একটি ভিজ্যুয়াল স্টুডিও প্রকল্প (যার ফলে একটি একক। Dll বা একক .exe আসে)

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

আপনি এই লেআউট সম্পর্কে কি মনে করেন? বিশেষত এসএনএন ব্যবহার সম্পর্কে: বহিরাগত। এটি একটি আদর্শ সমাধান নয়, তবে সমস্ত কল্যাণকর বিষয় বিবেচনা করে এটি আমাদের পক্ষে সবচেয়ে ভাল। তুমি এটা কি ভাবে করবে?


আপনি কি নিশ্চিত যে "আঘাত"? না বরং "আবর্জনা"?
এসএসসি

উত্তর:


92

আপনি যদি নীচে আমার প্রস্তাবগুলি অনুসরণ করেন (আমার কয়েক বছরের জন্য রয়েছে) তবে আপনি সক্ষম হবেন:

- প্রতিটি প্রকল্প উত্স নিয়ন্ত্রণে যে কোনও জায়গায় রেখে দিন যতক্ষণ না আপনি প্রকল্পের মূল ডিরেক্টরি থেকে কাঠামোটি নীচে সংরক্ষণ করেন

- ন্যূনতম ঝুঁকি এবং ন্যূনতম প্রস্তুতি সহ যে কোনও যেকোন যেকোন জায়গায় প্রতিটি প্রকল্প তৈরি করুন

- প্রতিটি প্রকল্প সম্পূর্ণভাবে একা তৈরি করুন, যতক্ষণ না আপনার বাইনারি নির্ভরতা (স্থানীয় "গ্রন্থাগার" এবং "আউটপুট" ডিরেক্টরিগুলি) অ্যাক্সেস থাকে

- প্রকল্পগুলির যে কোনও সংমিশ্রণের সাথে বিল্ড এবং কাজ করুন, কারণ তারা স্বাধীন

- একক প্রকল্পের একাধিক অনুলিপি / সংস্করণগুলি তৈরি এবং কাজ করুন, যেহেতু তারা স্বাধীন independent

- উত্পন্ন ফাইল বা লাইব্রেরি সহ আপনার উত্স নিয়ন্ত্রণের সংগ্রহস্থলকে এলোমেলো করে এড়ান

আমি প্রস্তাব দিই (এখানে গরুর মাংস রয়েছে):

  1. একটি একক প্রাথমিক সরবরাহযোগ্য, যেমন একটি .DLL, .EXE, বা। জেআর (ভিজ্যুয়াল স্টুডিও সহ ডিফল্ট) উত্পাদন করতে প্রতিটি প্রকল্পকে সংজ্ঞায়িত করুন।

  2. প্রতিটি প্রকল্পকে একক মূল দিয়ে ডিরেক্টরি গাছ হিসাবে কাঠামো করুন।

  3. প্রতিটি প্রকল্পের জন্য এটির মূল ডিরেক্টরিতে একটি স্বয়ংক্রিয় বিল্ড স্ক্রিপ্ট তৈরি করুন যা এটি কোনও আইডিইয়ের উপর নির্ভরশীলতা ছাড়াই স্ক্র্যাচ থেকে তৈরি করবে (তবে এটি সম্ভবপর হলে আইডিইতে নির্মিত হতে বাধা দেবে না)।

  4. উইন্ডোজ .NET প্রকল্পের জন্য NAnt বা আপনার OS, টার্গেট প্ল্যাটফর্ম ইত্যাদির উপর ভিত্তি করে অনুরূপ কিছু বিবেচনা করুন

  5. প্রতিটি প্রকল্পের বিল্ড স্ক্রিপ্টকে একটি একক স্থানীয় ভাগ করা "লাইব্রেরি" ডিরেক্টরি থেকে তার বাহ্যিক (তৃতীয় পক্ষের) নির্ভরতাগুলি রেফারেন্স করুন %DirLibraryRoot%\ComponentA-1.2.3.4.dll, সংস্করণ অনুসারে প্রতিটি বাইনারি পুরোপুরি চিহ্নিত করা: , %DirLibraryRoot%\ComponentB-5.6.7.8.dll

  6. প্রতিটি প্রকল্পের বিল্ড স্ক্রিপ্টকে একক স্থানীয় ভাগ করা "আউটপুট" ডিরেক্টরিতে প্রাথমিক বিতরণ প্রকাশ করুন: %DirOutputRoot%\ProjectA-9.10.11.12.dll, %DirOutputRoot%\ProjectB-13.14.15.16.exe

  7. প্রতিটি লাইব্রেরি স্ক্রিপ্টকে "লাইব্রেরি" এবং "আউটপুট" ডিরেক্টরিতে কনফিগারযোগ্য এবং সম্পূর্ণ-সংস্করণযুক্ত পরম পাথগুলি (উপরে দেখুন) এর মাধ্যমে তার নির্ভরতাগুলি রেফারেন্স করুন এবং যেখানেই নেই O

  8. কখনও কোনও প্রকল্পকে অন্য কোনও প্রকল্প বা এর যে কোনও বিষয়বস্তুতে সরাসরি রেফারেন্স দেওয়া যাক - কেবলমাত্র "আউটপুট" ডিরেক্টরিতে প্রাথমিক সরবরাহযোগ্যগুলির উপর রেফারেন্সের অনুমতি দিন (উপরে দেখুন)।

  9. প্রতিটি প্রকল্প বিল্ড স্ক্রিপ্টকে তার প্রয়োজনীয় বিল্ড সরঞ্জামগুলি একটি কনফিগারযোগ্য এবং সম্পূর্ণ-সংস্করণযুক্ত পরম পথ দ্বারা রেফারেন্স করুন: %DirToolRoot%\ToolA\1.2.3.4, %DirToolRoot%\ToolB\5.6.7.8

  10. প্রকল্পের রুট ডিরেক্টরিতে একটি সুনির্দিষ্ট পাথ আপেক্ষিক দ্বারা প্রত্যেক প্রকল্পের বিল্ড স্ক্রিপ্ট রেফারেন্স উৎস বিষয়বস্তু তৈরি করুন: ${project.base.dir}/src, ${project.base.dir}/tst(সিনট্যাক্স বিল্ড টুল দ্বারা পরিবর্তিত হয়)।

  11. সর্বদা একটি প্রকল্প বিল্ড স্ক্রিপ্টের জন্য প্রতিটি ফাইল বা ডিরেক্টরিকে একটি নিরঙ্কুশ, কনফিগারযোগ্য পাথ (কনফিগারযোগ্য ভেরিয়েবলের দ্বারা নির্দিষ্ট ডিরেক্টরিতে মূল): ${project.base.dir}/some/dirsঅথবা এর মাধ্যমে উল্লেখ করতে হয় ${env.Variable}/other/dir

  12. কখনও কখনও প্রজেক্ট বিল্ড স্ক্রিপ্টকে যেমন প্রাসঙ্গিক পথের সাথে .\some\dirs\hereবা যেমন ..\some\more\dirsসর্বদা নিখুঁত পাথ ব্যবহার করে তা উল্লেখ করার অনুমতি দেয় ।

  13. কখনও প্রজেক্ট বিল্ড স্ক্রিপ্টকে এমন কোনও নিখুঁত পাথ ব্যবহার করে যেমন কনফিগারযোগ্য রুট ডিরেক্টরি নেই, C:\some\dirs\hereবা ব্যবহার করে তা উল্লেখ করতে মঞ্জুরি দেয় \\server\share\more\stuff\there

  14. প্রজেক্ট বিল্ড স্ক্রিপ্ট দ্বারা রেফারেন্সযুক্ত প্রতিটি কনফিগারযোগ্য রুট ডিরেক্টরিগুলির জন্য, একটি পরিবেশের ভেরিয়েবল নির্ধারণ করুন যা re রেফারেন্সগুলির জন্য ব্যবহৃত হবে।

  15. প্রতিটি মেশিনটি কনফিগার করতে আপনাকে অবশ্যই পরিবেশের ভেরিয়েবলের সংখ্যা হ্রাস করার চেষ্টা করতে হবে।

  16. প্রতিটি মেশিনে, একটি শেল স্ক্রিপ্ট তৈরি করুন যা প্রয়োজনীয় পরিবেশের ভেরিয়েবলগুলি সংজ্ঞায়িত করে, যা THAT মেশিনের সাথে সুনির্দিষ্ট (এবং সম্ভবত এটি ব্যবহারকারীর সাথে সম্পর্কিত, যদি প্রাসঙ্গিক হয়)।

  17. উত্স নিয়ন্ত্রণে মেশিন-নির্দিষ্ট কনফিগারেশন শেল স্ক্রিপ্টটি রাখবেন না; পরিবর্তে, প্রতিটি প্রকল্পের জন্য, প্রকল্পের মূল ডিরেক্টরিতে স্ক্রিপ্টটির একটি অনুলিপি টেমপ্লেট হিসাবে প্রতিশ্রুতিবদ্ধ করুন।

  18. প্রতিটি প্রজেক্ট বিল্ড স্ক্রিপ্ট এর প্রতিটি পরিবেশের ভেরিয়েবলগুলি পরীক্ষা করতে প্রয়োজনীয় এবং যদি সেগুলি সংজ্ঞায়িত না করা হয় তবে অর্থবোধক বার্তা দিয়ে বাতিল করতে হবে।

  19. প্রতিটি নির্ভরশীল বিল্ড টুল এক্সিকিউটেবল, বহিরাগত গ্রন্থাগার ফাইল এবং নির্ভরশীল প্রকল্প বিতরণযোগ্য ফাইলগুলি পরীক্ষা করতে প্রতিটি প্রকল্প বিল্ড স্ক্রিপ্টের প্রয়োজন এবং যদি সেই ফাইলগুলি না থাকে তবে একটি অর্থবহ বার্তা দিয়ে বাতিল করতে হবে।

  20. উত্স নিয়ন্ত্রণে যে কোনও উত্পন্ন ফাইল ফাইল করার প্রলোভনের প্রতিরোধ করুন - কোনও প্রকল্প বিতরণযোগ্য নয়, উত্পন্ন উত্স নেই, উত্পন্ন কোনও ডকস ইত্যাদি নেই etc.

  21. আপনি যদি কোনও আইডিই ব্যবহার করেন তবে যা কিছু প্রকল্প নিয়ন্ত্রণ ফাইল আপনি পারেন তা উত্পন্ন করুন এবং উত্স নিয়ন্ত্রণে তাদের প্রতিশ্রুতিবদ্ধ করবেন না (এটিতে ভিজ্যুয়াল স্টুডিও প্রকল্প ফাইলগুলি অন্তর্ভুক্ত)।

  22. বিকাশকারী ওয়ার্কস্টেশনগুলিতে অনুলিপি / ইনস্টল করার জন্য সমস্ত বাহ্যিক গ্রন্থাগার এবং সরঞ্জামগুলির একটি সরকারী অনুলিপি সহ একটি সার্ভার স্থাপন করুন। আপনার উত্স নিয়ন্ত্রণ সংগ্রহস্থল সহ এটি ব্যাক আপ করুন।

  23. কোনও বিকাশ সরঞ্জামের সাথে একটি অবিচ্ছিন্ন ইন্টিগ্রেশন সার্ভার (বিল্ড মেশিন) স্থাপন করুন।

  24. আপনার বাহ্যিক লাইব্রেরি এবং বিতরণযোগ্য আইভির (পিঁপড়ার সাথে ব্যবহৃত) পরিচালনার জন্য একটি সরঞ্জাম বিবেচনা করুন।

  25. মাভেন ব্যবহার করবেন না - এটি প্রাথমিকভাবে আপনাকে আনন্দিত করবে এবং শেষ পর্যন্ত আপনাকে কেঁদে ফেলবে।

মনে রাখবেন যে এগুলির কোনওটি সাবভারশনের জন্য সুনির্দিষ্ট নয় এবং এর বেশিরভাগটি কোনও ওএস, হার্ডওয়্যার, প্ল্যাটফর্ম, ভাষা ইত্যাদির জন্য লক্ষ্যযুক্ত প্রকল্পগুলির ক্ষেত্রে জেনেরিক I -আমি বিশ্বাস করি আপনি আপনার ওএস বা পছন্দের সরঞ্জামটিতে অনুবাদ করবেন।

ভিজ্যুয়াল স্টুডিও সমাধান সম্পর্কিত অতিরিক্ত নোট: এগুলিকে উত্স নিয়ন্ত্রণে রাখবেন না! এই পদ্ধতির সাথে আপনার কোনও প্রয়োজন নেই বা আপনি এগুলি উত্পন্ন করতে পারবেন (ঠিক ভিজ্যুয়াল স্টুডিও প্রকল্প ফাইলগুলির মতো)। তবে আমি সমাধান ফাইলগুলি পৃথক বিকাশকারীদের যথাযথ দেখতে (যেমন উত্স নিয়ন্ত্রণে চেক ইন করা হয়নি) তৈরি / ব্যবহার করতে রেখে দেওয়া ভাল। আমি Rob.slnআমার ওয়ার্কস্টেশনে একটি ফাইল রাখি যা থেকে আমি আমার বর্তমান প্রকল্প (গুলি) উল্লেখ করি। যেহেতু আমার প্রকল্পগুলি সমস্ত একা একা, তাই আমি ইচ্ছামত প্রকল্পগুলি যুক্ত / অপসারণ করতে পারি (এর অর্থ কোনও প্রকল্প-ভিত্তিক নির্ভরতার উল্লেখ নেই)।

দয়া করে সাবভারশন এক্সটার্নালগুলি (বা অন্যান্য সরঞ্জামের অনুরূপ) ব্যবহার করবেন না, এগুলি একটি অ্যান্টি-প্যাটার্ন এবং অতএব অপ্রয়োজনীয়।

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

@ ভনসি: আপনার বিল্ড স্ক্রিপ্টটি যখন ভেঙে যায় তখন আপনি "অ্যান্টি-অ্যাবসিডজার" এর পরিবর্তে "অ্যান্টজজার" দিয়ে কাজ করতে চান না কারণ আপনি অজান্তেই এন্টির একটি বেমানান সংস্করণ দিয়ে চালিয়েছেন। এটি পিঁপড় 1.6.5 এবং 1.7.0 এর মধ্যে বিশেষত সাধারণ। সাধারণকরণ, আপনি সর্বদা জানতে চান আপনার প্ল্যাটফর্ম (জাভা এবিসিডি) এবং আপনার বিল্ড সরঞ্জাম (পিপীলিকা EFGH) সহ প্রতিটি উপাদানটির নির্দিষ্ট সংস্করণটি কী ব্যবহৃত হচ্ছে। অন্যথায়, আপনি শেষ পর্যন্ত একটি ত্রুটির মুখোমুখি হবেন এবং আপনার প্রথম বিআইজি সমস্যাটি আপনার বিভিন্ন উপাদানগুলির কী সংস্করণ জড়িত তা সন্ধান করবে সামনে সমস্যাটি সমাধান করা সহজ to


6
তাই অনেক পয়েন্ট সমালোচনা ... বলার জন্য যথেষ্ট এই হল না একটি সার্বজনীন রেসিপি! প্রকল্পটি বড় হলে এবং তৃতীয় পক্ষের সংখ্যাটি গুরুত্বপূর্ণ হলে বিশেষত পঞ্চম এবং 6 নম্বর ঠিক আছে: আপনি 'এন্ট.জার' দিয়ে সর্বদা কাজ করতে চান, 'অ্যান্ট ১.৪.৪.জার' বা পণ্য মাই প্রোডাক্ট নয় .exe, 1.3.exe নয়
ভোনসি

5
তবুও, আপনি তৈরি করছেন এমন আরও অনেক পয়েন্টের জন্য +1 যা বৈধ এবং বিষয়টিতে আপনার বিশাল অভিজ্ঞতার জন্য উচ্চারণ করে।
ভনসি

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

2
@ রব - আপনি কী আপনার 'এক্সটার্নালস অ্যান্টিপ্যাটার্ন' থিমটি ব্যাখ্যা করতে পারেন? আমি এখানে এটি একটি প্রশ্ন হিসাবে উত্থাপিত করেছি: stackoverflow.com/questions/338824/…
কেন

3
@ মাকিস: আপনি সঠিক হবেন, যদি # 12 টি # 13 দ্বারা ভারসাম্যহীন না হয়। প্রতিটি প্রকল্পের মধ্যে একটি ফাইল বা ডিরেক্টরি প্রতিটি রেফারেন্স একটি নিখুঁত পাথের মাধ্যমে করা উচিত যা একটি কনফিগারযোগ্য রুট ডিরেক্টরি ভেরিয়েবল, যেমন পিঁপড়ায় $ {ভিত্তিক} /sub/dir/file.txt দিয়ে শুরু হয় via
রব উইলিয়ামস

3

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


7
@ বাল দয়া করে ইউআরএল সংক্ষিপ্তকরণ পরিষেবা ব্যবহার করবেন না। এটা অনেক ভাল বলতে "এখন এটা 2nd সংস্করণ এর: Subversion ব্যবহার বাস্তবমুখী সংস্করণ কন্ট্রোল "
meagar

3

আপনি যা পোস্ট করেছেন তার সাথে প্রায় সঠিকভাবে মেলে আমরা আমাদের সেট আপ করেছি। আমরা সাধারণ ফর্মটি ব্যবহার করি:

\Project1
   \Development (for active dev - what you've called "Trunk", containing everything about a project)
   \Branches (For older, still-evolving supported branches of the code)
       \Version1
       \Version1.1
       \Version2
   \Documentation (For any accompanying documents that aren't version-specific

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


3
আমি অবাক হয়েছি যে নথিগুলির জন্য আপনার কাছে পৃথক ডিরেক্টরি রয়েছে যা সংস্করণগুলির মধ্যে পরিবর্তন হয় না ... আমি এই জাতীয় পণ্যটিতে কাজ করার আনন্দ পাই না! :)
আরকবান

1

কেন এটি সমস্ত এক ভান্ডার মধ্যে আছে? কেন না প্রতিটি প্রকল্পের জন্য একটি পৃথক সংগ্রহস্থল (যার অর্থ "সমাধান")?

ভাল, কমপক্ষে আমি এক-প্রকল্প-প্রতি-সংগ্রহস্থল-পদ্ধতির ব্যবহার করেছি। আপনার সংগ্রহস্থল কাঠামো আমার কাছে অত্যধিক জটিল বলে মনে হচ্ছে।

এবং এই একটি বড় সংগ্রহস্থলে আপনি কতটি প্রকল্প রাখার পরিকল্পনা করছেন? 2? 3? 10? 100?

এবং যখন আপনি একটি প্রকল্পের উন্নয়ন বাতিল করেন আপনি কী করবেন? কেবল এটি সংগ্রহস্থল গাছ থেকে মুছুন যাতে ভবিষ্যতে এটি খুঁজে পাওয়া শক্ত হয়ে যায়। নাকি চিরকালের জন্য শুয়ে থাকতে হবে? বা আপনি যখন একটি প্রকল্প পুরোপুরি অন্য সার্ভারে স্থানান্তর করতে চান?

এবং এই সমস্ত সংস্করণ নম্বর গণ্ডগোল সম্পর্কে কি? একটি প্রকল্পের সংস্করণ সংখ্যাগুলি 2, 10, 11 এর মতো চলছে, অন্যটি 1, 3, 4, 5, 6, 7, 8, 9, 12 এর মতো চলে ...

হতে পারে আমি বোকা, তবে আমি সংগ্রহস্থল প্রতি একটি প্রকল্প পছন্দ করি।


1. একটি সংগ্রহস্থলটি একটি কোম্পানির নীতি, এটি পরিবর্তন করতে পারে না। ২. আমাদের প্রায় ডজন ডজন সমাধান থাকবে। ৩. সংস্করণ সংখ্যা দ্বারা আপনি সংশোধন বোঝাতে চান? এটি আমাদের কাছে কোনও সমস্যা নয়।
Krzysztof কোজমিক

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

1
দয়া করে মনে রাখবেন যে অনেকগুলি (সবচেয়ে?) উত্স নিয়ন্ত্রণ সরঞ্জামগুলিতে একাধিক সংগ্রহস্থল থাকা খুব ব্যয়বহুল হতে পারে, যেমন আপনি যখন সুরক্ষা প্রয়োগ করেন implement
রব উইলিয়ামস

0

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

এই কারণে, ভাগ করা প্রকল্পগুলি এক বা একাধিক অংশীদারি সমাধানগুলিতে স্থাপন করা সুবিধাজনক হতে পারে (এবং এইভাবে আপনার কাঠামোর শীর্ষ স্তরের ডিরেক্টরিগুলি) এবং তারপরে যে কোনও সমাধানের প্রতিটি প্রকাশের সাথে তাদের শাখা করে ।


আপনি কিছুটা হলেও ঠিক আছেন। তবে আমরা চাইলে রেফারেন্সটি আপডেট করতে পারি। এবং ভাগ করা প্রকল্পগুলি তাদের নিজস্ব সমাধানে রাখলে তেমন কোনও অর্থ হয় না। যদিও আমি এসএনএন এর চেয়ে আরও ভাল সমাধান খুঁজে পেতে চাই: সমস্ত জায়গাতেই এক্সটার্নাল।
ক্রিজিসটফ কোজমিক 19

"আমরা চাইলে রেফারেন্স আপডেট করুন" বলতে কী বোঝায়? সলিউশন 1 টি শাখা ছাড়াই আপনি কীভাবে প্রজেক্ট 1 শাখা করতে পারবেন (যা আপনি যখন সলিউশন 2 শাখা করবেন তখনই কাঙ্ক্ষিত বলে মনে হয়)।
সি ড্রাগন 76

বিশেষ করে ভিজ্যুয়াল স্টুডিও সমাধানগুলি উত্স নিয়ন্ত্রণে না রাখার জন্য দয়া করে আমার বিশদ উত্তরটি দেখুন।
রব উইলিয়ামস

0

আপেক্ষিক পথ ইস্যুতে যুক্ত করতে:

আমি নিশ্চিত না যে এটি একটি সমস্যা:
কেবলমাত্র সলিউশন 2 নামের ডিরেক্টরিতে সলিউশন 1 / ট্রাঙ্কটি চেকআউট করুন, সলিউশন 2 এর জন্য ডাইটো: 'ডিরেক্টরিগুলি' প্রকৃত প্রতিনিধিত্বকারী শাখার লক্ষ্যটি কোনও ওয়ার্ক স্পেসে একবার আমদানি করা না হলে এটি দৃশ্যমান হবে না । সুতরাং 'সমাধান 1' (আসলে 'সমাধান 1 / ট্রাঙ্ক') এবং 'সমাধান 2' (সমাধান 2 / ট্রাঙ্ক) এর মধ্যে আপেক্ষিক পাথগুলি সম্ভব।


এটি খুব সহজেই ভেঙে যাবে, দয়া করে আমার বিস্তারিত উত্তর দেখুন।
রব উইলিয়ামস

0

আর: আপেক্ষিক পথ এবং ভাগ করা ফাইল সমস্যা -

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

আমরা এখনও এটি কাজ করে চলেছি এবং আমার কাছে 3 টি ভিন্ন প্রচেষ্টা (বিভিন্ন ক্লায়েন্ট) রয়েছে যা এখনই সমাধান করতে হবে যেহেতু আমি অস্তিত্বহীন বা দুর্বল সংস্করণ নিয়ন্ত্রণ স্থাপনের দায়িত্ব নিয়েছি।


প্রকল্পগুলির রেফারেন্স থাকা অন্যান্য প্রকল্পগুলি রক্ষণাবেক্ষণের দুঃস্বপ্ন তৈরি করে কারণ নির্ভরতাগুলি তাত্পর্যপূর্ণভাবে বৃদ্ধি পায় এবং উল্লেখগুলি খুব ভঙ্গুর। আমার বিস্তারিত উত্তর দেখুন।
রব উইলিয়ামস

0

আমার অনুরূপ লেআউট আছে তবে আমার ট্রাঙ্ক, শাখা, উপরে সমস্ত দিক দিয়ে ট্যাগ রয়েছে। সুতরাং: / ট্রাঙ্ক / প্রধান, / ট্রাঙ্ক / ইউটিস, / শাখা / রিলিজ / ইত্যাদি etc.

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

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