আমি কীভাবে একটি দ্রুপাল সাইটে সহযোগী উন্নয়ন পরিচালনা করব?


12

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

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

  • আমাদের ডাটাবেস পরিবর্তনগুলি সহজেই মার্জ করার জন্য আমরা কী পদক্ষেপ নিতে পারি?

  • আমাদের কীভাবে ডাটাবেসটি সংস্করণ করা উচিত (এটি করার জন্য একটি গিমে একটি ডাম্প ফাইল লাগানো)?

  • এমন কোনও মডিউল উপলব্ধ রয়েছে যা এই সমস্যার মধ্যে কিছুটির জন্য সহায়তা করে?

  • অথবা, আমরা সাইটের একই অনুলিপি নিয়ে কাজ করতে আটকে আছি? (দয়া করে তাই না)


সম্পাদনা করুন: মন্তব্যগুলিতে আমরা আলোচনা করেছি যেগুলি কী কী বৈশিষ্ট্যগুলির সাথে রফতানি করা যায় না এবং তার মধ্যে একটি ছিল ট্যাক্সোনমি। এর সাথে আরও একটি প্রশ্ন রয়েছে


আমি কৌতূহলী, বৈশিষ্ট্যের মাধ্যমে আপনি বিশেষত কী করতে পারবেন না? আরও ভাল প্রশ্ন হতে পারে যে কীভাবে ডেটাবেস একীকরণের রুটে নামার পরিবর্তে বৈশিষ্ট্যগুলি সহ বা কোড ছাড়াই কীভাবে সেই জিনিসগুলিতে রফতানি করতে হয়।
ডিসিফার

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

আমি মনে করি আমাদের অনুপস্থিত কিছু জিনিসে সমর্থন যোগ করার চেষ্টা করার জন্য দ্রুপলকনে আমাদের একটি "বৈশিষ্ট্য" স্প্রিন্ট করা উচিত।
কোডারিন্থেরে

1
@ ডিসিফার ঠিক আছে, সুতরাং আমি আপনার সাথে একমত হই যে কোডগুলিতে সমস্ত ব্লক সংরক্ষণের উপায় রয়েছে are তবে আমি এখনও মনে করি যে আমি যে মডিউলটি ইতিমধ্যে ব্যবহার করতে চাই না তার প্রতি বৈশিষ্ট্য সমর্থন যুক্ত করা অযৌক্তিক।
চৌলকি

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

উত্তর:


5

এটি একটি ওয়ার্কফ্লো পরিবর্তন, তবে আপনি লাইভ ডিবি এর একটি নতুন ডাম্পে কাজ করতে অভ্যস্ত হওয়া উচিত। ডিবিতে পরিবর্তন আনার জন্য তিনটি উপায় রয়েছে।

  1. বৈশিষ্ট্য। এটি সমস্ত কিছুর জন্য কাজ করবে না তবে আপনার প্রয়োজনীয় অনেক কিছুর জন্য হবে।
  2. হুক আপডেট করুন। বৈশিষ্ট্যগুলি যখন কাজ না করে আপনি নিজের মালিকানাধীন একটি মডিউলটির আপডেট হুকে জিনিসগুলি হার্ড কোড করতে পারেন।
  3. ম্যানুয়াল পরিবর্তন। সতর্কতার সাথে অল্পকরে ব্যবহার করা. কিছু জিনিস প্রাকৃতিক বৈশিষ্ট্যগুলিতে বা হুকগুলি আপডেট করতে আসে না এবং ম্যানুয়ালি করা খুব সহজ। এটি একটি সর্বশেষ অবলম্বন তবে কখনও কখনও একমাত্র পাইরেটিকাল উপায়।

যদি তুমি পার. দিনে বেশ কয়েকবার একটি নতুন ডাম্প পান এবং আপনার বিল্ডটি পরীক্ষা করুন, আপনার কম সংহতকরণের সমস্যা হওয়া উচিত।


4

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

ডাটাবেসের অংশ হিসাবে, আমি এখানে মূলত দুটি চিন্তা বিদ্যালয় গ্রহণ করেছি (একটি তৃতীয় বিদ্যালয়, ডাটাবেস পৃথক করে, আমি আলোচনা করব না কারণ জটিলতা বেশ বেশি)।

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

২) অ্যাডমিন সেটিংসের জন্য বুদ্দা উল্লিখিত বৈশিষ্ট্যগুলি মডিউলটি ব্যবহার করুন এবং মুছুন সমস্ত মডিউলটির সাথে মিলিয়ে সামগ্রী রফতানি / আমদানির জন্য নোড এক্সপোর্ট মডিউলটি ব্যবহার করুন। সুতরাং কর্মপ্রবাহটি হ'ল:

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

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


0

যদিও এটি একটি স্বীকৃত উত্তর সহ একটি পুরানো প্রশ্ন, আমি বিশ্বাস করি যে এখনও অন্য একটির জন্য জায়গা রয়েছে।

