আপনার যদি কখনও কখনও একটি থাকে তবে আপনার কি এসভিএন শাখা নিয়ে বিরক্ত করা উচিত?


10

যদি আমরা কেবল সাবভার্সনে একটি শাখা নিয়ে কাজ করি তবে আমাদের কি বিরক্ত করা উচিত? আমরা কি জিনিসগুলি দ্রুত করার জন্য ট্রাঙ্কের উপর কাজ করতে পারি না?

সাবভারশন দিয়ে আমরা এভাবেই বিকাশ করি:

  • একটি কাণ্ড আছে
  • আমরা একটি নতুন উন্নয়ন শাখা করি
  • আমরা সেই শাখায় একটি নতুন বৈশিষ্ট্য বিকাশ করি
  • বৈশিষ্ট্যটি সম্পন্ন হয়ে গেলে, এটি ট্রাঙ্কে মিশে যায়, শাখাটি সরানো হয় এবং ট্রাঙ্ক থেকে একটি নতুন বিকাশ শাখা তৈরি করা হয়

আমরা যখন প্রোডাকশনে প্রকাশ করতে চাই, আমরা ট্রাঙ্ক থেকে একটি ট্যাগ করি। সেই ট্যাগ থেকে একটি শাখায় বাগফিক্স তৈরি করা হয়। এই বাগফিক্সটি তারপর ট্রাঙ্কে একীভূত হয়।

এই কারণেই কোনও বৈশিষ্ট্য শেষ হওয়ার পরে আমরা একটি নতুন উন্নয়ন শাখা তৈরি করি। এইভাবে, বাগফিক্সটি আমাদের নতুন কোডে শীঘ্রই যথেষ্ট পরিমাণে অন্তর্ভুক্ত করা হবে।

নীচে একটি চিত্র রয়েছে যা পরিষ্কার করা উচিত:

আমাদের সাবভার্সন কৌশল

এখন, একটি অনুভূতি এটি কাজ করার সবচেয়ে কার্যকর উপায় নয়। আমরা প্রতিশ্রুতিবদ্ধ হওয়ার আগে স্থানীয়ভাবে বিল্ড করি, যা প্রায় 5-10 মিনিট সময় নেয়। আপনি বুঝতে পারেন যে এটি বেশ দীর্ঘ প্রতীক্ষার সময় হিসাবে অভিজ্ঞ।

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

তারপরে, যখন বৈশিষ্ট্য 1 সমাপ্ত হবে, এটি ট্রাঙ্কে একীভূত হবে তবে বৈশিষ্ট্য 2 এর কিছু কমিটের সাথে এটি অন্তর্ভুক্ত রয়েছে।

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

আপনি কি মনে করেন? আমরা কি কেবল ট্রাঙ্কে কাজ করতে পারি? সবচেয়ে খারাপ পরিস্থিতিটি (আমার মনে হয়) আমাদের ট্রাঙ্ক থেকে একটি ট্যাগ তৈরি করতে হবে এবং আমাদের প্রয়োজনীয় কমিটগুলি চেরি-বাছাই করতে হবে, কারণ কিছু কমিট / বৈশিষ্ট্যগুলি এখনও উত্পাদন প্রস্তুত নয়।


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

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

উত্তর:


6

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

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


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

@ ইয়ান, অবশ্যই কোনও পরীক্ষা বাস্তব জীবনে নিশ্চিত করতে পারে না যে কোডটি 100% বাগ-মুক্ত ... সীমিত সংস্থান থাকার কারণে আমরা একটি যুক্তিসঙ্গত স্তরের সুরক্ষার জন্য লক্ষ্য রাখি (যার সংজ্ঞা ডোমেন- এবং প্রকল্প-নির্দিষ্ট)। এছাড়াও লক্ষ করুন যে সিআই কেবলমাত্র ইউনিট পরীক্ষা নয়, ইন্টিগ্রেশন ইত্যাদি পরীক্ষা চালাতে পারে।
পিয়েটার তারেক

এটি ব্যর্থ হওয়া অবধি কাজ করে। নতুন বৈশিষ্ট্যটি প্রস্তুত হওয়ার আগে যদি আপনার ঠিকঠাক বাস্তবায়ন করতে হয় ... বা প্রাইমটাইমের জন্য যদি কোনও নতুন বৈশিষ্ট্য প্রকাশের মতো প্রস্তুত না হয় আপনি যদি ভাবেন যে আপনি শাখা ব্যবহার না করেন তবে কোডটির বাইরে থাকা এই পরিবর্তনটি ফিরে পাওয়া আরও শক্ত হয়ে যায়।
SoylentGray

