#git-repository #codeowners #owner #file #validation #subcommand #query

app git-owners

A git subcommand to query and validate CODEOWNERS

5 stable releases

1.1.2 Oct 6, 2024
1.0.2 Oct 5, 2024
1.0.1 Oct 28, 2022
1.0.0 May 23, 2022

#609 in Filesystem

Download history 189/week @ 2024-08-03 260/week @ 2024-08-10 246/week @ 2024-08-17 217/week @ 2024-08-24 194/week @ 2024-08-31 304/week @ 2024-09-07 310/week @ 2024-09-14 255/week @ 2024-09-21 309/week @ 2024-09-28 723/week @ 2024-10-05 357/week @ 2024-10-12 156/week @ 2024-10-19 56/week @ 2024-10-26 10/week @ 2024-11-02 56/week @ 2024-11-16

150 downloads per month

MIT license

14KB
164 lines

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/path
    
  • Show owners for a list of files

    git codeowners some/path some/other/path
    

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 (CODEOWNERS, docs/CODEOWNERS, or .github/CODEOWNERS)
  • Works well as a pre-commit hook. Returns a non-zero exit code if unowned files are found
  • Is composable & scripting friendly
  • Is fast & written in Rust

Issues & Contributing

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

Dependencies

~14–24MB
~369K SLoC