দ্রষ্টব্য: আমার প্রশ্নটি আমার নির্দিষ্ট সমস্যাটিতে জড়িত (যার মধ্যে লাইফ্রে জড়িত) তবে আমি আশা করি যে এটির জন্য একই প্রকল্পের বিভিন্ন সংস্করণ বজায় রাখতে হবে এমন ব্যক্তির পক্ষে এটি কার্যকর হতে পারে।
আমি এমন একটি প্রতিষ্ঠানে কাজ করি যা লাইফরে পোর্টালের জন্য প্রচুর প্লাগইন লেখেন । এই প্লাগইনগুলি (পোর্টলেট, থিম ইত্যাদি) সাধারণত পুনরায় ব্যবহারযোগ্য এবং অবশ্যই পোর্টালের নতুন সংস্করণগুলির জন্য আপডেট করা উচিত।
যাইহোক, স্থানান্তরিত হওয়া স্বাভাবিক, আসুন আমরা বলি যে লাইফ্রেয়ের নতুন সংস্করণে এবং এর পূর্ববর্তী সংস্করণটি বজায় রাখার জন্য একটি পোর্টলেট । এছাড়াও, প্রায়শই আমাদের কিছু ক্লায়েন্টদের জন্য খুব নির্দিষ্ট কাস্টমাইজেশন তৈরি করতে হয়, যা "মূল সংস্করণে" যুক্ত হওয়া কোনও মানে হয় না।
এই প্রয়োজনীয়তাগুলি আমাদের কাজকে জটিল করে তোলে তবে ভাগ্যক্রমে আমরা কিছু সরলকরণ ধরে নিতে পারি। উদাহরণস্বরূপ, প্লাগইনগুলি একবারে কেবলমাত্র একজন প্রোগ্রামার দ্বারা প্রায়শই আপডেট হয়। একই সাথে একটি প্লাগইনে দু'একটি বেশি বৈশিষ্ট্য যুক্ত হওয়া খুব বিরল।
এখন, আমরা গিটারিয়াসে মাইগ্রেশন করছি । আমরা এই জাতীয় দৃশ্যের জন্য একটি ব্রাঞ্চিং মডেল কল্পনা করার চেষ্টা করছি।
আমার মডেল
আমি প্রস্তাবিতটি হ'ল:
- প্রতিটি প্লাগইনের একটি প্রকল্পের অভ্যন্তরে গিটারিয়াসে নিজস্ব সংগ্রহস্থল থাকবে। উদাহরণস্বরূপ, বিড়ালছানাগুলি প্রদর্শনের জন্য একটি পোর্টলেটটির প্রকল্পের
kittens-portlet
ভিতরে একটি সংগ্রহস্থল থাকবেliferay-portlets
। - একটি নতুন প্লাগইন তৈরি করার সময়, লাইফ্রে সংস্করণ অনুসারে এটি একটি শাখায় তৈরি করুন (উদাহরণস্বরূপ
lf5.2
)। - প্রতিবার প্লাগইনে একটি আপডেট করা হলে আপডেটটি অনুমোদিত হয় এবং উত্পাদনে মোতায়েন হয়, প্লাগইনটিকে একটি সংস্করণ (উদাহরণস্বরূপ
lf5.2v1
,lf5.2v2
ইত্যাদি) দিয়ে ট্যাগ করুন * - প্রতিবার যখন প্লাগইনটি লাইফ্রেয়ের একটি নতুন সংস্করণে পোর্ট করা উচিত তখন আমরা অতি সাম্প্রতিক সংস্করণটি শাখা করি (উদাহরণস্বরূপ, শাখা তৈরি করে
lf6.0
)। - উত্পাদনের পরে, নতুন শাখার প্রধান যেমন একটি ট্যাগ পাবেন
lf6.0v1
। - প্রতিবার যখনই আমাদের ক্লায়েন্ট-নির্দিষ্ট উপায়ে প্লাগইনটি কাস্টমাইজ করতে হয় তখন আমরা ক্লায়েন্টের নাম সহ একটি শাখা তৈরি করি (উদাহরণস্বরূপ, আমরা
lf5.2clientcorp
আমাদের ক্লায়েন্ট "ক্লায়েন্টকর্প ইনক।" এর জন্য একটি শাখা তৈরি করব )
এটি একটি অস্বাভাবিক মডেল: এটির কোনও master
এবং মার্জ না হওয়া প্রচুর শাখা থাকবে। আমি মনে করি যে এই জাতীয় মডেল সহ একটি সংগ্রহস্থলটি দেখতে পাবেন:
একটি বন্ধু এই সিস্টেমটিকে বরং জটিল এবং ত্রুটি-প্রবণ বলে মনে করেছে। তিনি দুর্দান্ত এবং জনপ্রিয় ভিনসেন্ট ড্রিসেন মডেলটির পরামর্শ দিয়েছিলেন , যা আমি পরিচালনা এবং শৃঙ্খলা-চাহিদা অর্জনকারীকে আরও কঠিন বলে মনে করি। এটি অবশ্যই দুর্দান্ত (এবং পরীক্ষিত!) তবে আমাদের পরিস্থিতি থেকে খুব জটিল বলে মনে হচ্ছে।
আমার বন্ধুর মডেল
তারপরে তিনি আরেকটি মডেল প্রস্তাব করলেন: আমাদের লাইফ্রে সংস্করণে প্রতিটি প্লাগইনের জন্য একটি সংগ্রহস্থল থাকবে (যাতে আমরা একটি kittens-lf5.2-portlet
এবং তারপরে একটি তৈরি করতে শুরু করব kittens-lf6.0-portlet
), যার প্রতিটি master
শাখা এবং একটি develop
শাখা থাকবে। master
সবসময় স্থাপনার জন্য প্রস্তুত হতে হবে। (বা এটি অন্য উপায়ে হতে পারে, master
এবং stable
যেমন স্টিভ লশ প্রস্তাব করেছিলেন )।
এটি খুব সহজ, তবে আমি এই সিস্টেমটি পছন্দ করি নি:
- এটি কোনও প্রকল্পে ভয়াবহ প্রচুর পরিমাণে সংগ্রহের ফলস্বরূপ হতে পারে, যা ব্রাউজ করা শক্ত করে তোলে।
- প্রকল্পের ডিরেক্টরিটির নাম প্রাসঙ্গিক। যদি কেউ একটি
kittens-lf6.0-portlet
ডিয়ারের কাছে ভান্ডারটি ক্লোন করে এবং পিপড়া দিয়ে (ওয়ার্ম হিসাবে) দিয়ে ওয়ার তৈরি করে তবে ওয়ার নামটিও হবেkittens-lf6.0-portlet
। এইkittens-portlet
পোর্টলেটটির পুরানো সংস্করণগুলি ( উদাহরণস্বরূপ নাম দেওয়া হয়েছে) একটি আপগ্রেড পোর্টালে আলাদা (এবং সম্ভবত অনুপস্থিত) পোর্টলেট হিসাবে বিবেচিত হবে। কিছুটা যত্ন এড়াতে পারে তবে আমি এড়াতে পছন্দ করব। - একই প্লাগইনের বিভিন্ন সংস্করণ পৃথক রক্ষণাবেক্ষণ করা হবে। আমি আমার হৃদয় ভেঙ্গে :(
kittens-lf6.0-portlet
ভাণ্ডারগুলির জন্য এটি একটি কুৎসিত নাম, আমি মনে করি।
আমি শেষ দুটি পয়েন্টগুলি সন্দেহ করি - যা দুটি আরও বিষয়গত বিষয়ও - আমার অনাগ্রহের মূল কারণ। যাইহোক, চারটি আপত্তি দাঁড়িয়ে।
ওও, আমার নিজের প্রস্তাবটি আমার কাছে অদ্ভুত বলে মনে হচ্ছে এবং এতে কোনও লুকানো বাগ রয়েছে কিনা তা আমি অবাক করি। OT3rdH গিটটি এত শক্তিশালী এবং নমনীয় যে আমি মনে করি এর সম্ভাবনাগুলি অন্বেষণে আমার কোনও লজ্জা বোধ করা উচিত নয়।
সুতরাং, আমি জিজ্ঞাসা:
- সেরা মডেলটি কী হবে? আমার প্রস্তাব? আমার বন্ধুর মডেল? এখনকার traditionalতিহ্যবাহী ভিনসেন্ট ড্রাইসেন সিস্টেম?
- আপনি অন্য ব্রাঞ্চিং মডেল কি পরামর্শ করবেন?
- আপনি যদি আমার মডেলটিকে খারাপ বলে মনে করেন তবে আপনি কেন এমন ভাবেন? আমি বুঝতে পারি যে ত্রুটিগুলি এবং অন্ধ দাগগুলি কী।
* প্রকৃতপক্ষে, আমি একটি সংস্করণ যেমন কমিট ট্যাগ করতে পছন্দ করি v1
তবে স্পষ্টতই গিটে একটি ট্যাগ শাখায় বাদ দেওয়া হয় না - অর্থাৎ, আমার একটিতে 1 টি v1
ট্যাগ lf5.2
এবং অন্য একটিতে lf6.0
থাকতে পারে না - সুতরাং আমার নামটির নাম রাখতে হবে শাখা। এটি কি সঠিক বিটিডাব্লু?