diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb index 809e4b5a49d69b602f44ef58dd5543b25e769908..35576fee04ce763d01b0ed6437a9cf37e871dc5b 100644 --- a/Library/Homebrew/cmd/pull.rb +++ b/Library/Homebrew/cmd/pull.rb @@ -57,6 +57,8 @@ module Homebrew odie "You meant `git pull --rebase`." end + bintray_fetch_formulae =[] + ARGV.named.each do |arg| if arg.to_i > 0 url = "https://github.com/Homebrew/homebrew/pull/#{arg}" @@ -189,19 +191,29 @@ module Homebrew "-u#{bintray_user}:#{bintray_key}", "-X", "POST", "-d", '{"publish_wait_for_secs": -1}', "https://api.bintray.com/content/homebrew/#{repo}/#{package}/#{version}/publish" - sleep 5 - success = system "brew", "fetch", "--retry", "--force-bottle", f.full_name - unless success - ohai "That didn't work; sleeping another 10 and trying again..." - sleep 10 - system "brew", "fetch", "--retry", "--force-bottle", f.full_name - end + bintray_fetch_formulae << f end else opoo "You must set BINTRAY_USER and BINTRAY_KEY to add or update bottles on Bintray!" end end + bintray_fetch_formulae.each do |f| + max_retries = 5 + retry_count = 0 + begin + success = system "brew", "fetch", "--force-bottle", f.full_name + raise "Failed to download #{f} bottle!" unless success + rescue RuntimeError => e + retry_count += 1 + raise e if retry_count >= max_retries + sleep_seconds = 2**retry_count + ohai "That didn't work; sleeping #{sleep_seconds} seconds and trying again..." + sleep sleep_seconds + retry + end + end + ohai "Patch changed:" safe_system "git", "diff-tree", "-r", "--stat", revision, "HEAD"