#!/usr/bin/env bash # # @license Apache-2.0 # # Copyright (c) 2017 The Stdlib Authors. # # Licensed 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. # # Prints the number of lines per author. # # # # Notes: # # - Beware that this script can take awhile to run. # * `git ls-files` # - List indexed files. # * `xargs -n1 git blame` # - For each file, determine who last modified each line of the file. # * `grep` # - Extract the line containing the author name. # * `sed` # - Remove the 'author ' prefix. # * `sort` # - Sort the author names in lexicographic order. # * `uniq -c` # - Count the number of repeats and remove repeated names. # * `sort -nr` # - Sort the counts in reverse numerical order. # * `awk '{}'` # - Format the output. git ls-files | xargs -n1 git blame --line-porcelain | grep 'author ' | sed -n 's/^author //p' | sort | uniq -c | sort -nr | awk '{print $2 OFS $3 OFS $1'