@ চাদ, সর্বশেষ রিলিজের প্যাচগুলি সংশ্লিষ্ট রিলিজ শাখায় করা হয়, ট্রাঙ্কের কোনও হস্তক্ষেপ ছাড়াই। এবং আমরা নতুন বৈশিষ্ট্যগুলি মোটামুটিভাবে পরীক্ষা করি যাতে আমরা জানি যে তারা কখন প্রাইম টাইমের জন্য প্রস্তুত। মঞ্জুর, আমাদের প্রকল্পে তুলনামূলকভাবে কয়েকটি বড় বৈশিষ্ট্য রয়েছে। এবং যেহেতু এটি একটি সার্ভার সাইড ওয়েব অ্যাপ্লিকেশন, তাই নির্দিষ্টভাবে বৈশিষ্ট্যগুলি চালু / বন্ধ করতে একটি ডিবি পতাকা যুক্ত করা এমনকি মোটামুটি সহজ। YMMV।
প্যাটার তারেক

LOL ঠিক আছে আমি ভুল বুঝতে পেরেছিলাম এবং ভেবেছিলাম আপনি কেবল ট্রাঙ্ক পেয়েছেন (একটি ব্যতিক্রম ছাড়া) আমি এই পদ্ধতিটি পাশাপাশি একটি ছোট গ্রুপের জন্য জরিমানা করেছি এবং প্রায়শই ছোট রিলিজ এটি নিয়মিতভাবে বড় রিলিজ করার জন্য আমাদের পক্ষে ভাল কাজ করে না (3-6 মাস) ) উদ্দেশ্য।
SoylentGray

1

আপনি আপনার বৈশিষ্ট্য বিকাশের সাথে যা বর্ণনা করছেন তা সমান্তরাল বিকাশ (একই সাথে বিভিন্ন পণ্য প্রকাশের লক্ষ্যবস্তু বিকাশ) এবং এটি সঠিকভাবে পরিচালনা করার জন্য এর শাখাগুলির প্রয়োজন হয় না। আপনার প্রতিটি রিলিজের জন্য বা প্রতিটি বৈশিষ্ট্যের জন্য একটি শাখা থাকতে পারে যদি আপনাকে প্রায়শই একটি নির্দিষ্ট প্রকাশ করতে পারে এমন বৈশিষ্ট্যগুলি পুনরায় রচনা করতে হয়।

এটি করার অন্য উপায়টি হ'ল ডিফল্টরূপে ট্রাঙ্কের বাইরে কাজ করা কিন্তু যদি আপনি নিজের কাজটি পরবর্তী প্রকাশের পরে প্রসারিত করার প্রত্যাশা করেন তবে একটি শাখা তৈরি করা হবে। আপনি সর্বদা অবশ্যই রিলিজ ট্যাগ।

আপনি কোন পদ্ধতিটি গ্রহণ করেন তা নির্ভর করে আপনি কতটা পরিচালনা করতে পারবেন তা নির্ভর করে। যদি টিপিক্যাল রিলিজের সত্যিকারের সমান্তরাল বিকাশ না হয় তবে আমি দ্বিতীয় পদ্ধতিটি গ্রহণ করব।


আমি সম্মত এবং ওপি এটির সাথে এটি নিশ্চিত করেছেন: 'কখনও কখনও, কোনও বৈশিষ্ট্য প্রায় প্রস্তুত থাকে, এবং কিছু বিকাশকারী ইতিমধ্যে পরবর্তী বৈশিষ্ট্যটির কোডিং শুরু করবে ...'
ক্রিস

হ্যাঁ, তবে আমাদের কখনই সংশোধন করতে হবে না। বৈশিষ্ট্যগুলি কালানুক্রমিকভাবে প্রয়োগ করা হয় এবং উদাহরণস্বরূপ, বৈশিষ্ট্য 1-4 সমস্তই পরবর্তী প্রকাশে থাকতে হবে (বলুন 1.0)। এই সমস্যাজনিত হতে পারে কেবল তখনই যখন বৈশিষ্ট্য 5 এ বিকাশ শুরু হয়, যা তার পরে মুক্তির জন্য (2.0)। তারপরে আমাদের অবশ্যই নিশ্চিত করতে হবে যে এই পরিবর্তনগুলি ট্যাগ / রিলিজ (1.0) এ গ্রহণ করা হয়নি taken মুক্তির আগে একটি শাখা তৈরি করা সত্যিই এটি ঠিক করতে পারে।
পিটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.