aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/download_strategy.rb22
1 files changed, 17 insertions, 5 deletions
diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb
index 124c15fb0..29edbfb3b 100644
--- a/Library/Homebrew/download_strategy.rb
+++ b/Library/Homebrew/download_strategy.rb
@@ -631,18 +631,30 @@ class MercurialDownloadStrategy < AbstractDownloadStrategy
def fetch
ohai "Cloning #{@url}"
- unless @clone.exist?
- url=@url.sub(%r[^hg://], '')
- safe_system hgpath, 'clone', url, @clone
- else
+ if @clone.exist? && repo_valid?
puts "Updating #{@clone}"
- Dir.chdir(@clone) do
+ @clone.cd do
safe_system hgpath, 'pull'
safe_system hgpath, 'update'
end
+ elsif @clone.exist?
+ puts "Removing invalid hg repo from cache"
+ @clone.rmtree
+ clone_repo
+ else
+ clone_repo
end
end
+ def repo_valid?
+ @clone.join(".hg").directory?
+ end
+
+ def clone_repo
+ url = @url.sub(%r[^hg://], '')
+ safe_system hgpath, 'clone', url, @clone
+ end
+
def stage
dst=Dir.getwd
Dir.chdir @clone do