# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# Any committer can add themselves to any of the path patterns
# and will subsequently get requested as a reviewer for any PRs
# that change matching files.
#
# This file uses .gitignore syntax with a few exceptions see the
# documentation about the syntax: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

# modules
/adapter/       @lidavidm @laurentgo @wgtmac @jbonofre
/algorithm/     @lidavidm @laurentgo @wgtmac @jbonofre
/arrow-format/  @lidavidm @laurentgo @wgtmac @jbonofre
/c/             @lidavidm @laurentgo @wgtmac @jbonofre
/compression/   @lidavidm @laurentgo @wgtmac @jbonofre
/dataset/       @lidavidm @laurentgo @wgtmac @jbonofre
/flight/        @lidavidm @laurentgo @wgtmac @jbonofre
/format/        @lidavidm @laurentgo @wgtmac @jbonofre
/gandiva/       @lidavidm @laurentgo @wgtmac @jbonofre
/memory/        @lidavidm @laurentgo @wgtmac @jbonofre
/performance/   @lidavidm @laurentgo @wgtmac @jbonofre
/tools/         @lidavidm @laurentgo @wgtmac @jbonofre
/vector/        @lidavidm @laurentgo @wgtmac @jbonofre
CMakeLists.txt  @lidavidm @laurentgo @wgtmac @jbonofre

# release scripts
/ci/   @lidavidm @laurentgo @wgtmac @kou @jbonofre
/dev/  @lidavidm @laurentgo @wgtmac @kou @jbonofre

# PR CI and repository files
/.github/                @lidavidm @laurentgo @wgtmac @kou @jbonofre
/.asf.yaml               @lidavidm @laurentgo @wgtmac @kou @jbonofre
/.env                   @lidavidm @laurentgo @wgtmac @jbonofre
/.pre-commit-config.yaml @lidavidm @laurentgo @wgtmac @jbonofre
/Brewfile                @lidavidm @laurentgo @wgtmac @jbonofre
/docker-compose.yaml     @lidavidm @laurentgo @wgtmac @jbonofre

# Java specific
/.mvn/  @lidavidm @laurentgo @wgtmac @jbonofre
/bom/   @lidavidm @laurentgo @wgtmac @jbonofre
pom.xml @lidavidm @laurentgo @wgtmac @jbonofre