প্রথমত, আমি সামনে বলি যে আমি মনে করি না বৈশিষ্ট্যগুলি এই কাজের জন্য সঠিক সরঞ্জাম, এবং এটি বিকল্পগুলির একটি বিকল্প সেট প্রস্তাব করবে।

দলের সহযোগিতার একটি পূর্বশর্ত আপনার প্রোডাকশন সার্ভার থেকে পৃথক প্রকল্পের বিকাশ সংস্করণগুলি পরীক্ষা করার জন্য একটি মঞ্চ সার্ভার থাকা। সমস্ত ডেভলপমেন্ট কোডটি স্টেজিং সার্ভারে পরীক্ষা করা হয় এবং এটি স্থিতিশীল এবং স্থাপনার জন্য প্রস্তুত হলে কেবল উত্পাদন সার্ভারে ঠেলা যায়। তবে, বিকাশকারীরা সরাসরি স্টেজিং সার্ভারে কাজ করে না। প্রতিটি বিকাশকারী তার নিজের ওয়ার্কস্টেশনে কাজ করে, একটি রিভিশন কন্ট্রোল এবং সোর্স কোড ম্যানেজমেন্ট (এসসিএম) ব্যবহার করে তার কাজটি দলের বাকি সদস্যের সাথে সমন্বয় করতে।

এসসিএম সিস্টেম দলের সদস্যদের একে অপরের সাথে হস্তক্ষেপ না করে কোডের বিভিন্ন শাখায় সমান্তরালভাবে কাজ করার অনুমতি দেয় । পরীক্ষার উদ্দেশ্যে স্টেজিং সার্ভারে কেবলমাত্র মাস্টার শাখা মোতায়েন করা হয়।

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

ফেলা:

mysqldump --all-databases --opt -u root -p > DUMP.sql

পুনঃস্থাপন করা:

mysql -u root -p < DUMP.sql

সেই সার্ভারে যদি আপনার একমাত্র ডাটাবেস না থাকে তবে কিছু সংস্করণ mysqldump(অথবা আপনি মাইএসকিএল ব্যবহার না করে থাকলে সমমানের ) স্ক্রিপ্ট করুন যা কেবলমাত্র আপনার ডাটাবেসগুলি ডাম্প করে।

একটি নীতি তৈরি করুন যে এটি প্রোডাকশন সার্ভারের ডেটাবেস যা মাস্টার। স্টেজিং সার্ভার এবং ওয়ার্কস্টেশনগুলি বিপরীতে নয়, প্রোডাকশন ডাটাবেসের একটি অনুলিপি হওয়া উচিত।

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

এখন, কোডটি ভাগ করে নেওয়ার জন্য:

কোনও উন্নয়ন দলের সদস্যদের মধ্যে কোড ভাগ করার জন্য স্ট্যান্ডার্ড উপায় হ'ল এসসিএম সিস্টেম ব্যবহার করা। ডিগ্রিটি ডিফল্ট হতে পারে এমন একটি গিট নামক সিস্টেমের মাধ্যমে পরিচালিত হয় ।

গিট স্থানীয় বা দূরবর্তী সংগ্রহের ব্যবহারের অনুমতি দেয়। যদি টিমের সদস্যরা একই শারীরিক স্থানে থাকে তবে আপনি আপনার স্টেজিং সার্ভারে একটি স্থানীয় সংগ্রহস্থল সেট আপ করতে পারেন। যদি সেগুলি ভৌগোলিকভাবে ছড়িয়ে পড়ে তবে আপনি একটি রিমোট রিপোজিটিরি সেট আপ করতে পারেন। আপনি যদি অন্যদের বিকাশের অধীনে আপনার কোডটিতে পঠিত অ্যাক্সেস মনে করেন না তবে আপনি Drupal.org এ স্যান্ডবক্সটি রিমোট সংগ্রহস্থল হিসাবে ব্যবহার করতে পারেন । আপনি গিটহাবের একটি প্রকল্প অঞ্চলও ব্যবহার করতে পারেন । গিটহাব কেবলমাত্র একটি সংগ্রহশালা নয়, তবে সহযোগিতার জন্য কয়েকটি সরঞ্জাম নিয়ে এসেছে, এবং এটি সরকারী এবং বেসরকারী উভয় সংগ্রহস্থলের অনুমতি দেয়।

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

সাধারণত, দলের সদস্যদের মধ্যে কীভাবে কার্যগুলি বিভক্ত করা হয় সে সম্পর্কে কিছুটা আন্তরিক যোগাযোগের সাথে, কোনও বিরোধ নেই be তবে এসসিএম সিস্টেমের সাথে নজর রাখে, ভুলগুলি করা হয় বা যোগাযোগ ব্যর্থ হলেও সংঘাতগুলি পরিচালনাযোগ্য হয়ে ওঠে।

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

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