গ্রাহক-নির্দিষ্ট সফ্টওয়্যার প্যাচগুলি পরিচালনা করার একটি বাস্তব উপায় কী?


16

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

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

আমাদের শাখাগুলি কৌশলটি এর মতো ( ভিজ্যুয়াল স্টুডিও টিএফএস শাখা গাইডের উপর ভিত্তি করে , যদিও আমরা এর জন্য সাবভারশন ব্যবহার করছি) এখানে চিত্র বর্ণনা লিখুন


আপনি যদি ব্যবহার করছিলেন hgবা gitআমি প্রস্তাব দিতে পারি যে আপনি প্যাচ কুইউস ( মার্চুরিয়াল কুইউস এক্সটেনশন বা স্ট্যাকড গিট ) ব্যবহার করার দিকে নজর দিন তবে টিএফএসের কোনও মিল আছে কিনা তা আমি জানি না।
মার্ক বুথ

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

2
একটি ব্যবসায়ের সমাধান হবে: এটি করবেন না।
জেফো

@ জেফো ভাল কল =) যে কোনও ক্ষেত্রে, আপনি কোনও উপাত্ত চালিত রানটাইম সুইচ তৈরির উপায় আছে কি?
প্যাট্রিক হিউজস 21

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

উত্তর:


5

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

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


5

আমার কাছে কীটিটি "দৃশ্যমান" বলে মনে হচ্ছে - কোনও আলাদা কোড শাখা না থাকা সম্পর্কে কী, বরং আচরণের পরিবর্তনের ক্ষেত্রে একটি কনফিগারেশন বিকল্প রয়েছে?


এটি সাধারণ কাস্টমাইজেশনের জন্য কাজ করতে পারে তবে আরও জটিল বিষয়গুলি গ্রাহকদের জন্য পণ্যটিকে আরও বিশ্রী এবং অস্থির করে তুলতে পারে।
হতাশ

3
@ ফ্রেস্ট্রেটড উইথফর্মস ডিজাইনার কমপ্লেক্স কাস্টমাইজেশন একক ক্লায়েন্টের জন্য পণ্য পরিচালনা এবং ডিজাইনের ক্ষেত্রে সম্পূর্ণ অবহেলা উপস্থাপন করে। পণ্যটির জন্য একক গ্রাহকের জন্য পৃথক শাখা প্রয়োজন এমন যে কোনও সমাধান পণ্যটির সমস্ত গ্রাহকের প্রয়োজন মেটাতে এবং পণ্য মালিকের পক্ষ থেকে দুর্বল স্টুয়ার্ডশিপকে পণ্যটিতে স্থূল অপ্রতুলতার প্রতিনিধিত্ব করে।
maple_shaft

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

1
@ ম্যাপেল_শ্যাফ্ট - তবে আপনি "আন্তর্জাতিকীকরণ বাস্তবায়নের জন্য কোড ব্রাঞ্চিং কখনও ব্যবহার করেছেন" এই প্রশ্নটি জিজ্ঞাসা করার কথা ভেবেছিলেন?
PSr

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

3

আপনি এটিকে স্বল্প মেয়াদী বা দীর্ঘমেয়াদী জিনিস হিসাবে দেখছেন? আসল বিষয়টি হ'ল ব্যবসায়টি ইতিমধ্যে এই গ্রাহককে এত সংক্ষিপ্ত মেয়াদে সমন্বিত করার সিদ্ধান্ত নিয়েছে এটি ইতিমধ্যে একটি ব্যবসায়িক সিদ্ধান্ত যা মূলত ব্যবসায়িক অনুশীলনগুলির মাধ্যমে সমাধান করা হবে (অতিরিক্ত ব্যয় গ্রহণের জন্য / গ্রাহকের জন্য ব্যয় বহন করে)।

যদি দীর্ঘমেয়াদী হয় তবে আপনি সম্ভবত গ্রাহকদের কনফিগারেশন (বা সেটআপ ইত্যাদির) মাধ্যমে গ্রাহকদের প্রয়োজনীয় যে সফ্টওয়্যারটি সহজেই পূরণ করতে পুনরায় ফ্যাক্টর তৈরি করেন তবে আপনি সঞ্চয়গুলি দেখতে পাবেন।

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

দীর্ঘ সংক্ষিপ্ত বিবরণ. দীর্ঘমেয়াদে এটি প্রযুক্তিগতভাবে সংশোধন করুন, এটির সাথে স্বল্পমেয়াদী চুক্তি।

অবশ্যই একটি পয়েন্ট আছে যেখানে এটি একটি কয়েন টস is আপনি যদি সেই মুহুর্তে থাকেন তবে আমি বিকাশকারীরা যা পছন্দ করবে তা করব would


2

আমরা সাবস্ট্রেশনও ব্যবহার করি - এবং আমরা ঠিক এরকম দৃশ্যের মুখোমুখি হয়েছি।

এখানে কিছু মূল বিষয় মনে রাখবেন:

  1. এটি প্রয়োজনীয় হলেও গ্রাহকদের জন্য নির্দিষ্ট শাখা এড়াতে হবে প্রয়োজনটিকে যথাসম্ভব কমিয়ে আনতে হবে; সর্বদা জিজ্ঞাসা করুন যে সমাধানটি সাধারণভাবে তৈরি করা সম্ভব যা কেবলমাত্র সবার জন্য কাজ করে work

  2. গ্রাহক নির্দিষ্ট শাখাগুলি একটি নতুন প্রকাশ হতে হবে must মনে করুন আপনার একটি সংস্করণ 1.2 রয়েছে এবং আপনি 1.2.1 সংস্করণ থেকে 1.2.11 অবধি গ্রহণ করেছেন - গ্রাহক শাখাগুলিকে সমস্ত প্যাচ অনুমতি দেওয়া উচিত তাই গ্রাহক শাখাকে অবশ্যই মূল সংস্করণের সাথে সামঞ্জস্যপূর্ণ থাকতে হবে ।

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

  4. সর্বদা, কোনও পরিস্থিতিতে নয়, আপনার গ্রাহকের নির্দিষ্ট পরিবর্তনগুলি শাখা বা ট্রাঙ্ক প্রকাশের দিকে ফিরিয়ে দেওয়া উচিত। তবে, আদর্শের কাজটি এমনভাবে সাধারণ করার চেষ্টা করা উচিত যাতে গ্রাহকের নির্দিষ্ট কাজটি কম রাখা হয়।

আমি এই ধারণাটি একত্রে দেখানোর চেষ্টা করেছি নীচে চিত্র:


1

আপনার কোডে একটি এক্সটেনশন প্রক্রিয়া প্রবর্তন সম্পর্কে কীভাবে?

আপনার মূল কোডটিতে রয়েছে:

class Foo
{
}

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

class FooForABC : Foo
{
}

FooForABC Foo- র মতো একই আচরণ প্রয়োগ করে তবে ABC- র প্রয়োজনীয় সুনির্দিষ্ট আচরণ প্রদানের জন্য প্রয়োজনীয় ফাংশনগুলিকে ওভাররাইড করে। আপনার সমর্থন করতে হবে এমন কোনও দৃশ্য পরিচালনা করার জন্য কৌশলটি যথেষ্ট নমনীয় হওয়া উচিত।

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