From 8000fb807feccb3019536468a75dfecb1d2dcee9 Mon Sep 17 00:00:00 2001 From: Simon Sigurdhsson Date: Wed, 16 Jan 2013 15:56:36 +0100 Subject: [PATCH] Doctor check for origin Added checks on doctor.rb for: * Missing git origin * git origin not pointing at mxcl/homebrew Tests use `git config --get remote.origin.url`. Also added printout of origin to --config.rb. Fixes Homebrew/homebrew#14399. Closes Homebrew/homebrew#17117. Signed-off-by: Jack Nagel --- Library/Homebrew/cmd/--config.rb | 8 +++++++ Library/Homebrew/cmd/doctor.rb | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/Library/Homebrew/cmd/--config.rb b/Library/Homebrew/cmd/--config.rb index ac113c8859..6f6368291a 100644 --- a/Library/Homebrew/cmd/--config.rb +++ b/Library/Homebrew/cmd/--config.rb @@ -54,6 +54,13 @@ module Homebrew extend self if head.empty? then "(none)" else head end end + def origin + origin = HOMEBREW_REPOSITORY.cd do + `git config --get remote.origin.url`.chomp + end + if origin.empty? then "(none)" else origin end + end + def describe_path path return "N/A" if path.nil? realpath = path.realpath @@ -124,6 +131,7 @@ module Homebrew extend self def dump_verbose_config puts "HOMEBREW_VERSION: #{HOMEBREW_VERSION}" + puts "ORIGIN: #{origin}" puts "HEAD: #{head}" puts "HOMEBREW_PREFIX: #{HOMEBREW_PREFIX}" puts "HOMEBREW_CELLAR: #{HOMEBREW_CELLAR}" diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 9ab3c46f8c..d57226a996 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -721,6 +721,44 @@ def check_git_newline_settings end end +def check_for_git_origin + return unless which "git" + + HOMEBREW_REPOSITORY.cd do + if `git config --get remote.origin.url`.chomp.empty? then <<-EOS.undent + Missing git origin remote. + + Without a correctly configured origin, Homebrew won't update + properly. You can solve this by adding the Homebrew remote: + cd #{HOMEBREW_REPOSITORY} + git add remote origin https://github.com/mxcl/homebrew.git + EOS + end + end +end + +def check_the_git_origin + return unless which "git" + return if check_for_git_origin + + HOMEBREW_REPOSITORY.cd do + origin = `git config --get remote.origin.url`.chomp + + unless origin =~ /mxcl\/homebrew\.git$/ then <<-EOS.undent + Suspicious git origin remote found. + + With a non-standard origin, Homebrew won't pull updates from + the main repository. The current git origin is: + #{origin} + + Unless you have compelling reasons, consider setting the + origin remote to point at the main repository, located at: + https://github.com/mxcl/homebrew.git + EOS + end + end +end + def check_for_autoconf return unless MacOS::Xcode.provides_autotools?