Skip to content
This repository has been archived by the owner on Apr 14, 2021. It is now read-only.

bundle install --force with git source #5678

Closed
avit opened this issue May 25, 2017 · 1 comment
Closed

bundle install --force with git source #5678

avit opened this issue May 25, 2017 · 1 comment
Assignees
Milestone

Comments

@avit
Copy link

avit commented May 25, 2017

Running bundle install --force with a gem sourced from github is failing with the following error. It looks like the --tags option is getting the install path:

Bundler::Source::Git::GitNotAllowedError: Bundler is trying to run a `git fetch --force --quiet --tags "/usr/local/bundle/cache/bundler/git/state_machine-3fdb6d8ec7f53fb6706f0e58ef5abd9313f708ca"` at runtime. You probably need to run
`bundle install`. However, this error message could probably be more useful. Please submit a ticket at http://github.com/bundler/bundler/issues with steps to reproduce as well as the following

CALLER: /usr/local/bundle/gems/bundler-1.15.0/lib/bundler/source/git/git_proxy.rb:159:in `new'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/source/git/git_proxy.rb:159:in `git'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/source/git/git_proxy.rb:153:in `block in git_retry'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/retry.rb:39:in `call'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/retry.rb:39:in `run'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/retry.rb:29:in `attempt'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/source/git/git_proxy.rb:152:in `git_retry'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/source/git/git_proxy.rb:129:in `block in copy_to'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/shared_helpers.rb:55:in `chdir'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/shared_helpers.rb:55:in `block in chdir'
/usr/local/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/shared_helpers.rb:54:in `chdir'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/source/git/git_proxy.rb:128:in `copy_to'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/source/git.rb:180:in `install'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/installer/gem_installer.rb:55:in `install'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/installer/gem_installer.rb:15:in `install_from_spec'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/installer/parallel_installer.rb:115:in `block in worker_pool'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/worker.rb:63:in `call'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/worker.rb:63:in `apply_func'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/worker.rb:58:in `block in process_queue'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/worker.rb:55:in `loop'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/worker.rb:55:in `process_queue'
/usr/local/bundle/gems/bundler-1.15.0/lib/bundler/worker.rb:89:in `block (2 levels) in create_threads'

Environment

Bundler   1.15.0
Rubygems  2.6.10
Ruby      2.2.6p396 (2016-11-15 revision 56800) [x86_64-linux]
GEM_HOME  /usr/local/bundle
GEM_PATH  
Git       2.1.4
Platform  x86_64-linux

Bundler settings

disable_shared_gems
  Set for your local app (/usr/local/bundle/config): "true"
gems.contribsys.com
  Set for your local app (/usr/local/bundle/config): "66bc9802:eb8ffad3"
silence_root_warning
  Set via BUNDLE_SILENCE_ROOT_WARNING: "1"
app_config
  Set via BUNDLE_APP_CONFIG: "/usr/local/bundle"
bin
  Set via BUNDLE_BIN: "/usr/local/bundle/bin"
path
  Set via BUNDLE_PATH: "/usr/local/bundle"

Gemfile

Gemfile

source "https://rubygems.org"
gem "state_machine", github: "avit/state_machine", branch: "integration"

Gemfile.lock

GIT
  remote: git://github.com/avit/state_machine.git
  revision: 60f9ca14c88c9604b45ae15a19716eefe9b39162
  branch: integration
  specs:
    state_machine (1.2.0)

GEM
  remote: https://rubygems.org/
  specs:

PLATFORMS
  ruby

DEPENDENCIES
  state_machine!

BUNDLED WITH
   1.15.0
@segiddins
Copy link
Member

Repro'ed, but the issue isn't the git command we run, it's that bundler thinks it shouldn't be allowed to run git commands here.

@segiddins segiddins self-assigned this May 26, 2017
@segiddins segiddins added this to the 1.15.1 milestone May 26, 2017
bundlerbot added a commit that referenced this issue Jun 1, 2017
Allow bundle install --force to work with git specs

This allows `bundle install --force` to work when the gemfile includes a git spec, previously it would error nonsensically. This happened because sources needed to be `remote!`ed for installation to succeed, and this wouldn't happen when `--force` was called with no other changes to the gemfile.

Closes #5678
segiddins pushed a commit that referenced this issue Jun 2, 2017
Allow bundle install --force to work with git specs

This allows `bundle install --force` to work when the gemfile includes a git spec, previously it would error nonsensically. This happened because sources needed to be `remote!`ed for installation to succeed, and this wouldn't happen when `--force` was called with no other changes to the gemfile.

Closes #5678

(cherry picked from commit 7f1411c)
philipefarias added a commit to dleemoo/rc-images that referenced this issue Jun 12, 2017
Changes since last version used (1.14.6):

== 1.15.1 (2017-06-02)

Bugfixes:

  - `bundle lock --update GEM` will fail gracefully when the gem is not in the lockfile (rubygems/bundler#5693, @segiddins)
  - `bundle init --gemspec` will fail gracefully when the gemspec is invalid (@colby-swandale)
  - `bundle install --force` works when the gemfile contains git gems (rubygems/bundler#5678, @segiddins)
  - `bundle env` will print well-formed markdown when there are no settings (rubygems/bundler#5677, @segiddins)

== 1.15.0 (2017-05-19)

This space intentionally left blank.

== 1.15.0.pre.4 (2017-05-10)

Bugfixes:

  - avoid conflicts when `Gem.finish_resolve` is called after the bundle has been set up (@segiddins)
  - ensure that `Gem::Specification.find_by_name` always returns an object that can have `#to_spec` called on it (rubygems/bundler#5592, @jules2689)

