3scale/apisonator

Excluding Git metadata and project examples from gems.

whitingjr opened this issue · 2 comments

Hi,
Taking a quick peek inside a generated apisonator container I see the following directories.

ruby/3scale_backend-2.89.0/vendor/bundle/ruby/2.3.0/bundler/gems/puma-9b17499eeb49/.git
ruby/3scale_backend-2.89.0/vendor/bundle/ruby/2.3.0/bundler/gems/puma-9b17499eeb49/examples
ruby/3scale_backend-2.89.0/vendor/bundle/ruby/2.3.0/bundler/gems/resque-88839e71756e/.git
ruby/3scale_backend-2.89.0/vendor/bundle/ruby/2.3.0/bundler/gems/resque-88839e71756e/examples

Git metadata can quickly add up in size. Are these directories good candidates for exclusion ?

It might be the case this suggestion needs raised upstream to the respective gem projects.

Hi @whitingjr, those .git directories are the results of vendoring gems from git repositories using Bundler, so it's not a matter of upstream gems but rather us pointing to forks or specific commits with patches added on top.

I have not considered whether the vendored code from git repositories could be smaller by using shallow check outs, but we can certainly take a look at it. The obvious requirement is that Bundler needs to ensure the correct code is being loaded (so some git metadata is needed) to function correctly.

I'll take a look and update accordingly, thanks!

Hi,

support for shallow clones in git checkouts referencing rubygems is not implemented in Bundler. There is https://github.com/rubygems/bundler/issues/4556 though, which if closed with an implementation should allow us to use shallow clones and reduce a bit the footprint.