আমরা একজন বিকাশকারী এবং একটি এসএনএন রেপো দিয়ে শুরু করেছি যাতে আমাদের সমস্ত কোড রয়েছে:
^/foo/trunk/module-a
^/foo/trunk/module-b
^/foo/trunk/module-b/submodule-b1
^/foo/trunk/website1
(এই সময়ে এটি একটি বড় উন্নতি ছিল)। এটির জন্য কিছুটা বাড়ার সুযোগ পাওয়ার পরে আমরা বিজ্ঞপ্তি নির্ভরতা, ধীর পরীক্ষাগুলি এবং কোডটি পুনরায় ব্যবহার করার ক্ষেত্রে সাধারণ অসুবিধাগুলি শুরু করলাম (যেহেতু ওয়েবসাইট 1 এর বৈশিষ্ট্য সেটটি অন্যথায় জেনেরিক মডিউল-এ রূপ ধারণ করেছিল)।
কোড বেসটি মডুলারাইজ করতে এবং আমাদের শিগগিরই গিটের দিকে এগিয়ে যাওয়ার প্রত্যাশা করা হয়েছে (এবং কোথাও পড়ে যে গিটটি এসএনএন মেগা-রেপো পছন্দ করে না), আমরা আরও অনেক গ্রানুলার স্ট্রাকচারে স্থানান্তরিত করেছি:
^/module-a/trunk/
^/module-b/trunk/
^/module-b/trunk/sumbmodule-b1
^/earlier-sub-sub-sub-module-c/trunk
etc. (about 120 such modules)
এটি ধারণাগতভাবে দুর্দান্ত ছিল। আরও মডিউলার কোড, আরও দ্রুত টেস্ট-স্যুট, ডকুমেন্টে সহজতর ইত্যাদি We আমরা আমাদের আরও কিছু জেনেরিক উপাদান ওপেন-সোর্স করেছি এবং সমস্ত মডিউলগুলিকে পাইপ ইনস্টলযোগ্য pip install -e .
করে development
তুলছি ( সেগুলি ভার্চুয়ালেনভে ইনস্টল করতে ব্যবহার করে )।
আমরা ^/srv/trunk
রানটাইম এনভায়রনমেন্টের ফোল্ডার স্ট্রাকচার সম্বলিত একটি সংগ্রহস্থল তৈরি করেছি , অর্থাৎ। ^/srv/trunk/lib
মডিউলগুলির /srv/trunk/src
জন্য, অবশেষের জন্য ^/foo/trunk
, ^/srv/trunk/www
ওয়েবসাইটগুলি ইত্যাদির জন্য
এবং অবশেষে (অভিনয়শক্তিগুলির কাছ থেকে একটি ধারণা নেওয়া, যা আমি অনেক দিন আগে [ https://www.perforce.com/perforce/r12.1/manual/Cddf/client.html] নিয়ে কাজ করেছি ) আমরা একটি "ভিসিএস- "প্রাসঙ্গিক ফাইলগুলি তালিকাভুক্ত করুন যা সমস্ত প্রাসঙ্গিক রেপো তালিকাভুক্ত করে এবং যেখানে সেগুলি পরিবেশ পরিবেশে পরীক্ষা করা উচিত, এবং এটি করার জন্য একটি অনুরূপ কমান্ড। যেমন একটি ভিসিএস-ফেটেক লাইন:
svn srv/lib/module-a ^/module-a/trunk
হয় প্রথম কারণ (প্রথমবার)
cd /srv/lib && svn co ^/module-a/trunk module-a
বা (পরে)
cd /srv/lib/module-a && svn up
এবং অনুরূপভাবে গিথুব রেপসের জন্য (আমাদের নিজস্ব এবং পরিবর্তিত / আনল্টারযুক্ত ভেন্ডর প্যাকেজ উভয়)।
আমরা উত্পাদন পরিবেশ তৈরির জন্য একই ভিসিএস-ফেচ প্রক্রিয়াটি ব্যবহার করেছি, তবে আমরা দ্রুত খুঁজে পেয়েছি যে কোনও সংস্করণটি কোনও ভিসিএস-ফেচ করার পরে প্রোডে চালিত হয়েছিল তা জানার কোনও উপায় আমাদের নেই।
মেগা-রেপো দিয়ে, আমরা ট্রাঙ্ক থেকে প্রোড আপডেট করার আগে সংশোধন নম্বরটি কেবল নোট করতে পারি এবং ফিরে svn -r nnn up .
যাওয়া সহজ সরল was এসএনএন এবং গিট উভয় ক্ষেত্রে কোড (এবং এইচজি-তে একটি মডিউল) - এবং ~ 120 রেপগুলি, কীভাবে এটি করা যায় তা সুস্পষ্ট নয় ..
আমি আজ http://12factor.net/ পড়েছি , এবং প্রথম ফ্যাক্টরটি "ওয়ান কোডবেস" তাই আমিও ভাবছি যে আমি এখানেই সঠিক পথটি বন্ধ করছি কিনা?
আমার একটি ধারণা ছিল একটি মোতায়েনকারী স্ক্রিপ্ট তৈরি করা যা পাইপ-ইনস্টলযোগ্য "ডিপ্লোয়মেন্ট" -হুইলগুলি তৈরি করে এবং একটি requirements.txt
ফাইলে তাদের "বান্ডেল" তৈরি করে । একটি স্থাপনার পরে একটি নতুন ভার্চুয়ালেনভ তৈরি করা, প্রয়োজনীয়তাগুলি পিপ-ইনস্টল করা আবশ্যক t টেক্সট ফাইল স্থাপনার চাকার তালিকাভুক্ত করা এবং সক্রিয় ভার্চুয়ালেনভ পরিবর্তন করা। পূর্বের দিকে ফিরে যাওয়া কেবল ভার্চুয়ালেনভকে ফিরিয়ে আনার সাথে জড়িত (তবে আমরা যদি সেই কালামকে চিরকাল ধরে রাখতে না চাই তবে এটি আমাদের সময়মতো কোনও পর্যায়ে ফিরে যেতে দেয় না - আমার অভিজ্ঞতায় যা এর আগে কখনও প্রয়োজন হয়নি)।
এই মুহুর্তে আমি ভাবছি আমি যদি ভুল পথে হাঁটছি, বা আমি যদি কেবল সঠিক পথে হাঁটতে পারি না ..? (আমি যা কিছু পড়ছি তা "আপনার অ্যাপ্লিকেশন" সম্পর্কে কথা বলতে থাকে এবং আমি জানি না যে এটি কীভাবে একই কোড বেসের বাইরে 14 টি ওয়েবসাইট চালনাতে অনুবাদ করে ...)