aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2013-12-03 21:13:02 -0600
committerJack Nagel2013-12-03 21:13:02 -0600
commitfa5b633650953ed1378edf6f5e82d0c944a58bcf (patch)
tree4a17819f1e5ee3f3138ae2f5eac890ed628e57a5 /Library
parent94333c64c1e56e49bcad01f6658656536bdbbbc0 (diff)
downloadbrew-fa5b633650953ed1378edf6f5e82d0c944a58bcf.tar.bz2
SubversionDownloadStrategy: handle changed repository URL
Fixes Homebrew/homebrew#22159.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/download_strategy.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb
index ce2185d6a..22b0909d5 100644
--- a/Library/Homebrew/download_strategy.rb
+++ b/Library/Homebrew/download_strategy.rb
@@ -365,10 +365,16 @@ class SubversionDownloadStrategy < VCSDownloadStrategy
@clone.join(".svn").directory?
end
+ def repo_url
+ `svn info '#{@clone}' 2>/dev/null`.strip[/^URL: (.+)$/, 1]
+ end
+
def fetch
@url = @url.sub(/^svn\+/, '') if @url =~ %r[^svn\+http://]
ohai "Checking out #{@url}"
+ clear_cache unless @url.chomp("/") == repo_url or quiet_system 'svn', 'switch', @url, @clone
+
if @clone.exist? and not repo_valid?
puts "Removing invalid SVN repo from cache"
clear_cache