Fix brew update for taps with non-master branches

Fixes Homebrew/homebrew#43865.
This commit is contained in:
Misty De Meo 2015-09-15 22:08:55 -07:00
parent e34033310a
commit 520b8496d4

View File

@ -187,6 +187,15 @@ class Updater
@stashed = true
end
# The upstream repository's default branch may not be master;
# check refs/remotes/origin/HEAD to see what the default
# origin branch name is, and use that. If not set, fall back to "master".
begin
@upstream_branch = `git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null`
@upstream_branch = @upstream_branch.chomp.sub('refs/remotes/origin/', '')
rescue ErrorDuringExecution
@upstream_branch = "master"
end
begin
@initial_branch = `git symbolic-ref --short HEAD 2>/dev/null`.chomp
@ -194,8 +203,8 @@ class Updater
@initial_branch = ""
end
if @initial_branch != "master" && !@initial_branch.empty?
safe_system "git", "checkout", "master", *quiet
if @initial_branch != @upstream_branch && !@initial_branch.empty?
safe_system "git", "checkout", @upstream_branch, *quiet
end
@initial_revision = read_current_revision
@ -208,8 +217,8 @@ class Updater
args << ((ARGV.include? "--rebase") ? "--rebase" : "--no-rebase")
args += quiet
args << "origin"
# the refspec ensures that 'origin/master' gets updated
args << "refs/heads/master:refs/remotes/origin/master"
# the refspec ensures that the default upstream branch gets updated
args << "refs/heads/#{@upstream_branch}:refs/remotes/origin/#{@upstream_branch}"
reset_on_interrupt { safe_system "git", *args }