سؤال

لقد قمت مؤخرا بتنفذ اثنين من الإضافات الخاصة بي في نقل الأسماك وأدركت أنه عند "استنساخ جيت" مستودع، ستكون الدليل المنطقي فارغا. هذا منطقي المطورين المشاركين لتهيئة نقل الأسفل والتحديث.

ومع ذلك، عندما نشرت مع CAPISTRANO، لن يتم نشر رمز المنطق المنطقي مما يؤدي إلى مشاكل. يمكن أن أذهب إلى فرع الإصدار والتغليف وتحديث الوحدة النمطية هناك، ولكن من الواضح أنه ليس حلا مثاليا.

هل لدى أي شخص اقتراحات حول كيفية التعامل مع هذا؟ هل هو بسيط مثل مهمة capistrano؟

أنا قليلا من مستجد على جانب الإنتاج من الأشياء.

شكرا لك!

هل كانت مفيدة؟

المحلول

وفق هذا الموضوع الأخير, ، يجب أن تكون capistrano قادرة على التغليف وتحديث الأسفل الخاص بك:

set :git_enable_submodules,1

في config / deploy.rb يجب أن يكون كافيا، إذا كان لديك .gitmodules إدخالات محدثة.
قد تحتاج ذلك لتصحيح capistrano (lib/capistano/recipes/deploy/scm/git.rb) للتأكد من أن تضمين الأسفلات الخاصة بك تتضمن.

    def checkout(revision, destination)
      git      = command

      branch   = head

      fail "No branch specified, use for example 'set :branch, \"origin/master\"' in your deploy.rb" unless branch

      if depth = configuration[:git_shallow_clone]
        execute  = "#{git} clone --depth #{depth} #{configuration[:repository]} #{destination} && " 
      else
        execute  = "#{git} clone #{configuration[:repository]} #{destination} && " 
      end

      execute += "cd #{destination} && #{git} checkout -b deploy #{branch}" 

      if submodules = configuration[:git_enable_submodules]
        execute += " && git-submodule init &&" 
        execute += "git-submodule update" 
      end

      execute
    end

اذا كنت تمتلك نقل الأسفل, ، انت تحتاج:

gem sources -a http://gems.github.com
$ sudo gem install morhekil-capistrano-deepmodules

فقط تتطلب ذلك في تكوين النشر الخاص بك:

تتطلب "capistrano / deepmodules"

سوف يهتم الجهرة بكل الباقي تلقائيا.
يمكنك الحذف :git_enable_submodules من التكوين الخاص بك، لا يعتمد GEM أي اهتمام به - إذا كنت تتطلب ذلك فأنت تقول بالفعل أنك تريد تمكين الأسفلات.

وواحد تفاصيل أخرى للانتباه إلى - في الوقت الحالي يتم دعم استراتيجية ذاكرة التخزين المؤقت عن بعد فقط. هذا يعني أنه يجب عليك إضافتك إلى config السطر التالي:

set :deploy_via, :remote_cache

إنها تمكن ذاكرة التخزين المؤقت عن بعد وهو ما هو الشيء الذي تريد القيام به على أي حال - نشر قوالب كبيرة مع الكثير من الأسفل وغيرها من الأشياء هي تجربة مزعجة حقا إذا لم يكن لديك ذاكرة تخزين مؤقت من جانب الخادم منه.

نصائح أخرى

set :git_enable_submodules, 1 على أنه لم ينجح دون هذا الخيار:

set :deploy_via, :remote_cache`

لم يبدو أن هذا موثق في أي مكان وأخذني بعض الوقت لمعرفة ذلك. من الجيد عموما أن يكون هذا الخيار على أي حال، حتى بدون تأهب.

مع هذا الالتزام, . deploy.rb ملف:

set :git_enable_submodules, true

وإذا كنت تستخدم تنشيد الجيت العودية, ، أضف هذا كذلك:

set :git_submodules_recursive, true

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top