summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2018-09-26 14:57:54 +0200
committerJean Boussier <jean.boussier@gmail.com>2018-09-27 15:53:27 +0200
commit2264db9b12cf7ef74163b711baea95cfd91411e4 (patch)
treee809ff7a13a03f5ba70fcb1b1ee7c7e00b1333bd
parent8501b1e3608579acf53a4978b62c0d8891d23005 (diff)
downloadbundler-2264db9b12cf7ef74163b711baea95cfd91411e4.tar.gz
Avoid fetching an rebuilding git gems when it's not necessary
-rw-r--r--lib/bundler/source/git.rb6
-rw-r--r--spec/install/gemfile/git_spec.rb2
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/bundler/source/git.rb b/lib/bundler/source/git.rb
index 0b00608bdd..33f0af89ee 100644
--- a/lib/bundler/source/git.rb
+++ b/lib/bundler/source/git.rb
@@ -260,7 +260,11 @@ module Bundler
end
def requires_checkout?
- allow_git_ops? && !local?
+ !cached_revision_checked_out? && allow_git_ops? && !local?
+ end
+
+ def cached_revision_checked_out?
+ cached_revision && cached_revision == revision && install_path.exist?
end
def base_name
diff --git a/spec/install/gemfile/git_spec.rb b/spec/install/gemfile/git_spec.rb
index 7f7a1ae4c9..843a177af4 100644
--- a/spec/install/gemfile/git_spec.rb
+++ b/spec/install/gemfile/git_spec.rb
@@ -1211,6 +1211,7 @@ In Gemfile:
install_gemfile <<-G
source "file://#{gem_repo1}"
+ gem "rack", "0.9.1"
gem "foo", :git => "#{lib_path("foo-1.0")}"
G
@@ -1224,6 +1225,7 @@ In Gemfile:
install_gemfile <<-G
source "file://#{gem_repo1}"
+ gem "rack", "1.0.0"
gem "foo", :git => "#{lib_path("foo-1.0")}"
G