update: fix when HEAD doesn't exist.
e.g. when it's a detached `HEAD` through checking out a commit rather than a branch.
This commit is contained in:
parent
664e9e844a
commit
b1ff9c42d6
@ -187,7 +187,13 @@ class Updater
|
|||||||
@stashed = true
|
@stashed = true
|
||||||
end
|
end
|
||||||
|
|
||||||
@initial_branch = `git symbolic-ref --short HEAD`.chomp
|
|
||||||
|
begin
|
||||||
|
@initial_branch = `git symbolic-ref --short HEAD 2>/dev/null`.chomp
|
||||||
|
rescue ErrorDuringExecution
|
||||||
|
@initial_branch = ""
|
||||||
|
end
|
||||||
|
|
||||||
if @initial_branch != "master" && !@initial_branch.empty?
|
if @initial_branch != "master" && !@initial_branch.empty?
|
||||||
safe_system "git", "checkout", "master", *quiet
|
safe_system "git", "checkout", "master", *quiet
|
||||||
end
|
end
|
||||||
@ -227,7 +233,7 @@ class Updater
|
|||||||
ignore_interrupts { yield }
|
ignore_interrupts { yield }
|
||||||
ensure
|
ensure
|
||||||
if $?.signaled? && $?.termsig == 2 # SIGINT
|
if $?.signaled? && $?.termsig == 2 # SIGINT
|
||||||
safe_system "git", "checkout", @initial_branch
|
safe_system "git", "checkout", @initial_branch unless @initial_branch.empty?
|
||||||
safe_system "git", "reset", "--hard", @initial_revision
|
safe_system "git", "reset", "--hard", @initial_revision
|
||||||
safe_system "git", "stash", "pop" if @stashed
|
safe_system "git", "stash", "pop" if @stashed
|
||||||
end
|
end
|
||||||
|
|||||||
@ -58,7 +58,7 @@ class UpdaterTests < Homebrew::TestCase
|
|||||||
FormulaVersions.stubs(:new).returns(stub(:formula_at_revision => "2.0"))
|
FormulaVersions.stubs(:new).returns(stub(:formula_at_revision => "2.0"))
|
||||||
@updater.diff = fixture(fixture_name)
|
@updater.diff = fixture(fixture_name)
|
||||||
@updater.in_repo_expect("git diff --quiet", true)
|
@updater.in_repo_expect("git diff --quiet", true)
|
||||||
@updater.in_repo_expect("git symbolic-ref --short HEAD", "master")
|
@updater.in_repo_expect("git symbolic-ref --short HEAD 2>/dev/null", "master")
|
||||||
@updater.in_repo_expect("git rev-parse -q --verify HEAD", "1234abcd")
|
@updater.in_repo_expect("git rev-parse -q --verify HEAD", "1234abcd")
|
||||||
@updater.in_repo_expect("git config core.autocrlf false")
|
@updater.in_repo_expect("git config core.autocrlf false")
|
||||||
@updater.in_repo_expect("git pull --ff --no-rebase --quiet origin refs/heads/master:refs/remotes/origin/master")
|
@updater.in_repo_expect("git pull --ff --no-rebase --quiet origin refs/heads/master:refs/remotes/origin/master")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user