MercurialDownloadStrategy: handle corrupt checkouts

This commit is contained in:
Jack Nagel 2013-09-28 17:00:42 -05:00
parent c5289f2503
commit 7deb2f85e8

View File

@ -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