== 1.15.0.pre.3 (2017-04-30)

Bugfixes:

  - avoid redundant blank lines in the readme generated by `bundle gem` (@koic)
  - ensure that `open-uri` is not loaded after `bundle exec` (@segiddins)
  - print a helpful error message when an activated default gem conflicts with
    a gem in the gemfile (@segiddins)
  - only shorten `ref` option for git gems when it is a SHA (rubygems/bundler#5620, @segiddins)

== 1.15.0.pre.2 (2017-04-23)

Bugfixes:

  - ensure pre-existing fit caches are updated from remote sources (rubygems/bundler#5423, @alextaylor000)
  - avoid duplicating specs in the lockfile after updating with the gem uninstalled (rubygems/bundler#5599, @segiddins)
  - ensure git gems have their extensions available at runtime (rubygems/bundler#5594, @jules2689, @segiddins)

== 1.15.0.pre.1 (2017-04-16)

Features:

  - print a notification when a newer version of bundler is available (rubygems/bundler#4683, @segiddins)
  - add man pages for all bundler commands (rubygems/bundler#4988, @feministy)
  - add the `bundle info` command (@fredrb, @colby-swandale)
  - all files created with `bundle gem` comply with the bundler style guide (@zachahn)
  - if installing a gem fails, print out the reason the gem needed to be installed (rubygems/bundler#5078, @segiddins)
  - allow setting `gem.push_key` to set the key used when running `rake release` (@DTrierweiler)
  - print gem versions that are regressing during `bundle update` in yellow (rubygems/bundler#5506, @brchristian)
  - avoid printing extraneous dependencies when the resolver encounters a conflict (@segiddins)
  - add the `bundle issue` command that prints instructions for reporting issues (rubygems/bundler#4871, @jonathanpike)
  - add `--source` and `--group` options to the `bundle inject` command (rubygems/bundler#5452, @Shekharrajak)
  - add the `bundle add` command to add a gem to the gemfile (@denniss)
  - add the `bundle pristine` command to re-install gems from cached `.gem` files (rubygems/bundler#4509, @denniss)
  - add a `--parseable` option for `bundle config` (@JuanitoFatas, @colby-swandale)

Performance:

  - speed up gemfile initialization by storing locked dependencies as a hash (@jules2689)
  - speed up gemfile initialization by making locked dependency comparison lazy, avoiding object allocation (@jules2689)
  - only validate git gems when they are downloaded, instead of every time `Bundler.setup` is run (@segiddins)
  - avoid regenerating the lockfile when nothing has changed (@segiddins)
  - avoid diffing large arrays when no sources in the gemfile have changed (@segiddins)
  - avoid evaluating full gemspecs when running with RubyGems 2.5+ (@segiddins)

Bugfixes:

  - fix cases where `bundle update` would print a resolver conflict instead of updating the selected gems (rubygems/bundler#5031, rubygems/bundler#5095, @segiddins)
  - print out a stack trace after an interrupt when running in debug mode (@segiddins)
  - print out when bundler starts fetching a gem from a remote server (@segiddins)
  - fix `bundle gem` failing when `git` is unavailable (rubygems/bundler#5458, @Shekharrajak, @colby-swandale)
  - suggest the appropriate command to unfreeze a bundle (rubygems/bundler#5009, @denniss)
  - ensure nested calls to `bundle exec` resolve default gems correctly (rubygems/bundler#5500, @segiddins)
  - ensure that a plugin failing to install doesn't uninstall other plugins (@kerrizor, @roseaboveit)
  - ensure `socket` is required before being referenced (rubygems/bundler#5533, @rafaelfranca)
  - allow running `bundle outdated` when gems aren't installed locally (rubygems/bundler#5553, @segiddins)
  - print a helpful error when `bundle exec`ing to a gem that isn't included in the bundle (rubygems/bundler#5487, @segiddins)
  - print an error message when a non-git gem is given a `branch` option (rubygems/bundler#5530, @colby-swandale)
  - allow interrupts to exit the process after gems have been installed (@segiddins)
  - print the underlying error when downloading gem metadata fails (rubygems/bundler#5579, @segiddins)
  - avoid deadlocking when installing with a lockfile that is missing dependencies (rubygems/bundler#5378, rubygems/bundler#5480, rubygems/bundler#5519, rubygems/bundler#5526, rubygems/bundler#5529, rubygems/bundler#5549, rubygems/bundler#5572, @segiddins)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants