Skip to main content

A simple utility to generate a report about the owners of files inside a git repo

Project description

git-owners

A simple utility to pretty print the list of files in a git repo and their owners.
https://pypi.org/project/git-owners/

PyPI version

Installation

python3 -m pip install git-owners

Usage

usage: git-owners [-h] 
    [-p PATH] 
    [-d DEPTH] 
    [-f {file,dir,mixed}] 
    [--as-list] [-s SINCE] 
    [--include-extensions INCLUDE_EXTENSIONS] 
    [--exclude-extensions EXCLUDE_EXTENSIONS] 
    [-o OUTPUT] 
    [--verbose] 
    repo

Print author owners statistics for a given git repo

positional arguments:
  repo                  Repository root

optional arguments:
  -h, --help            show this help message and exit
  -p PATH, --path PATH  Directory to process (Relative to repository root)
  -d DEPTH, --depth DEPTH
                        Maximum level of directory leaves to print out in the final tree (-1 to print all leaves)
  -f {file,dir,mixed}, --filter {file,dir,mixed}
                        Filter the output based on the value given. file: output files only (--as-list will be used in this case), dir: output directories only, mixed: output files and directories (default).
  --as-list             Print results as a list instead of a tree. If --filter is not specified, mixed will be used.
  -s SINCE, --since SINCE
                        Specifies the date range limit to use when executing git blame. date format is the same as used for git blame --since
  --include-extensions INCLUDE_EXTENSIONS
                        Comma separated extensions (ie. .py, .kt, .java). Specifies which file extensions to include while parsing the repository
  --exclude-extensions EXCLUDE_EXTENSIONS
                        Like for --include-extensions, but this will exclude the specified extensions. If specified, --include-extensions will be ignored
  -o OUTPUT, --output OUTPUT
                        Save Report to file instead of printing to stdout
  --verbose             Turn on logging
 

Example

Tree output

Consider the following input command:

git-owners --include-extensions=.gradle,.java,.kt,.xml --output ~/Desktop/test-report.txt ~/Documents/git/sephiroth74/AndroidUIGestureRecognizer

Will generate the file test-report.txt with this content:

 Final Report for `~/Documents/git/sephiroth74/AndroidUIGestureRecognizer`

 Command line: `/usr/local/bin/git-owners --include-extensions=.gradle,.java,.kt --path uigesturerecognizer/src --output ~/Desktop/test-report.txt ~/Documents/git/sephiroth74/AndroidUIGestureRecognizer`


 Directory Structure Statistics:
 Directory/File                                                               Percent    Owner                            Lines    Total Lines    
 ---------------------------------------------------------------------------  ---------  -------------------------------  -------  -------------  
 src                                                                          93.9%      alessandro.crugnola@gmail.com    6410     6829           
 ├── androidTest                                                              100.0%     alessandro.crugnola@gmail.com    2753     2753           
 │   └── java                                                                 100.0%     alessandro.crugnola@gmail.com    2753     2753           
 │       └── it                                                               100.0%     alessandro.crugnola@gmail.com    2753     2753           
 │           └── sephiroth                                                    100.0%     alessandro.crugnola@gmail.com    2753     2753           
 │               └── android                                                  100.0%     alessandro.crugnola@gmail.com    2753     2753           
 │                   └── library                                              100.0%     alessandro.crugnola@gmail.com    2753     2753           
 │                       └── uigestures                                       100.0%     alessandro.crugnola@gmail.com    2753     2753           
 │                           ├── Interaction.kt                               100.0%     alessandro.crugnola@gmail.com    450      450            
 │                           ├── TestActivity.kt                              100.0%     alessandro.crugnola@gmail.com    78       78             
 │                           ├── TestBaseClass.kt                             100.0%     alessandro.crugnola@gmail.com    88       88             
 │                           ├── TestLongPressGesture.kt                      100.0%     alessandro.crugnola@gmail.com    430      430            
 │                           ├── TestPanGesture.kt                            100.0%     alessandro.crugnola@gmail.com    330      330            
 │                           ├── TestPinchGesture.kt                          100.0%     alessandro.crugnola@gmail.com    130      130            
 │                           ├── TestRotateGesture.kt                         100.0%     alessandro.crugnola@gmail.com    61       61             
 │                           ├── TestScreenEdgeGesture.kt                     100.0%     alessandro.crugnola@gmail.com    233      233            
 │                           ├── TestSwipeGesture.kt                          100.0%     alessandro.crugnola@gmail.com    223      223            
 │                           └── TestTapGesture.kt                            100.0%     alessandro.crugnola@gmail.com    730      730            
 ├── main                                                                     89.0%      alessandro.crugnola@gmail.com    3400     3819           
 │   └── java                                                                 89.0%      alessandro.crugnola@gmail.com    3400     3819           
 │       └── it                                                               89.0%      alessandro.crugnola@gmail.com    3400     3819           
 │           └── sephiroth                                                    89.0%      alessandro.crugnola@gmail.com    3400     3819           
 │               └── android                                                  89.0%      alessandro.crugnola@gmail.com    3400     3819           
 │                   └── library                                              89.0%      alessandro.crugnola@gmail.com    3400     3819           
 │                       └── uigestures                                       89.0%      alessandro.crugnola@gmail.com    3400     3819           
 │                           ├── Geometry.kt                                  100.0%     alessandro.crugnola@gmail.com    21       21             
 │                           ├── OnGestureRecognizerStateChangeListener.kt    100.0%     alessandro.crugnola@gmail.com    8        8              
 │                           ├── ScaleGestureDetector.kt                      63.1%      alessandro.crugnola@gmail.com    345      547            
 │                           ├── UIContinuousRecognizer.kt                    94.7%      alessandro.crugnola@gmail.com    18       19             
 │                           ├── UIDiscreteGestureRecognizer.kt               94.1%      alessandro.crugnola@gmail.com    16       17             
 │                           ├── UIGestureRecognizer.kt                       91.5%      alessandro.crugnola@gmail.com    346      378            
 │                           ├── UIGestureRecognizerDelegate.kt               71.9%      alessandro.crugnola@gmail.com    97       135            
 │                           ├── UILongPressGestureRecognizer.kt              97.1%      alessandro.crugnola@gmail.com    437      450            
 │                           ├── UIPanGestureRecognizer.kt                    89.8%      alessandro.crugnola@gmail.com    360      401            
 │                           ├── UIPinchGestureRecognizer.kt                  92.1%      alessandro.crugnola@gmail.com    234      254            
 │                           ├── UIRectEdge.kt                                100.0%     alessandro.crugnola@gmail.com    5        5              
 │                           ├── UIRotateGestureRecognizer.kt                 93.7%      alessandro.crugnola@gmail.com    328      350            
 │                           ├── UIScreenEdgePanGestureRecognizer.kt          93.3%      alessandro.crugnola@gmail.com    393      421            
 │                           ├── UISwipeGestureRecognizer.kt                  97.6%      alessandro.crugnola@gmail.com    439      450            
 │                           ├── UITapGestureRecognizer.kt                    97.2%      alessandro.crugnola@gmail.com    342      352            
 │                           └── View.kt                                      100.0%     alessandro.crugnola@gmail.com    11       11             
 └── test                                                                     100.0%     alessandro.crugnola@gmail.com    257      257            
     └── java                                                                 100.0%     alessandro.crugnola@gmail.com    257      257            
         └── it                                                               100.0%     alessandro.crugnola@gmail.com    257      257            
             └── sephiroth                                                    100.0%     alessandro.crugnola@gmail.com    257      257            
                 └── android                                                  100.0%     alessandro.crugnola@gmail.com    257      257            
                     └── library                                              100.0%     alessandro.crugnola@gmail.com    257      257            
                         └── uigestures                                       100.0%     alessandro.crugnola@gmail.com    257      257            
                             ├── TestBase.kt                                  100.0%     alessandro.crugnola@gmail.com    35       35             
                             ├── TestGeometry.kt                              100.0%     alessandro.crugnola@gmail.com    69       69             
                             ├── TestUIGestureRecognizerDelegate.kt           100.0%     alessandro.crugnola@gmail.com    81       81             
                             └── TestUITapGestureRecognizer.kt                100.0%     alessandro.crugnola@gmail.com    72       72             


 Accumulated Statistics:
 Percent    Author                           Lines    Total Lines
 ---------  -----------------------------  -------  -------------
 93.9%      alessandro.crugnola@gmail.com     6410           6829
 6.1%       crugnola@adobe.com                 419           6829

List output

Report can be printed as simple list

`git-owners --include-extensions=.gradle,.java,.kt --filter=file --output ~/Desktop/test-report.txt ~/Documents/git/sephiroth74/AndroidUIGestureRecognizer

Final Report for `~/Documents/git/sephiroth74/AndroidUIGestureRecognizer`

Command line: `/usr/local/bin/git-owners --include-extensions=.gradle,.java,.kt --filter=file --output /Users/alessandro/Desktop/test-report.txt ~/Documents/git/sephiroth74/AndroidUIGestureRecognizer`


Directory Structure Statistics:
Directory/File                                                                                                          Perc      Owner                            Lines    Total Lines    
----------------------------------------------------------------------------------------------------------------------  --------  -------------------------------  -------  -------------  
app/build.gradle                                                                                                        50.9%     alessandro.crugnola@gmail.com    29       57             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/BaseTest.java                                            77.3%     crugnola@adobe.com               75       97             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/MainActivity.kt                                          100.0%    alessandro.crugnola@gmail.com    146      146            
app/src/main/java/it/sephiroth/android/library/uigestures/demo/MainApplication.java                                     86.7%     alessandro.crugnola@gmail.com    13       15             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/MotionView.kt                                            100.0%    alessandro.crugnola@gmail.com    183      183            
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/IRecognizerFragment.kt                         100.0%    alessandro.crugnola@gmail.com    23       23             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/UILongPressGestureRecognizerFragment.kt        100.0%    alessandro.crugnola@gmail.com    60       60             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/UIPanGestureRecognizerFragment.kt              100.0%    alessandro.crugnola@gmail.com    55       55             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/UIPinchGestureRecognizerFragment.kt            100.0%    alessandro.crugnola@gmail.com    41       41             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/UIRotateGestureRecognizerFragment.kt           100.0%    alessandro.crugnola@gmail.com    54       54             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/UIScreenEdgePanGestureRecognizerFragment.kt    100.0%    alessandro.crugnola@gmail.com    64       64             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/UISwipeGestureRecognizerFragment.kt            100.0%    alessandro.crugnola@gmail.com    68       68             
app/src/main/java/it/sephiroth/android/library/uigestures/demo/fragments/UITapGestureRecognizerFragment.kt              100.0%    alessandro.crugnola@gmail.com    51       51             
build.gradle                                                                                                            59.0%     crugnola@adobe.com               23       39             
settings.gradle                                                                                                         100.0%    alessandro.crugnola@gmail.com    2        2              
uigesturerecognizer/build.gradle                                                                                        75.7%     alessandro.crugnola@gmail.com    178      235            
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/Interaction.kt                         100.0%    alessandro.crugnola@gmail.com    450      450            
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestActivity.kt                        100.0%    alessandro.crugnola@gmail.com    78       78             
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestBaseClass.kt                       100.0%    alessandro.crugnola@gmail.com    88       88             
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestLongPressGesture.kt                100.0%    alessandro.crugnola@gmail.com    430      430            
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestPanGesture.kt                      100.0%    alessandro.crugnola@gmail.com    330      330            
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestPinchGesture.kt                    100.0%    alessandro.crugnola@gmail.com    130      130            
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestRotateGesture.kt                   100.0%    alessandro.crugnola@gmail.com    61       61             
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestScreenEdgeGesture.kt               100.0%    alessandro.crugnola@gmail.com    233      233            
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestSwipeGesture.kt                    100.0%    alessandro.crugnola@gmail.com    223      223            
uigesturerecognizer/src/androidTest/java/it/sephiroth/android/library/uigestures/TestTapGesture.kt                      100.0%    alessandro.crugnola@gmail.com    730      730            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/Geometry.kt                                   100.0%    alessandro.crugnola@gmail.com    21       21             
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/OnGestureRecognizerStateChangeListener.kt     100.0%    alessandro.crugnola@gmail.com    8        8              
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/ScaleGestureDetector.kt                       63.1%     alessandro.crugnola@gmail.com    345      547            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIContinuousRecognizer.kt                     94.7%     alessandro.crugnola@gmail.com    18       19             
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIDiscreteGestureRecognizer.kt                94.1%     alessandro.crugnola@gmail.com    16       17             
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIGestureRecognizer.kt                        91.5%     alessandro.crugnola@gmail.com    346      378            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIGestureRecognizerDelegate.kt                71.9%     alessandro.crugnola@gmail.com    97       135            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UILongPressGestureRecognizer.kt               97.1%     alessandro.crugnola@gmail.com    437      450            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIPanGestureRecognizer.kt                     89.8%     alessandro.crugnola@gmail.com    360      401            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIPinchGestureRecognizer.kt                   92.1%     alessandro.crugnola@gmail.com    234      254            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIRectEdge.kt                                 100.0%    alessandro.crugnola@gmail.com    5        5              
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIRotateGestureRecognizer.kt                  93.7%     alessandro.crugnola@gmail.com    328      350            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UIScreenEdgePanGestureRecognizer.kt           93.3%     alessandro.crugnola@gmail.com    393      421            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UISwipeGestureRecognizer.kt                   97.6%     alessandro.crugnola@gmail.com    439      450            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/UITapGestureRecognizer.kt                     97.2%     alessandro.crugnola@gmail.com    342      352            
uigesturerecognizer/src/main/java/it/sephiroth/android/library/uigestures/View.kt                                       100.0%    alessandro.crugnola@gmail.com    11       11             
uigesturerecognizer/src/test/java/it/sephiroth/android/library/uigestures/TestBase.kt                                   100.0%    alessandro.crugnola@gmail.com    35       35             
uigesturerecognizer/src/test/java/it/sephiroth/android/library/uigestures/TestGeometry.kt                               100.0%    alessandro.crugnola@gmail.com    69       69             
uigesturerecognizer/src/test/java/it/sephiroth/android/library/uigestures/TestUIGestureRecognizerDelegate.kt            100.0%    alessandro.crugnola@gmail.com    81       81             
uigesturerecognizer/src/test/java/it/sephiroth/android/library/uigestures/TestUITapGestureRecognizer.kt                 100.0%    alessandro.crugnola@gmail.com    72       72             


Accumulated Statistics:
Percent    Author                           Lines    Total Lines
---------  -----------------------------  -------  -------------
92.5%      alessandro.crugnola@gmail.com     7414           8019
7.5%       crugnola@adobe.com                 604           8019
0.0%       not.committed.yet                    1           8019

License

See the MIT License

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-owners-0.0.4.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

git_owners-0.0.4-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file git-owners-0.0.4.tar.gz.

File metadata

  • Download URL: git-owners-0.0.4.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for git-owners-0.0.4.tar.gz
Algorithm Hash digest
SHA256 16741223e184005ed03d2f084143fbe668d8cde89284d9b6e0f7764de97a4507
MD5 4a56b931d9427f691624f76a32420264
BLAKE2b-256 4730d79b83610419d54fa163f691a5b8fc03d977990c6c4f622f5d9462c38d40

See more details on using hashes here.

File details

Details for the file git_owners-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: git_owners-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for git_owners-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d7a061c4f6c48f1125ae97d3b050637517297cd090a9010ad175798a4203226e
MD5 a2a3ce697519aff46e4c8a63c93894a7
BLAKE2b-256 8bc2e89746312c9378d31cd481070a6625b03c6e32e96ae4704811ac21c845a0

See more details on using hashes here.

Supported by

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