Skip to main content

A git subcommand to query and validate CODEOWNERS

Project description

git-codeowners

A git subcommand to query and validate CODEOWNERS.

List owners of files based on the CODEOWNERS file of the current repository.

> git codeowners src/main.rs
src/main.rs                              @weyland
> git codeowners `git ls-files`
.gitignore                               (unowned)
Cargo.lock                               @weyland
Cargo.toml                               @weyland
LICENSE                                  (unowned)
README.md                                @weyland
src/main.rs                              @weyland
# Oops, did the last commit add unowned files?
> git diff --name-only --diff-filter=A | git codeowners
.gitignore                               @bob
LICENSE                                  (unowned)
# I need stats about my repo
> echo `git ls-files | git codeowners | grep "(unowned)"| wc -l` out of `git ls-files | git codeowners | wc -l` files in this repository do not have a corresponding CODEOWNERS entry
2 out of 6 files in this repository do not have a CODEOWNERS entry

Installation

  • via pip: pip install git-codeowners

  • via Cargo: cargo install git-owners

    Note: The Cargo crate installs an equivalent git-owners command in addition to git-codeowners, for backwards compatibility.

Usage

  • Show owner of a file

    git codeowners some/file
    
  • Show owners for a list of files

    git codeowners some/file some/other/file
    

[!NOTE] Each path should be relative to the git repository root -- this makes it easy to combine with other git commands.

  • Show owners for every tracked file in the repository

    git ls-files | git codeowners
    
  • Show owners for files modified in last five commits

    git diff --name-only HEAD~5 HEAD | git codeowners
    
  • Congratulate the user if the current changeset does not add files without owner

    git diff --diff-filter=ACR --name-only | git codeowners && echo "Great job! No unowned files added!"
    
  • Get an overview of your CODEOWNERS coverage

    echo `git ls-files | git codeowners | grep "(unowned)"| wc -l` out of `git ls-files | git codeowners | wc -l` files in this repository do not have a CODEOWNERS entry
    

Features

  • Detects the right CODEOWNERS file of the current git repository
  • Is composable & scripting friendly
  • Works well as a pre-commit hook
  • Is fast & written in Rust

Issues & Contributing

If you have any questions or problems, feel free to communicate using Github Issues.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git_codeowners-1.1.0.tar.gz (9.1 kB view hashes)

Uploaded Source

Built Distributions

git_codeowners-1.1.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

git_codeowners-1.1.0-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

git_codeowners-1.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (853.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

git_codeowners-1.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

git_codeowners-1.1.0-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

git_codeowners-1.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (853.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

git_codeowners-1.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

git_codeowners-1.1.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

git_codeowners-1.1.0-pp38-pypy38_pp73-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

git_codeowners-1.1.0-cp312-none-win_amd64.whl (1.2 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

git_codeowners-1.1.0-cp312-none-win32.whl (1.2 MB view hashes)

Uploaded CPython 3.12 Windows x86

git_codeowners-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-cp312-cp312-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

git_codeowners-1.1.0-cp312-cp312-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

git_codeowners-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (853.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

git_codeowners-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

git_codeowners-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (724.1 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

git_codeowners-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl (744.8 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

git_codeowners-1.1.0-cp311-none-win_amd64.whl (1.2 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

git_codeowners-1.1.0-cp311-none-win32.whl (1.2 MB view hashes)

Uploaded CPython 3.11 Windows x86

git_codeowners-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-cp311-cp311-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

git_codeowners-1.1.0-cp311-cp311-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

git_codeowners-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (853.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

git_codeowners-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

git_codeowners-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (724.1 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

git_codeowners-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl (744.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

git_codeowners-1.1.0-cp310-none-win_amd64.whl (1.2 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

git_codeowners-1.1.0-cp310-none-win32.whl (1.2 MB view hashes)

Uploaded CPython 3.10 Windows x86

git_codeowners-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-cp310-cp310-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

git_codeowners-1.1.0-cp310-cp310-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

git_codeowners-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (853.0 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

git_codeowners-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

git_codeowners-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (724.1 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

git_codeowners-1.1.0-cp39-none-win_amd64.whl (1.2 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

git_codeowners-1.1.0-cp39-none-win32.whl (1.2 MB view hashes)

Uploaded CPython 3.9 Windows x86

git_codeowners-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-cp39-cp39-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

git_codeowners-1.1.0-cp39-cp39-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

git_codeowners-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (853.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

git_codeowners-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

git_codeowners-1.1.0-cp39-cp39-macosx_11_0_arm64.whl (724.1 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

git_codeowners-1.1.0-cp38-none-win_amd64.whl (1.2 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

git_codeowners-1.1.0-cp38-none-win32.whl (1.2 MB view hashes)

Uploaded CPython 3.8 Windows x86

git_codeowners-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl (844.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

git_codeowners-1.1.0-cp38-cp38-musllinux_1_2_i686.whl (840.3 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

git_codeowners-1.1.0-cp38-cp38-musllinux_1_2_armv7l.whl (784.8 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARMv7l

git_codeowners-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl (824.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

git_codeowners-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

git_codeowners-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (945.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

git_codeowners-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (886.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

git_codeowners-1.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (853.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

git_codeowners-1.1.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (788.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

git_codeowners-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page