# Each line is a file pattern followed by one or more owners.

# Order is important; the last matching pattern takes the most precedence.

# When someone opens a pull request that only modifies files in directory, only
# component owners and not the global owner(s) will be requested for a review.

# Syntax: https://help.github.com/articles/about-codeowners/

# Use individual usernames instead of teams (like @bazelbuild/android) for
# auto-assignment to work, unless everyone in the team has write permissions to the repository.
# See https://github.community/t5/How-to-use-Git-and-GitHub/CODEOWNERS-works-with-users-but-not-teams/td-p/4986

# Component owners
# ----------------

# Android

# android/ directory anywhere in the repository
android/ @ahumesky

/src/tools/android/java/com/google/devtools/build/android/desugar/ @ahumesky @kevin1e100

/src/test/java/com/google/devtools/build/android/desugar/ @ahumesky @kevin1e100

/src/tools/android/java/com/google/devtools/build/android/dexer/ @ahumesky @kevin1e100

/src/test/java/com/google/devtools/build/android/dexer/ @ahumesky @kevin1e100

# Apple

/src/objc_tools/ @allevato @davidgoldman @dmaclach @kelvinchan-google @reinhillman @thomasvl

/src/test/shell/bazel/apple/ @allevato @davidgoldman @dmaclach @kelvinchan-google @reinhillman @thomasvl

# Documentation

/site @aiuto @gregestren @jin

# C++

/src/tools/cpp @oquenchil

/src/test/shell/bazel/cpp @oquenchil

/src/test/java/com/google/devtools/build/lib/rules/cpp/ @oquenchil

/src/main/java/com/google/devtools/build/lib/rules/cpp/ @oquenchil

# Java

/src/java_tools/buildjar/ @bazelbuild/java-team

/src/main/java/com/google/devtools/build/lib/ideinfo/ @bazelbuild/intellij

/src/tools/singlejar/ @asmundak

# Execution and I/O related code

/src/main/java/com/google/devtools/build/lib/rules/ @lberki

# Skylark

/src/main/java/com/google/devtools/build/lib/syntax/ @brandjon @laurentlb @alandonovan

/tools/coverage/ @lberki
/tools/test/collect_coverage.sh @lberki
/tools/test/collect_cc_coverage.sh @lberki
/tools/test/CoverageOutputGenerator/ @lberki
