diff --git a/Library/Homebrew/cmd/tests.rb b/Library/Homebrew/cmd/tests.rb index 5ec8417736..c1d01ca113 100644 --- a/Library/Homebrew/cmd/tests.rb +++ b/Library/Homebrew/cmd/tests.rb @@ -3,7 +3,7 @@ require "fileutils" module Homebrew def tests (HOMEBREW_LIBRARY/"Homebrew/test").cd do - ENV["HOMEBREW_NO_ANALYTICS"] = "1" + ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1" ENV["TESTOPTS"] = "-v" if ARGV.verbose? ENV["HOMEBREW_NO_COMPAT"] = "1" if ARGV.include? "--no-compat" if ARGV.include? "--coverage" diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index 9d0377cb56..53b9d639ae 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -18,7 +18,7 @@ module Homebrew analytics_disabled = \ Utils.popen_read("git", "config", "--local", "--get", "homebrew.analyticsdisabled").chuzzle if analytics_message_displayed != "true" && analytics_disabled != "true" - ENV["HOMEBREW_NO_ANALYTICS"] = "1" + ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1" ohai "Homebrew has enabled anonymous aggregate user behaviour analytics" puts "Read the analytics documentation (and how to opt-out) here:" puts " https://git.io/brew-analytics" diff --git a/Library/Homebrew/utils/analytics.rb b/Library/Homebrew/utils/analytics.rb index caf2a15c15..32ea22f89d 100644 --- a/Library/Homebrew/utils/analytics.rb +++ b/Library/Homebrew/utils/analytics.rb @@ -8,7 +8,7 @@ def analytics_label end def report_analytics(type, metadata = {}) - return if ENV["HOMEBREW_NO_ANALYTICS"] + return if ENV["HOMEBREW_NO_ANALYTICS"] || ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] args = %W[ --max-time 3 diff --git a/Library/Homebrew/utils/analytics.sh b/Library/Homebrew/utils/analytics.sh index 70e698f7ce..3c6fc59a08 100644 --- a/Library/Homebrew/utils/analytics.sh +++ b/Library/Homebrew/utils/analytics.sh @@ -3,12 +3,19 @@ setup-analytics() { # recreated with no adverse effect (beyond our user counts being inflated). HOMEBREW_ANALYTICS_USER_UUID_FILE="$HOME/.homebrew_analytics_user_uuid" - if [[ -n "$HOMEBREW_NO_ANALYTICS" || - "$(git config --file="$HOMEBREW_REPOSITORY/.git/config" --get homebrew.analyticsmessage)" != "true" || + # Make disabling anlytics sticky + if [[ -n "$HOMEBREW_NO_ANALYTICS" ]] + then + git config --file="$HOMEBREW_REPOSITORY/.git/config" --replace-all homebrew.analyticsdisabled true + # Internal variable for brew's use, to differentiate from user-supplied setting + export HOMEBREW_NO_ANALYTICS_THIS_RUN="1" + fi + + if [[ "$(git config --file="$HOMEBREW_REPOSITORY/.git/config" --get homebrew.analyticsmessage)" != "true" || "$(git config --file="$HOMEBREW_REPOSITORY/.git/config" --get homebrew.analyticsdisabled)" = "true" ]] then [[ -f "$HOMEBREW_ANALYTICS_USER_UUID_FILE" ]] && rm -f "$HOMEBREW_ANALYTICS_USER_UUID_FILE" - export HOMEBREW_NO_ANALYTICS="1" + export HOMEBREW_NO_ANALYTICS_THIS_RUN="1" return fi @@ -34,7 +41,7 @@ setup-analytics() { } report-analytics-screenview-command() { - [[ -n "$HOMEBREW_NO_ANALYTICS" ]] && return + [[ -n "$HOMEBREW_NO_ANALYTICS" || -n "$HOMEBREW_NO_ANALYTICS_THIS_RUN" ]] && return # Don't report non-official commands. if ! [[ "$HOMEBREW_COMMAND" = "bundle" ||