Merge pull request #13299 from MikeMcQuaid/update_improvements

Improve updating behaviour
This commit is contained in:
Mike McQuaid 2022-05-24 13:05:24 +01:00 committed by GitHub
commit 00c5960a6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 157 additions and 138 deletions

View File

@ -226,13 +226,13 @@ EOS
fi fi
} }
# Let user know we're still updating Homebrew if brew update --preinstall # Let user know we're still updating Homebrew if brew update --auto-update
# exceeds 3 seconds. # exceeds 3 seconds.
update-preinstall-timer() { auto-update-timer() {
sleep 3 sleep 3
# Outputting a command but don't want to run it, hence single quotes. # Outputting a command but don't want to run it, hence single quotes.
# shellcheck disable=SC2016 # shellcheck disable=SC2016
echo 'Running `brew update --preinstall`...' >&2 echo 'Running `brew update --auto-update`...' >&2
if [[ -z "${HOMEBREW_NO_ENV_HINTS}" && -z "${HOMEBREW_AUTO_UPDATE_SECS}" ]] if [[ -z "${HOMEBREW_NO_ENV_HINTS}" && -z "${HOMEBREW_AUTO_UPDATE_SECS}" ]]
then then
# shellcheck disable=SC2016 # shellcheck disable=SC2016
@ -244,11 +244,11 @@ update-preinstall-timer() {
# These variables are set from various Homebrew scripts. # These variables are set from various Homebrew scripts.
# shellcheck disable=SC2154 # shellcheck disable=SC2154
update-preinstall() { auto-update() {
[[ -z "${HOMEBREW_HELP}" ]] || return [[ -z "${HOMEBREW_HELP}" ]] || return
[[ -z "${HOMEBREW_NO_AUTO_UPDATE}" ]] || return [[ -z "${HOMEBREW_NO_AUTO_UPDATE}" ]] || return
[[ -z "${HOMEBREW_AUTO_UPDATING}" ]] || return [[ -z "${HOMEBREW_AUTO_UPDATING}" ]] || return
[[ -z "${HOMEBREW_UPDATE_PREINSTALL}" ]] || return [[ -z "${HOMEBREW_UPDATE_AUTO}" ]] || return
[[ -z "${HOMEBREW_AUTO_UPDATE_CHECKED}" ]] || return [[ -z "${HOMEBREW_AUTO_UPDATE_CHECKED}" ]] || return
# If we've checked for updates, we don't need to check again. # If we've checked for updates, we don't need to check again.
@ -280,11 +280,11 @@ update-preinstall() {
if [[ -z "${HOMEBREW_VERBOSE}" ]] if [[ -z "${HOMEBREW_VERBOSE}" ]]
then then
update-preinstall-timer & auto-update-timer &
timer_pid=$! timer_pid=$!
fi fi
brew update --preinstall brew update --auto-update
if [[ -n "${timer_pid}" ]] if [[ -n "${timer_pid}" ]]
then then
@ -842,7 +842,7 @@ then
source "${HOMEBREW_BASH_COMMAND}" source "${HOMEBREW_BASH_COMMAND}"
{ {
update-preinstall "$@" auto-update "$@"
"homebrew-${HOMEBREW_COMMAND}" "$@" "homebrew-${HOMEBREW_COMMAND}" "$@"
exit $? exit $?
} }
@ -856,7 +856,7 @@ else
# HOMEBREW_RUBY_PATH set by utils/ruby.sh # HOMEBREW_RUBY_PATH set by utils/ruby.sh
# shellcheck disable=SC2154 # shellcheck disable=SC2154
{ {
update-preinstall "$@" auto-update "$@"
exec "${HOMEBREW_RUBY_PATH}" "${HOMEBREW_RUBY_WARNINGS}" "${RUBY_DISABLE_OPTIONS}" \ exec "${HOMEBREW_RUBY_PATH}" "${HOMEBREW_RUBY_WARNINGS}" "${RUBY_DISABLE_OPTIONS}" \
"${HOMEBREW_LIBRARY}/Homebrew/brew.rb" "$@" "${HOMEBREW_LIBRARY}/Homebrew/brew.rb" "$@"
} }

View File

@ -16,9 +16,9 @@ module Homebrew
module_function module_function
def update_preinstall_header(args:) def auto_update_header(args:)
@update_preinstall_header ||= begin @auto_update_header ||= begin
ohai "Auto-updated Homebrew!" if args.preinstall? ohai "Auto-updated Homebrew!" if args.auto_update?
true true
end end
end end
@ -29,7 +29,7 @@ module Homebrew
description <<~EOS description <<~EOS
The Ruby implementation of `brew update`. Never called manually. The Ruby implementation of `brew update`. Never called manually.
EOS EOS
switch "--preinstall", switch "--auto-update", "--preinstall",
description: "Run in 'auto-update' mode (faster, less output)." description: "Run in 'auto-update' mode (faster, less output)."
switch "-f", "--force", switch "-f", "--force",
description: "Treat installed and updated formulae as if they are from "\ description: "Treat installed and updated formulae as if they are from "\
@ -79,7 +79,7 @@ module Homebrew
FileUtils.rm_f HOMEBREW_LOCKS/"update" FileUtils.rm_f HOMEBREW_LOCKS/"update"
update_args = [] update_args = []
update_args << "--preinstall" if args.preinstall? update_args << "--auto-update" if args.auto_update?
update_args << "--force" if args.force? update_args << "--force" if args.force?
exec HOMEBREW_BREW_FILE, "update", *update_args exec HOMEBREW_BREW_FILE, "update", *update_args
end end
@ -123,7 +123,7 @@ module Homebrew
odie "update-report should not be called directly!" if initial_revision.empty? || current_revision.empty? odie "update-report should not be called directly!" if initial_revision.empty? || current_revision.empty?
if initial_revision != current_revision if initial_revision != current_revision
update_preinstall_header args: args auto_update_header args: args
updated = true updated = true
@ -150,7 +150,7 @@ module Homebrew
updated_taps = [] updated_taps = []
Tap.each do |tap| Tap.each do |tap|
next unless tap.git? next unless tap.git?
next if (tap.core_tap? || tap == "homebrew/cask") && Homebrew::EnvConfig.install_from_api? && args.preinstall? next if (tap.core_tap? || tap == "homebrew/cask") && Homebrew::EnvConfig.install_from_api? && args.auto_update?
if ENV["HOMEBREW_MIGRATE_LINUXBREW_FORMULAE"].present? && tap.core_tap? && if ENV["HOMEBREW_MIGRATE_LINUXBREW_FORMULAE"].present? && tap.core_tap? &&
Settings.read("linuxbrewmigrated") != "true" Settings.read("linuxbrewmigrated") != "true"
@ -182,12 +182,12 @@ module Homebrew
end end
if reporter.updated? if reporter.updated?
updated_taps << tap.name updated_taps << tap.name
hub.add(reporter, preinstall: args.preinstall?) hub.add(reporter, auto_update: args.auto_update?)
end end
end end
unless updated_taps.empty? unless updated_taps.empty?
update_preinstall_header args: args auto_update_header args: args
puts "Updated #{updated_taps.count} #{"tap".pluralize(updated_taps.count)} (#{updated_taps.to_sentence})." puts "Updated #{updated_taps.count} #{"tap".pluralize(updated_taps.count)} (#{updated_taps.to_sentence})."
updated = true updated = true
end end
@ -196,7 +196,12 @@ module Homebrew
if hub.empty? if hub.empty?
puts "No changes to formulae." unless args.quiet? puts "No changes to formulae." unless args.quiet?
else else
hub.dump(updated_formula_report: !args.preinstall?) unless args.quiet? if ENV.fetch("HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED", false)
opoo "HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED is now the default behaviour, " \
"so you can unset it from your environment."
end
hub.dump(updated_formula_report: !args.auto_update?) unless args.quiet?
hub.reporters.each(&:migrate_tap_migration) hub.reporters.each(&:migrate_tap_migration)
hub.reporters.each { |r| r.migrate_formula_rename(force: args.force?, verbose: args.verbose?) } hub.reporters.each { |r| r.migrate_formula_rename(force: args.force?, verbose: args.verbose?) }
CacheStoreDatabase.use(:descriptions) do |db| CacheStoreDatabase.use(:descriptions) do |db|
@ -208,7 +213,7 @@ module Homebrew
.update_from_report!(hub) .update_from_report!(hub)
end end
if !args.preinstall? && !args.quiet? if !args.auto_update? && !args.quiet?
outdated_formulae = Formula.installed.count(&:outdated?) outdated_formulae = Formula.installed.count(&:outdated?)
outdated_casks = Cask::Caskroom.casks.count(&:outdated?) outdated_casks = Cask::Caskroom.casks.count(&:outdated?)
update_pronoun = if (outdated_formulae + outdated_casks) == 1 update_pronoun = if (outdated_formulae + outdated_casks) == 1
@ -234,8 +239,8 @@ module Homebrew
end end
end end
end end
puts if args.preinstall? puts if args.auto_update?
elsif !args.preinstall? && !ENV["HOMEBREW_UPDATE_FAILED"] && !ENV["HOMEBREW_MIGRATE_LINUXBREW_FORMULAE"] elsif !args.auto_update? && !ENV["HOMEBREW_UPDATE_FAILED"] && !ENV["HOMEBREW_MIGRATE_LINUXBREW_FORMULAE"]
puts "Already up-to-date." unless args.quiet? puts "Already up-to-date." unless args.quiet?
end end
@ -326,7 +331,7 @@ class Reporter
raise ReporterRevisionUnsetError, current_revision_var if @current_revision.empty? raise ReporterRevisionUnsetError, current_revision_var if @current_revision.empty?
end end
def report(preinstall: false) def report(auto_update: false)
return @report if @report return @report if @report
@report = Hash.new { |h, k| h[k] = [] } @report = Hash.new { |h, k| h[k] = [] }
@ -364,8 +369,8 @@ class Reporter
when "M" when "M"
name = tap.formula_file_to_name(src) name = tap.formula_file_to_name(src)
# Skip reporting updated formulae to speed up automatic updates. # Skip filtering unchanged formulae versions by default (as it's slow).
if preinstall unless Homebrew::EnvConfig.update_report_version_changed_formulae?
@report[:M] << name @report[:M] << name
next next
end end
@ -570,9 +575,9 @@ class ReporterHub
@hash.fetch(key, []) @hash.fetch(key, [])
end end
def add(reporter, preinstall: false) def add(reporter, auto_update: false)
@reporters << reporter @reporters << reporter
report = reporter.report(preinstall: preinstall).delete_if { |_k, v| v.empty? } report = reporter.report(auto_update: auto_update).delete_if { |_k, v| v.empty? }
@hash.update(report) { |_key, oldval, newval| oldval.concat(newval) } @hash.update(report) { |_key, oldval, newval| oldval.concat(newval) }
end end
@ -603,7 +608,7 @@ class ReporterHub
private private
def dump_formula_report(key, title) def dump_formula_report(key, title)
only_installed = Homebrew::EnvConfig.update_report_only_installed? only_installed = !Homebrew::EnvConfig.update_report_all_formulae?
formulae = select_formula(key).sort.map do |name, new_name| formulae = select_formula(key).sort.map do |name, new_name|
# Format list items of renamed formulae # Format list items of renamed formulae

View File

@ -3,7 +3,7 @@
#: Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations. #: Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations.
#: #:
#: --merge Use `git merge` to apply updates (rather than `git rebase`). #: --merge Use `git merge` to apply updates (rather than `git rebase`).
#: --preinstall Run on auto-updates (e.g. before `brew install`). Skips some slower steps. #: --auto-update Run on auto-updates (e.g. before `brew install`). Skips some slower steps.
#: -f, --force Always do a slower, full update check (even if unnecessary). #: -f, --force Always do a slower, full update check (even if unnecessary).
#: -q, --quiet Make some output more quiet #: -q, --quiet Make some output more quiet
#: -v, --verbose Print the directories checked and `git` operations performed. #: -v, --verbose Print the directories checked and `git` operations performed.
@ -337,7 +337,7 @@ homebrew-update() {
--merge) HOMEBREW_MERGE=1 ;; --merge) HOMEBREW_MERGE=1 ;;
--force) HOMEBREW_UPDATE_FORCE=1 ;; --force) HOMEBREW_UPDATE_FORCE=1 ;;
--simulate-from-current-branch) HOMEBREW_SIMULATE_FROM_CURRENT_BRANCH=1 ;; --simulate-from-current-branch) HOMEBREW_SIMULATE_FROM_CURRENT_BRANCH=1 ;;
--preinstall) export HOMEBREW_UPDATE_PREINSTALL=1 ;; --auto-update) export HOMEBREW_UPDATE_AUTO=1 ;;
--*) ;; --*) ;;
-*) -*)
[[ "${option}" == *v* ]] && HOMEBREW_VERBOSE=1 [[ "${option}" == *v* ]] && HOMEBREW_VERBOSE=1
@ -547,7 +547,7 @@ EOS
for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/* for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/*
do do
if [[ -n "${HOMEBREW_INSTALL_FROM_API}" ]] && if [[ -n "${HOMEBREW_INSTALL_FROM_API}" ]] &&
[[ -n "${HOMEBREW_UPDATE_PREINSTALL}" ]] && [[ -n "${HOMEBREW_UPDATE_AUTO}" ]] &&
[[ "${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" ]] [[ "${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" ]]
then then
continue continue
@ -591,7 +591,7 @@ EOS
( (
UPSTREAM_REPOSITORY_URL="$(git config remote.origin.url)" UPSTREAM_REPOSITORY_URL="$(git config remote.origin.url)"
# HOMEBREW_UPDATE_FORCE and HOMEBREW_UPDATE_PREINSTALL aren't modified here so ignore subshell warning. # HOMEBREW_UPDATE_FORCE and HOMEBREW_UPDATE_AUTO aren't modified here so ignore subshell warning.
# shellcheck disable=SC2030 # shellcheck disable=SC2030
if [[ "${UPSTREAM_REPOSITORY_URL}" == "https://github.com/"* ]] if [[ "${UPSTREAM_REPOSITORY_URL}" == "https://github.com/"* ]]
then then
@ -630,7 +630,7 @@ EOS
# Touch FETCH_HEAD to confirm we've checked for an update. # Touch FETCH_HEAD to confirm we've checked for an update.
[[ -f "${DIR}/.git/FETCH_HEAD" ]] && touch "${DIR}/.git/FETCH_HEAD" [[ -f "${DIR}/.git/FETCH_HEAD" ]] && touch "${DIR}/.git/FETCH_HEAD"
[[ -z "${HOMEBREW_UPDATE_FORCE}" ]] && [[ "${UPSTREAM_SHA_HTTP_CODE}" == "304" ]] && exit [[ -z "${HOMEBREW_UPDATE_FORCE}" ]] && [[ "${UPSTREAM_SHA_HTTP_CODE}" == "304" ]] && exit
elif [[ -n "${HOMEBREW_UPDATE_PREINSTALL}" ]] elif [[ -n "${HOMEBREW_UPDATE_AUTO}" ]]
then then
FORCE_AUTO_UPDATE="$(git config homebrew.forceautoupdate 2>/dev/null || echo "false")" FORCE_AUTO_UPDATE="$(git config homebrew.forceautoupdate 2>/dev/null || echo "false")"
if [[ "${FORCE_AUTO_UPDATE}" != "true" ]] if [[ "${FORCE_AUTO_UPDATE}" != "true" ]]
@ -650,7 +650,7 @@ EOS
local tmp_failure_file="${HOMEBREW_REPOSITORY}/.git/TMP_FETCH_FAILURES" local tmp_failure_file="${HOMEBREW_REPOSITORY}/.git/TMP_FETCH_FAILURES"
rm -f "${tmp_failure_file}" rm -f "${tmp_failure_file}"
if [[ -n "${HOMEBREW_UPDATE_PREINSTALL}" ]] if [[ -n "${HOMEBREW_UPDATE_AUTO}" ]]
then then
git fetch --tags --force "${QUIET_ARGS[@]}" origin \ git fetch --tags --force "${QUIET_ARGS[@]}" origin \
"refs/heads/${UPSTREAM_BRANCH_DIR}:refs/remotes/origin/${UPSTREAM_BRANCH_DIR}" 2>/dev/null "refs/heads/${UPSTREAM_BRANCH_DIR}:refs/remotes/origin/${UPSTREAM_BRANCH_DIR}" 2>/dev/null
@ -701,10 +701,10 @@ EOS
for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/* for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/*
do do
# HOMEBREW_UPDATE_PREINSTALL wasn't modified in subshell. # HOMEBREW_UPDATE_AUTO wasn't modified in subshell.
# shellcheck disable=SC2031 # shellcheck disable=SC2031
if [[ -n "${HOMEBREW_INSTALL_FROM_API}" ]] && if [[ -n "${HOMEBREW_INSTALL_FROM_API}" ]] &&
[[ -n "${HOMEBREW_UPDATE_PREINSTALL}" ]] && [[ -n "${HOMEBREW_UPDATE_AUTO}" ]] &&
[[ "${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" || [[ "${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" ||
"${DIR}" == "${HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-cask" ]] "${DIR}" == "${HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-cask" ]]
then then
@ -747,7 +747,7 @@ EOS
safe_cd "${HOMEBREW_REPOSITORY}" safe_cd "${HOMEBREW_REPOSITORY}"
# HOMEBREW_UPDATE_PREINSTALL wasn't modified in subshell. # HOMEBREW_UPDATE_AUTO wasn't modified in subshell.
# shellcheck disable=SC2031 # shellcheck disable=SC2031
if [[ -n "${HOMEBREW_UPDATED}" ]] || if [[ -n "${HOMEBREW_UPDATED}" ]] ||
[[ -n "${HOMEBREW_UPDATE_FAILED}" ]] || [[ -n "${HOMEBREW_UPDATE_FAILED}" ]] ||
@ -756,11 +756,11 @@ EOS
[[ -n "${HOMEBREW_MIGRATE_LINUXBREW_FORMULAE}" ]] || [[ -n "${HOMEBREW_MIGRATE_LINUXBREW_FORMULAE}" ]] ||
[[ -d "${HOMEBREW_LIBRARY}/LinkedKegs" ]] || [[ -d "${HOMEBREW_LIBRARY}/LinkedKegs" ]] ||
[[ ! -f "${HOMEBREW_CACHE}/all_commands_list.txt" ]] || [[ ! -f "${HOMEBREW_CACHE}/all_commands_list.txt" ]] ||
[[ -n "${HOMEBREW_DEVELOPER}" && -z "${HOMEBREW_UPDATE_PREINSTALL}" ]] [[ -n "${HOMEBREW_DEVELOPER}" && -z "${HOMEBREW_UPDATE_AUTO}" ]]
then then
brew update-report "$@" brew update-report "$@"
return $? return $?
elif [[ -z "${HOMEBREW_UPDATE_PREINSTALL}" && -z "${HOMEBREW_QUIET}" ]] elif [[ -z "${HOMEBREW_UPDATE_AUTO}" && -z "${HOMEBREW_QUIET}" ]]
then then
echo "Already up-to-date." echo "Already up-to-date."
fi fi

View File

@ -330,8 +330,13 @@ module Homebrew
default_text: "macOS: `/private/tmp`, Linux: `/tmp`.", default_text: "macOS: `/private/tmp`, Linux: `/tmp`.",
default: HOMEBREW_DEFAULT_TEMP, default: HOMEBREW_DEFAULT_TEMP,
}, },
HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED: { HOMEBREW_UPDATE_REPORT_ALL_FORMULAE: {
description: "If set, `brew update` only lists updates to installed software.", description: "If set, `brew update` lists updates to all software.",
boolean: true,
},
HOMEBREW_UPDATE_REPORT_VERSION_CHANGED_FORMULAE: {
description: "If set, `brew update` only lists updates to formulae with differing versions. " \
"Note this is slower than the default behaviour.",
boolean: true, boolean: true,
}, },
HOMEBREW_UPDATE_TO_TAG: { HOMEBREW_UPDATE_TO_TAG: {

View File

@ -195,11 +195,11 @@ describe Homebrew::Completions do
it "returns an array of options for a shell command" do it "returns an array of options for a shell command" do
expected_options = { expected_options = {
"--auto-update" => "Run on auto-updates (e.g. before `brew install`). Skips some slower steps.",
"--debug" => "Display a trace of all shell commands as they are executed.", "--debug" => "Display a trace of all shell commands as they are executed.",
"--force" => "Always do a slower, full update check (even if unnecessary).", "--force" => "Always do a slower, full update check (even if unnecessary).",
"--help" => "Show this message.", "--help" => "Show this message.",
"--merge" => "Use `git merge` to apply updates (rather than `git rebase`).", "--merge" => "Use `git merge` to apply updates (rather than `git rebase`).",
"--preinstall" => "Run on auto-updates (e.g. before `brew install`). Skips some slower steps.",
"--quiet" => "Make some output more quiet", "--quiet" => "Make some output more quiet",
"--verbose" => "Print the directories checked and `git` operations performed.", "--verbose" => "Print the directories checked and `git` operations performed.",
} }
@ -277,11 +277,11 @@ describe Homebrew::Completions do
case "${cur}" in case "${cur}" in
-*) -*)
__brewcomp " __brewcomp "
--auto-update
--debug --debug
--force --force
--help --help
--merge --merge
--preinstall
--quiet --quiet
--verbose --verbose
" "
@ -342,11 +342,11 @@ describe Homebrew::Completions do
# brew update # brew update
_brew_update() { _brew_update() {
_arguments \\ _arguments \\
'--auto-update[Run on auto-updates (e.g. before `brew install`). Skips some slower steps]' \\
'--debug[Display a trace of all shell commands as they are executed]' \\ '--debug[Display a trace of all shell commands as they are executed]' \\
'--force[Always do a slower, full update check (even if unnecessary)]' \\ '--force[Always do a slower, full update check (even if unnecessary)]' \\
'--help[Show this message]' \\ '--help[Show this message]' \\
'--merge[Use `git merge` to apply updates (rather than `git rebase`)]' \\ '--merge[Use `git merge` to apply updates (rather than `git rebase`)]' \\
'--preinstall[Run on auto-updates (e.g. before `brew install`). Skips some slower steps]' \\
'--quiet[Make some output more quiet]' \\ '--quiet[Make some output more quiet]' \\
'--verbose[Print the directories checked and `git` operations performed]' '--verbose[Print the directories checked and `git` operations performed]'
} }
@ -402,11 +402,11 @@ describe Homebrew::Completions do
completion = described_class.generate_fish_subcommand_completion("update") completion = described_class.generate_fish_subcommand_completion("update")
expect(completion).to eq <<~COMPLETION expect(completion).to eq <<~COMPLETION
__fish_brew_complete_cmd 'update' 'Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations' __fish_brew_complete_cmd 'update' 'Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations'
__fish_brew_complete_arg 'update' -l auto-update -d 'Run on auto-updates (e.g. before `brew install`). Skips some slower steps'
__fish_brew_complete_arg 'update' -l debug -d 'Display a trace of all shell commands as they are executed' __fish_brew_complete_arg 'update' -l debug -d 'Display a trace of all shell commands as they are executed'
__fish_brew_complete_arg 'update' -l force -d 'Always do a slower, full update check (even if unnecessary)' __fish_brew_complete_arg 'update' -l force -d 'Always do a slower, full update check (even if unnecessary)'
__fish_brew_complete_arg 'update' -l help -d 'Show this message' __fish_brew_complete_arg 'update' -l help -d 'Show this message'
__fish_brew_complete_arg 'update' -l merge -d 'Use `git merge` to apply updates (rather than `git rebase`)' __fish_brew_complete_arg 'update' -l merge -d 'Use `git merge` to apply updates (rather than `git rebase`)'
__fish_brew_complete_arg 'update' -l preinstall -d 'Run on auto-updates (e.g. before `brew install`). Skips some slower steps'
__fish_brew_complete_arg 'update' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'update' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'update' -l verbose -d 'Print the directories checked and `git` operations performed' __fish_brew_complete_arg 'update' -l verbose -d 'Print the directories checked and `git` operations performed'
COMPLETION COMPLETION

View File

@ -2199,11 +2199,11 @@ _brew_up() {
case "${cur}" in case "${cur}" in
-*) -*)
__brewcomp " __brewcomp "
--auto-update
--debug --debug
--force --force
--help --help
--merge --merge
--preinstall
--quiet --quiet
--verbose --verbose
" "
@ -2218,11 +2218,11 @@ _brew_update() {
case "${cur}" in case "${cur}" in
-*) -*)
__brewcomp " __brewcomp "
--auto-update
--debug --debug
--force --force
--help --help
--merge --merge
--preinstall
--quiet --quiet
--verbose --verbose
" "
@ -2294,10 +2294,10 @@ _brew_update_report() {
case "${cur}" in case "${cur}" in
-*) -*)
__brewcomp " __brewcomp "
--auto-update
--debug --debug
--force --force
--help --help
--preinstall
--quiet --quiet
--verbose --verbose
" "

View File

@ -1468,21 +1468,21 @@ __fish_brew_complete_arg 'untap' -a '(__fish_brew_suggest_taps_installed)'
__fish_brew_complete_cmd 'up' 'Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations' __fish_brew_complete_cmd 'up' 'Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations'
__fish_brew_complete_arg 'up' -l auto-update -d 'Run on auto-updates (e.g. before `brew install`). Skips some slower steps'
__fish_brew_complete_arg 'up' -l debug -d 'Display a trace of all shell commands as they are executed' __fish_brew_complete_arg 'up' -l debug -d 'Display a trace of all shell commands as they are executed'
__fish_brew_complete_arg 'up' -l force -d 'Always do a slower, full update check (even if unnecessary)' __fish_brew_complete_arg 'up' -l force -d 'Always do a slower, full update check (even if unnecessary)'
__fish_brew_complete_arg 'up' -l help -d 'Show this message' __fish_brew_complete_arg 'up' -l help -d 'Show this message'
__fish_brew_complete_arg 'up' -l merge -d 'Use `git merge` to apply updates (rather than `git rebase`)' __fish_brew_complete_arg 'up' -l merge -d 'Use `git merge` to apply updates (rather than `git rebase`)'
__fish_brew_complete_arg 'up' -l preinstall -d 'Run on auto-updates (e.g. before `brew install`). Skips some slower steps'
__fish_brew_complete_arg 'up' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'up' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'up' -l verbose -d 'Print the directories checked and `git` operations performed' __fish_brew_complete_arg 'up' -l verbose -d 'Print the directories checked and `git` operations performed'
__fish_brew_complete_cmd 'update' 'Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations' __fish_brew_complete_cmd 'update' 'Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations'
__fish_brew_complete_arg 'update' -l auto-update -d 'Run on auto-updates (e.g. before `brew install`). Skips some slower steps'
__fish_brew_complete_arg 'update' -l debug -d 'Display a trace of all shell commands as they are executed' __fish_brew_complete_arg 'update' -l debug -d 'Display a trace of all shell commands as they are executed'
__fish_brew_complete_arg 'update' -l force -d 'Always do a slower, full update check (even if unnecessary)' __fish_brew_complete_arg 'update' -l force -d 'Always do a slower, full update check (even if unnecessary)'
__fish_brew_complete_arg 'update' -l help -d 'Show this message' __fish_brew_complete_arg 'update' -l help -d 'Show this message'
__fish_brew_complete_arg 'update' -l merge -d 'Use `git merge` to apply updates (rather than `git rebase`)' __fish_brew_complete_arg 'update' -l merge -d 'Use `git merge` to apply updates (rather than `git rebase`)'
__fish_brew_complete_arg 'update' -l preinstall -d 'Run on auto-updates (e.g. before `brew install`). Skips some slower steps'
__fish_brew_complete_arg 'update' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'update' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'update' -l verbose -d 'Print the directories checked and `git` operations performed' __fish_brew_complete_arg 'update' -l verbose -d 'Print the directories checked and `git` operations performed'
@ -1518,10 +1518,10 @@ __fish_brew_complete_arg 'update-python-resources' -a '(__fish_brew_suggest_form
__fish_brew_complete_cmd 'update-report' 'The Ruby implementation of `brew update`' __fish_brew_complete_cmd 'update-report' 'The Ruby implementation of `brew update`'
__fish_brew_complete_arg 'update-report' -l auto-update -d 'Run in \'auto-update\' mode (faster, less output)'
__fish_brew_complete_arg 'update-report' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'update-report' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'update-report' -l force -d 'Treat installed and updated formulae as if they are from the same taps and migrate them anyway' __fish_brew_complete_arg 'update-report' -l force -d 'Treat installed and updated formulae as if they are from the same taps and migrate them anyway'
__fish_brew_complete_arg 'update-report' -l help -d 'Show this message' __fish_brew_complete_arg 'update-report' -l help -d 'Show this message'
__fish_brew_complete_arg 'update-report' -l preinstall -d 'Run in \'auto-update\' mode (faster, less output)'
__fish_brew_complete_arg 'update-report' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'update-report' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'update-report' -l verbose -d 'Make some output more verbose' __fish_brew_complete_arg 'update-report' -l verbose -d 'Make some output more verbose'

View File

@ -1798,11 +1798,11 @@ _brew_untap() {
# brew up # brew up
_brew_up() { _brew_up() {
_arguments \ _arguments \
'--auto-update[Run on auto-updates (e.g. before `brew install`). Skips some slower steps]' \
'--debug[Display a trace of all shell commands as they are executed]' \ '--debug[Display a trace of all shell commands as they are executed]' \
'--force[Always do a slower, full update check (even if unnecessary)]' \ '--force[Always do a slower, full update check (even if unnecessary)]' \
'--help[Show this message]' \ '--help[Show this message]' \
'--merge[Use `git merge` to apply updates (rather than `git rebase`)]' \ '--merge[Use `git merge` to apply updates (rather than `git rebase`)]' \
'--preinstall[Run on auto-updates (e.g. before `brew install`). Skips some slower steps]' \
'--quiet[Make some output more quiet]' \ '--quiet[Make some output more quiet]' \
'--verbose[Print the directories checked and `git` operations performed]' '--verbose[Print the directories checked and `git` operations performed]'
} }
@ -1810,11 +1810,11 @@ _brew_up() {
# brew update # brew update
_brew_update() { _brew_update() {
_arguments \ _arguments \
'--auto-update[Run on auto-updates (e.g. before `brew install`). Skips some slower steps]' \
'--debug[Display a trace of all shell commands as they are executed]' \ '--debug[Display a trace of all shell commands as they are executed]' \
'--force[Always do a slower, full update check (even if unnecessary)]' \ '--force[Always do a slower, full update check (even if unnecessary)]' \
'--help[Show this message]' \ '--help[Show this message]' \
'--merge[Use `git merge` to apply updates (rather than `git rebase`)]' \ '--merge[Use `git merge` to apply updates (rather than `git rebase`)]' \
'--preinstall[Run on auto-updates (e.g. before `brew install`). Skips some slower steps]' \
'--quiet[Make some output more quiet]' \ '--quiet[Make some output more quiet]' \
'--verbose[Print the directories checked and `git` operations performed]' '--verbose[Print the directories checked and `git` operations performed]'
} }
@ -1859,10 +1859,10 @@ _brew_update_python_resources() {
# brew update-report # brew update-report
_brew_update_report() { _brew_update_report() {
_arguments \ _arguments \
'--auto-update[Run in '\''auto-update'\'' mode (faster, less output)]' \
'--debug[Display any debugging information]' \ '--debug[Display any debugging information]' \
'--force[Treat installed and updated formulae as if they are from the same taps and migrate them anyway]' \ '--force[Treat installed and updated formulae as if they are from the same taps and migrate them anyway]' \
'--help[Show this message]' \ '--help[Show this message]' \
'--preinstall[Run in '\''auto-update'\'' mode (faster, less output)]' \
'--quiet[Make some output more quiet]' \ '--quiet[Make some output more quiet]' \
'--verbose[Make some output more verbose]' '--verbose[Make some output more verbose]'
} }

View File

@ -682,7 +682,7 @@ Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1)
* `--merge`: * `--merge`:
Use `git merge` to apply updates (rather than `git rebase`). Use `git merge` to apply updates (rather than `git rebase`).
* `--preinstall`: * `--auto-update`:
Run on auto-updates (e.g. before `brew install`). Skips some slower steps. Run on auto-updates (e.g. before `brew install`). Skips some slower steps.
* `-f`, `--force`: * `-f`, `--force`:
Always do a slower, full update check (even if unnecessary). Always do a slower, full update check (even if unnecessary).
@ -2171,8 +2171,11 @@ example, run `export HOMEBREW_NO_INSECURE_REDIRECT=1` rather than just
*Default:* macOS: `/private/tmp`, Linux: `/tmp`. *Default:* macOS: `/private/tmp`, Linux: `/tmp`.
- `HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED` - `HOMEBREW_UPDATE_REPORT_ALL_FORMULAE`
<br>If set, `brew update` only lists updates to installed software. <br>If set, `brew update` lists updates to all software.
- `HOMEBREW_UPDATE_REPORT_VERSION_CHANGED_FORMULAE`
<br>If set, `brew update` only lists updates to formulae with differing versions. Note this is slower than the default behaviour.
- `HOMEBREW_UPDATE_TO_TAG` - `HOMEBREW_UPDATE_TO_TAG`
<br>If set, always use the latest stable tag (even if developer commands have been run). <br>If set, always use the latest stable tag (even if developer commands have been run).

View File

@ -936,7 +936,7 @@ Fetch the newest version of Homebrew and all formulae from GitHub using \fBgit\f
Use \fBgit merge\fR to apply updates (rather than \fBgit rebase\fR)\. Use \fBgit merge\fR to apply updates (rather than \fBgit rebase\fR)\.
. .
.TP .TP
\fB\-\-preinstall\fR \fB\-\-auto\-update\fR
Run on auto\-updates (e\.g\. before \fBbrew install\fR)\. Skips some slower steps\. Run on auto\-updates (e\.g\. before \fBbrew install\fR)\. Skips some slower steps\.
. .
.TP .TP
@ -3183,10 +3183,16 @@ Use this path as the temporary directory for building packages\. Changing this m
\fIDefault:\fR macOS: \fB/private/tmp\fR, Linux: \fB/tmp\fR\. \fIDefault:\fR macOS: \fB/private/tmp\fR, Linux: \fB/tmp\fR\.
. .
.TP .TP
\fBHOMEBREW_UPDATE_REPORT_ONLY_INSTALLED\fR \fBHOMEBREW_UPDATE_REPORT_ALL_FORMULAE\fR
. .
.br .br
If set, \fBbrew update\fR only lists updates to installed software\. If set, \fBbrew update\fR lists updates to all software\.
.
.TP
\fBHOMEBREW_UPDATE_REPORT_VERSION_CHANGED_FORMULAE\fR
.
.br
If set, \fBbrew update\fR only lists updates to formulae with differing versions\. Note this is slower than the default behaviour\.
. .
.TP .TP
\fBHOMEBREW_UPDATE_TO_TAG\fR \fBHOMEBREW_UPDATE_TO_TAG\fR