Compare commits
12 Commits
deb6666f32
...
613d6466a9
Author | SHA1 | Date | |
---|---|---|---|
![]() |
613d6466a9 | ||
![]() |
99456ee150 | ||
![]() |
29270a8858 | ||
![]() |
3fb55a1577 | ||
![]() |
3d80dfadd1 | ||
![]() |
f233244ab7 | ||
![]() |
e4ac3bfeed | ||
![]() |
610c67b715 | ||
![]() |
6d548f784b | ||
![]() |
b2539d37fe | ||
![]() |
1cc4d0bc25 | ||
![]() |
89d36e0dd5 |
@ -1,4 +1,4 @@
|
||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
# This script is loaded by formula_installer as a separate instance.
|
||||
@ -23,28 +23,40 @@ require "extend/pathname/write_mkpath_extension"
|
||||
class Build
|
||||
include Utils::Output::Mixin
|
||||
|
||||
attr_reader :formula, :deps, :reqs, :args
|
||||
sig { returns(Formula) }
|
||||
attr_reader :formula
|
||||
|
||||
sig { returns(T::Array[Dependency]) }
|
||||
attr_reader :deps
|
||||
|
||||
sig { returns(Requirements) }
|
||||
attr_reader :reqs
|
||||
|
||||
sig { returns(Homebrew::Cmd::InstallCmd::Args) }
|
||||
attr_reader :args
|
||||
|
||||
sig { params(formula: Formula, options: Options, args: Homebrew::Cmd::InstallCmd::Args).void }
|
||||
def initialize(formula, options, args:)
|
||||
@formula = formula
|
||||
@formula.build = BuildOptions.new(options, formula.options)
|
||||
@args = args
|
||||
@args = T.let(args, Homebrew::Cmd::InstallCmd::Args)
|
||||
@deps = T.let([], T::Array[Dependency])
|
||||
@reqs = T.let(Requirements.new, Requirements)
|
||||
|
||||
return if args.ignore_dependencies?
|
||||
|
||||
if args.ignore_dependencies?
|
||||
@deps = []
|
||||
@reqs = []
|
||||
else
|
||||
@deps = expand_deps
|
||||
@reqs = expand_reqs
|
||||
end
|
||||
end
|
||||
|
||||
sig { params(dependent: Formula).returns(BuildOptions) }
|
||||
def effective_build_options_for(dependent)
|
||||
args = dependent.build.used_options
|
||||
args |= Tab.for_formula(dependent).used_options
|
||||
BuildOptions.new(args, dependent.options)
|
||||
end
|
||||
|
||||
sig { returns(Requirements) }
|
||||
def expand_reqs
|
||||
formula.recursive_requirements do |dependent, req|
|
||||
build = effective_build_options_for(dependent)
|
||||
@ -54,6 +66,7 @@ class Build
|
||||
end
|
||||
end
|
||||
|
||||
sig { returns(T::Array[Dependency]) }
|
||||
def expand_deps
|
||||
formula.recursive_dependencies do |dependent, dep|
|
||||
build = effective_build_options_for(dependent)
|
||||
@ -67,6 +80,7 @@ class Build
|
||||
end
|
||||
end
|
||||
|
||||
sig { void }
|
||||
def install
|
||||
formula_deps = deps.map(&:to_formula)
|
||||
keg_only_deps = formula_deps.select(&:keg_only?)
|
||||
@ -79,7 +93,7 @@ class Build
|
||||
ENV.activate_extensions!(env: args.env)
|
||||
|
||||
if superenv?(args.env)
|
||||
superenv = T.cast(ENV, Superenv)
|
||||
superenv = ENV
|
||||
superenv.keg_only_deps = keg_only_deps
|
||||
superenv.deps = formula_deps
|
||||
superenv.run_time_deps = run_time_deps
|
||||
@ -192,7 +206,7 @@ class Build
|
||||
tab.write
|
||||
|
||||
# Find and link metafiles
|
||||
formula.prefix.install_metafiles formula.buildpath
|
||||
formula.prefix.install_metafiles T.must(formula.buildpath)
|
||||
formula.prefix.install_metafiles formula.libexec if formula.libexec.exist?
|
||||
|
||||
normalize_pod2man_outputs!(formula)
|
||||
@ -202,6 +216,7 @@ class Build
|
||||
end
|
||||
end
|
||||
|
||||
sig { returns(T::Array[Symbol]) }
|
||||
def detect_stdlibs
|
||||
keg = Keg.new(formula.prefix)
|
||||
|
||||
@ -211,13 +226,15 @@ class Build
|
||||
keg.detect_cxx_stdlibs(skip_executables: true)
|
||||
end
|
||||
|
||||
sig { params(formula: Formula).void }
|
||||
def fixopt(formula)
|
||||
path = if formula.linked_keg.directory? && formula.linked_keg.symlink?
|
||||
formula.linked_keg.resolved_path
|
||||
elsif formula.prefix.directory?
|
||||
formula.prefix
|
||||
elsif (kids = formula.rack.children).size == 1 && kids.first.directory?
|
||||
kids.first
|
||||
elsif (children = formula.rack.children.presence) && children.size == 1 &&
|
||||
(first_child = children.first.presence) && first_child.directory?
|
||||
first_child
|
||||
else
|
||||
raise
|
||||
end
|
||||
@ -226,6 +243,7 @@ class Build
|
||||
raise "#{formula.opt_prefix} not present or broken\nPlease reinstall #{formula.full_name}. Sorry :("
|
||||
end
|
||||
|
||||
sig { params(formula: Formula).void }
|
||||
def normalize_pod2man_outputs!(formula)
|
||||
keg = Keg.new(formula.prefix)
|
||||
keg.normalize_pod2man_outputs!
|
||||
@ -245,7 +263,7 @@ begin
|
||||
|
||||
trap("INT", old_trap)
|
||||
|
||||
formula = args.named.to_formulae.first
|
||||
formula = args.named.to_formulae.fetch(0)
|
||||
options = Options.create(args.flags_only)
|
||||
build = Build.new(formula, options, args:)
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Settings for the build environment.
|
||||
class BuildEnvironment
|
||||
sig { params(settings: Symbol).void }
|
||||
def initialize(*settings)
|
||||
@settings = Set.new(settings)
|
||||
@settings = T.let(Set.new(settings), T::Set[Symbol])
|
||||
end
|
||||
|
||||
sig { params(args: T::Enumerable[Symbol]).returns(T.self_type) }
|
||||
@ -29,16 +29,17 @@ class BuildEnvironment
|
||||
module DSL
|
||||
# Initialise @env for each class which may use this DSL (e.g. each formula subclass).
|
||||
# `env` may never be called and it needs to be initialised before the class is frozen.
|
||||
sig { params(child: T.untyped).void }
|
||||
def inherited(child)
|
||||
super
|
||||
child.instance_eval do
|
||||
@env = BuildEnvironment.new
|
||||
@env = T.let(BuildEnvironment.new, T.nilable(BuildEnvironment))
|
||||
end
|
||||
end
|
||||
|
||||
sig { params(settings: Symbol).returns(BuildEnvironment) }
|
||||
def env(*settings)
|
||||
@env.merge(settings)
|
||||
T.must(@env).merge(settings)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Options for a formula build.
|
||||
class BuildOptions
|
||||
sig { params(args: Options, options: Options).void }
|
||||
def initialize(args, options)
|
||||
@args = args
|
||||
@options = options
|
||||
@args = T.let(args, Options)
|
||||
@options = T.let(options, Options)
|
||||
end
|
||||
|
||||
# True if a {Formula} is being built with a specific option.
|
||||
@ -29,8 +30,13 @@ class BuildOptions
|
||||
# args << "--with-example1"
|
||||
# end
|
||||
# ```
|
||||
sig { params(val: T.any(String, Requirement, Dependency)).returns(T::Boolean) }
|
||||
def with?(val)
|
||||
option_names = val.respond_to?(:option_names) ? val.option_names : [val]
|
||||
option_names = if val.is_a?(String)
|
||||
[val]
|
||||
else
|
||||
val.option_names
|
||||
end
|
||||
|
||||
option_names.any? do |name|
|
||||
if option_defined? "with-#{name}"
|
||||
@ -50,11 +56,13 @@ class BuildOptions
|
||||
# ```ruby
|
||||
# args << "--no-spam-plz" if build.without? "spam"
|
||||
# ```
|
||||
sig { params(val: T.any(String, Requirement, Dependency)).returns(T::Boolean) }
|
||||
def without?(val)
|
||||
!with?(val)
|
||||
end
|
||||
|
||||
# True if a {Formula} is being built as a bottle (i.e. binary package).
|
||||
sig { returns(T::Boolean) }
|
||||
def bottle?
|
||||
include? "build-bottle"
|
||||
end
|
||||
@ -75,6 +83,7 @@ class BuildOptions
|
||||
# args << "--and-a-cold-beer" if build.with? "cold-beer"
|
||||
# end
|
||||
# ```
|
||||
sig { returns(T::Boolean) }
|
||||
def head?
|
||||
include? "HEAD"
|
||||
end
|
||||
@ -87,29 +96,35 @@ class BuildOptions
|
||||
# ```ruby
|
||||
# args << "--some-feature" if build.stable?
|
||||
# ```
|
||||
sig { returns(T::Boolean) }
|
||||
def stable?
|
||||
!head?
|
||||
end
|
||||
|
||||
# True if the build has any arguments or options specified.
|
||||
sig { returns(T::Boolean) }
|
||||
def any_args_or_options?
|
||||
!@args.empty? || !@options.empty?
|
||||
end
|
||||
|
||||
sig { returns(Options) }
|
||||
def used_options
|
||||
@options & @args
|
||||
end
|
||||
|
||||
sig { returns(Options) }
|
||||
def unused_options
|
||||
@options - @args
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
sig { params(name: String).returns(T::Boolean) }
|
||||
def include?(name)
|
||||
@args.include?("--#{name}")
|
||||
end
|
||||
|
||||
sig { params(name: String).returns(T::Boolean) }
|
||||
def option_defined?(name)
|
||||
@options.include? name
|
||||
end
|
||||
|
@ -42,6 +42,9 @@ module Homebrew
|
||||
flag "--organisation=", "--organization=", "--org=",
|
||||
description: "Specify the organisation to populate sources repositories from. " \
|
||||
"Omitting this flag searches the Homebrew primary repositories."
|
||||
flag "--team=",
|
||||
description: "Specify the team to populate users from. " \
|
||||
"The first part of the team name will be used as the organisation."
|
||||
flag "--from=",
|
||||
description: "Date (ISO 8601 format) to start searching contributions. " \
|
||||
"Omitting this flag searches the past year."
|
||||
@ -50,6 +53,8 @@ module Homebrew
|
||||
switch "--csv",
|
||||
description: "Print a CSV of contributions across repositories over the time period."
|
||||
conflicts "--organisation", "--repositories"
|
||||
conflicts "--organisation", "--team"
|
||||
conflicts "--user", "--team"
|
||||
end
|
||||
|
||||
sig { override.void }
|
||||
@ -58,15 +63,34 @@ module Homebrew
|
||||
|
||||
Homebrew.install_bundler_gems!(groups: ["contributions"]) if args.csv?
|
||||
|
||||
require "utils/github"
|
||||
|
||||
results = {}
|
||||
grand_totals = {}
|
||||
|
||||
from = args.from.presence || Date.today.prev_year.iso8601
|
||||
to = args.to.presence || (Date.today + 1).iso8601
|
||||
|
||||
organisation = nil
|
||||
repositories = if (org = args.organisation.presence)
|
||||
|
||||
users = if (team = args.team.presence)
|
||||
team_sections = team.split("/")
|
||||
organisation = team_sections.first.presence
|
||||
team_name = team_sections.last.presence
|
||||
if team_sections.length != 2 || organisation.nil? || team_name.nil?
|
||||
odie "Team must be in the format `organisation/team`!"
|
||||
end
|
||||
|
||||
puts "Getting members for #{organisation}/#{team_name}..." if args.verbose?
|
||||
GitHub.members_by_team(organisation, team_name).keys
|
||||
elsif (users = args.user.presence)
|
||||
users
|
||||
else
|
||||
puts "Getting members for Homebrew/maintainers..." if args.verbose?
|
||||
GitHub.members_by_team("Homebrew", "maintainers").keys
|
||||
end
|
||||
|
||||
repositories = if (org = organisation.presence) || (org = args.organisation.presence)
|
||||
organisation = org
|
||||
puts "Getting repositories for #{organisation}..." if args.verbose?
|
||||
GitHub.organisation_repositories(organisation, from, to, args.verbose?)
|
||||
elsif (repos = args.repositories.presence) && repos.length == 1 && (first_repository = repos.first)
|
||||
case first_repository
|
||||
@ -87,8 +111,6 @@ module Homebrew
|
||||
end
|
||||
organisation ||= T.must(repositories.fetch(0).split("/").first)
|
||||
|
||||
require "utils/github"
|
||||
users = args.user.presence || GitHub.members_by_team("Homebrew", "maintainers").keys
|
||||
users.each do |username|
|
||||
# TODO: Using the GitHub username to scan the `git log` undercounts some
|
||||
# contributions as people might not always have configured their Git
|
||||
|
@ -29,6 +29,9 @@ class Homebrew::DevCmd::Contributions::Args < Homebrew::CLI::Args
|
||||
sig { returns(T.nilable(T::Array[String])) }
|
||||
def repositories; end
|
||||
|
||||
sig { returns(T.nilable(String)) }
|
||||
def team; end
|
||||
|
||||
sig { returns(T.nilable(String)) }
|
||||
def to; end
|
||||
|
||||
|
@ -119,10 +119,11 @@ module GitHub
|
||||
API.open_rest(url, data:, scopes:)
|
||||
end
|
||||
|
||||
# We default to private if we aren't sure or if the GitHub API is disabled.
|
||||
sig { params(full_name: String).returns(T::Boolean) }
|
||||
def self.private_repo?(full_name)
|
||||
uri = url_to "repos", full_name
|
||||
API.open_rest(uri) { |json| json["private"] }
|
||||
API.open_rest(uri) { |json| json.fetch("private", true) }
|
||||
end
|
||||
|
||||
def self.search_query_string(*main_params, **qualifiers)
|
||||
|
@ -61,7 +61,7 @@ Homebrew's [Project Leadership Committee](https://docs.brew.sh/Homebrew-Governan
|
||||
|
||||
Homebrew's [Technical Steering Committee](https://docs.brew.sh/Homebrew-Governance#7-technical-steering-committee) is [Bo Anderson](https://github.com/Bo98), [Issy Long](https://github.com/issyl0), [Michael Cho](https://github.com/cho-m), [Mike McQuaid](https://github.com/MikeMcQuaid) and [Ruoyu Zhong](https://github.com/ZhongRuoyu).
|
||||
|
||||
Homebrew's maintainers are [Alexander Bayandin](https://github.com/bayandin), [Bevan Kay](https://github.com/bevanjkay), [Bo Anderson](https://github.com/Bo98), [Branch Vincent](https://github.com/branchvincent), [Caleb Xu](https://github.com/alebcay), [Carlo Cabrera](https://github.com/carlocab), [Daeho Ro](https://github.com/daeho-ro), [Douglas Eichelberger](https://github.com/dduugg), [Dustin Rodrigues](https://github.com/dtrodrigues), [Eric Knibbe](https://github.com/EricFromCanada), [FX Coudert](https://github.com/fxcoudert), [Issy Long](https://github.com/issyl0), [Justin Krehel](https://github.com/krehel), [Klaus Hipp](https://github.com/khipp), [Markus Reiter](https://github.com/reitermarkus), [Michael Cho](https://github.com/cho-m), [Michka Popoff](https://github.com/iMichka), [Mike McQuaid](https://github.com/MikeMcQuaid), [Nanda H Krishna](https://github.com/nandahkrishna), [Patrick Linnane](https://github.com/p-linnane), [Rui Chen](https://github.com/chenrui333), [Ruoyu Zhong](https://github.com/ZhongRuoyu), [Rylan Polster](https://github.com/Rylan12), [Sam Ford](https://github.com/samford), [Sean Molenaar](https://github.com/SMillerDev), [Štefan Baebler](https://github.com/stefanb), [Thierry Moisan](https://github.com/Moisan), [Timothy Sutton](https://github.com/timsutton) and [William Woodruff](https://github.com/woodruffw).
|
||||
Homebrew's maintainers are [Bevan Kay](https://github.com/bevanjkay), [Bo Anderson](https://github.com/Bo98), [Branch Vincent](https://github.com/branchvincent), [Caleb Xu](https://github.com/alebcay), [Carlo Cabrera](https://github.com/carlocab), [Daeho Ro](https://github.com/daeho-ro), [Douglas Eichelberger](https://github.com/dduugg), [Dustin Rodrigues](https://github.com/dtrodrigues), [Eric Knibbe](https://github.com/EricFromCanada), [FX Coudert](https://github.com/fxcoudert), [Issy Long](https://github.com/issyl0), [Justin Krehel](https://github.com/krehel), [Klaus Hipp](https://github.com/khipp), [Markus Reiter](https://github.com/reitermarkus), [Michael Cho](https://github.com/cho-m), [Michka Popoff](https://github.com/iMichka), [Mike McQuaid](https://github.com/MikeMcQuaid), [Nanda H Krishna](https://github.com/nandahkrishna), [Patrick Linnane](https://github.com/p-linnane), [Rui Chen](https://github.com/chenrui333), [Ruoyu Zhong](https://github.com/ZhongRuoyu), [Rylan Polster](https://github.com/Rylan12), [Sam Ford](https://github.com/samford), [Sean Molenaar](https://github.com/SMillerDev), [Štefan Baebler](https://github.com/stefanb), [Thierry Moisan](https://github.com/Moisan) and [William Woodruff](https://github.com/woodruffw).
|
||||
|
||||
Former maintainers with significant contributions include [Miccal Matthews](https://github.com/miccal), [Misty De Méo](https://github.com/mistydemeo), [Shaun Jackman](https://github.com/sjackman), [Vítor Galvão](https://github.com/vitorgalvao), [Claudia Pellegrino](https://github.com/claui), [Seeker](https://github.com/SeekingMeaning), [Jan Viljanen](https://github.com/javian), [JCount](https://github.com/jcount), [commitay](https://github.com/commitay), [Dominyk Tiller](https://github.com/DomT4), [Tim Smith](https://github.com/tdsmith), [Baptiste Fontaine](https://github.com/bfontaine), [Xu Cheng](https://github.com/xu-cheng), [Martin Afanasjew](https://github.com/UniqMartin), [Brett Koonce](https://github.com/asparagui), [Charlie Sharpsteen](https://github.com/Sharpie), [Jack Nagel](https://github.com/jacknagel), [Adam Vandenberg](https://github.com/adamv), [Andrew Janke](https://github.com/apjanke), [Alex Dunn](https://github.com/dunn), [neutric](https://github.com/neutric), [Tomasz Pajor](https://github.com/nijikon), [Uladzislau Shablinski](https://github.com/vladshablinsky), [Alyssa Ross](https://github.com/alyssais), [ilovezfs](https://github.com/ilovezfs), [Chongyu Zhu](https://github.com/lembacon) and Homebrew's creator: [Max Howell](https://github.com/mxcl).
|
||||
|
||||
|
@ -821,6 +821,7 @@ _brew_contributions() {
|
||||
--organisation
|
||||
--quiet
|
||||
--repositories
|
||||
--team
|
||||
--to
|
||||
--user
|
||||
--verbose
|
||||
|
@ -605,6 +605,7 @@ __fish_brew_complete_arg 'contributions' -l help -d 'Show this message'
|
||||
__fish_brew_complete_arg 'contributions' -l organisation -d 'Specify the organisation to populate sources repositories from. Omitting this flag searches the Homebrew primary repositories'
|
||||
__fish_brew_complete_arg 'contributions' -l quiet -d 'Make some output more quiet'
|
||||
__fish_brew_complete_arg 'contributions' -l repositories -d 'Specify a comma-separated list of repositories to search. All repositories must be under the same user or organisation. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: `Homebrew/brew`, `Homebrew/homebrew-core`, `Homebrew/homebrew-cask`. Specifying `--repositories=all` searches all non-deprecated Homebrew repositories. '
|
||||
__fish_brew_complete_arg 'contributions' -l team -d 'Specify the team to populate users from. The first part of the team name will be used as the organisation'
|
||||
__fish_brew_complete_arg 'contributions' -l to -d 'Date (ISO 8601 format) to stop searching contributions'
|
||||
__fish_brew_complete_arg 'contributions' -l user -d 'Specify a comma-separated list of GitHub usernames or email addresses to find contributions from. Omitting this flag searches Homebrew maintainers'
|
||||
__fish_brew_complete_arg 'contributions' -l verbose -d 'Make some output more verbose'
|
||||
|
@ -769,11 +769,12 @@ _brew_contributions() {
|
||||
'--debug[Display any debugging information]' \
|
||||
'--from[Date (ISO 8601 format) to start searching contributions. Omitting this flag searches the past year]' \
|
||||
'--help[Show this message]' \
|
||||
'(--repositories)--organisation[Specify the organisation to populate sources repositories from. Omitting this flag searches the Homebrew primary repositories]' \
|
||||
'(--repositories --team)--organisation[Specify the organisation to populate sources repositories from. Omitting this flag searches the Homebrew primary repositories]' \
|
||||
'--quiet[Make some output more quiet]' \
|
||||
'(--organisation)--repositories[Specify a comma-separated list of repositories to search. All repositories must be under the same user or organisation. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: `Homebrew/brew`, `Homebrew/homebrew-core`, `Homebrew/homebrew-cask`. Specifying `--repositories=all` searches all non-deprecated Homebrew repositories. ]' \
|
||||
'(--organisation --user)--team[Specify the team to populate users from. The first part of the team name will be used as the organisation]' \
|
||||
'--to[Date (ISO 8601 format) to stop searching contributions]' \
|
||||
'--user[Specify a comma-separated list of GitHub usernames or email addresses to find contributions from. Omitting this flag searches Homebrew maintainers]' \
|
||||
'(--team)--user[Specify a comma-separated list of GitHub usernames or email addresses to find contributions from. Omitting this flag searches Homebrew maintainers]' \
|
||||
'--verbose[Make some output more verbose]'
|
||||
}
|
||||
|
||||
|
@ -2426,6 +2426,11 @@ Summarise contributions to Homebrew repositories.
|
||||
: Specify the organisation to populate sources repositories from. Omitting this
|
||||
flag searches the Homebrew primary repositories.
|
||||
|
||||
`--team`
|
||||
|
||||
: Specify the team to populate users from. The first part of the team name will
|
||||
be used as the organisation.
|
||||
|
||||
`--from`
|
||||
|
||||
: Date (ISO 8601 format) to start searching contributions. Omitting this flag
|
||||
@ -4539,12 +4544,12 @@ McQuaid, Patrick Linnane and Vanessa Gennarelli.
|
||||
Homebrew's Technical Steering Committee is Bo Anderson, Issy Long, Michael Cho,
|
||||
Mike McQuaid and Ruoyu Zhong.
|
||||
|
||||
Homebrew's maintainers are Alexander Bayandin, Bevan Kay, Bo Anderson, Branch
|
||||
Vincent, Caleb Xu, Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin
|
||||
Rodrigues, Eric Knibbe, FX Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus
|
||||
Reiter, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick
|
||||
Linnane, Rui Chen, Ruoyu Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan
|
||||
Baebler, Thierry Moisan, Timothy Sutton and William Woodruff.
|
||||
Homebrew's maintainers are Bevan Kay, Bo Anderson, Branch Vincent, Caleb Xu,
|
||||
Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin Rodrigues, Eric Knibbe, FX
|
||||
Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus Reiter, Michael Cho,
|
||||
Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Rui Chen, Ruoyu
|
||||
Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan Baebler, Thierry Moisan
|
||||
and William Woodruff.
|
||||
|
||||
Former maintainers with significant contributions include Miccal Matthews, Misty
|
||||
De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen,
|
||||
|
@ -1520,6 +1520,9 @@ Specify a comma\-separated list of repositories to search\. All repositories mus
|
||||
\fB\-\-organisation\fP
|
||||
Specify the organisation to populate sources repositories from\. Omitting this flag searches the Homebrew primary repositories\.
|
||||
.TP
|
||||
\fB\-\-team\fP
|
||||
Specify the team to populate users from\. The first part of the team name will be used as the organisation\.
|
||||
.TP
|
||||
\fB\-\-from\fP
|
||||
Date (ISO 8601 format) to start searching contributions\. Omitting this flag searches the past year\.
|
||||
.TP
|
||||
@ -2979,7 +2982,7 @@ Homebrew\[u2019]s Project Leadership Committee is Colin Dean, Michka Popoff, Mik
|
||||
.P
|
||||
Homebrew\[u2019]s Technical Steering Committee is Bo Anderson, Issy Long, Michael Cho, Mike McQuaid and Ruoyu Zhong\.
|
||||
.P
|
||||
Homebrew\[u2019]s maintainers are Alexander Bayandin, Bevan Kay, Bo Anderson, Branch Vincent, Caleb Xu, Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin Rodrigues, Eric Knibbe, FX Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus Reiter, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Rui Chen, Ruoyu Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan Baebler, Thierry Moisan, Timothy Sutton and William Woodruff\.
|
||||
Homebrew\[u2019]s maintainers are Bevan Kay, Bo Anderson, Branch Vincent, Caleb Xu, Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin Rodrigues, Eric Knibbe, FX Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus Reiter, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Rui Chen, Ruoyu Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan Baebler, Thierry Moisan and William Woodruff\.
|
||||
.P
|
||||
Former maintainers with significant contributions include Miccal Matthews, Misty De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen, JCount, commitay, Dominyk Tiller, Tim Smith, Baptiste Fontaine, Xu Cheng, Martin Afanasjew, Brett Koonce, Charlie Sharpsteen, Jack Nagel, Adam Vandenberg, Andrew Janke, Alex Dunn, neutric, Tomasz Pajor, Uladzislau Shablinski, Alyssa Ross, ilovezfs, Chongyu Zhu and Homebrew\[u2019]s creator: Max Howell\.
|
||||
.SH "BUGS"
|
||||
|
Loading…
x
Reference in New Issue
Block a user