diff --git a/README.md b/README.md index 15c54ad..be2b8b6 100644 --- a/README.md +++ b/README.md @@ -92,42 +92,47 @@ git quick-stats Possible arguments in short and long form: ```bash --r, --suggest-reviewers - show the best people to contact to review code --T, --detailed-git-stats - give a detailed list of git stats --R, --git-stats-by-branch - see detailed list of git stats by branch --V, --csv-output-by-branch - output daily stats by branch in CSV format --d, --commits-per-day - displays a list of commits per day --m, --commits-by-month - displays a list of commits per month --w, --commits-by-weekday - displays a list of commits per weekday --o, --commits-by-hour - displays a list of commits per hour --A, --commits-by-author-by-hour - displays a list of commits per hour by author --a, --commits-per-author - displays a list of commits per author --S, --my-daily-stats - see your current daily stats --C, --contributors - see a list of everyone who contributed to the repo --b, --branch-tree - show an ASCII graph of the git repo branch history --D, --branches-by-date - show branches by date --c, --changelogs - see changelogs --L, --changelogs-by-author - see changelogs by author --j, --json-output - save git log as a JSON formatted file to a specified area --h, -?, --help - display this help text in the terminal +GENERATE OPTIONS + -T, --detailed-git-stats + give a detailed list of git stats + -R, --git-stats-by-branch + see detailed list of git stats by branch + -c, --changelogs + see changelogs + -L, --changelogs-by-author + see changelogs by author + -S, --my-daily-stats + see your current daily stats + -V, --csv-output-by-branch + output daily stats by branch in CSV format + -j, --json-output + save git log as a JSON formatted file to a specified area + +LIST OPTIONS + -b, --branch-tree + show an ASCII graph of the git repo branch history + -D, --branches-by-date + show branches by date + -C, --contributors + see a list of everyone who contributed to the repo + -a, --commits-per-author + displays a list of commits per author + -d, --commits-per-day + displays a list of commits per day + -m, --commits-by-month + displays a list of commits per month + -w, --commits-by-weekday + displays a list of commits per weekday + -o, --commits-by-hour + displays a list of commits per hour + -A, --commits-by-author-by-hour + displays a list of commits per hour by author + +SUGGEST OPTIONS + -r, --suggest-reviewers + show the best people to contact to review code + -h, -?, --help + display this help text in the terminal ``` ### Git log since and until diff --git a/git-quick-stats b/git-quick-stats index 5e79d96..50a5a39 100755 --- a/git-quick-stats +++ b/git-quick-stats @@ -72,12 +72,15 @@ fi # Set the legacy theme by typing "export _MENU_THEME=legacy" _theme="${_MENU_THEME:=default}" +################################################################################ +# HELPER AND MENU FUNCTIONS + ################################################################################ # DESC: Checks to make sure the user has the appropriate utilities installed # ARGS: None # OUTS: None ################################################################################ -checkUtils() { +function checkUtils() { readonly MSG="not found. Please make sure this is installed and in PATH." readonly UTILS="awk basename cat column echo git grep head printf seq sort \ tput tr uniq wc" @@ -88,12 +91,23 @@ checkUtils() { done } +################################################################################ +# DESC: Prints a formatted message of the selected option by the user to stdout +# ARGS: $* (required): String to print (usually provided by other functions) +# OUTS: None +################################################################################ +function optionPicked() { + local msg=${*:-"Error: No message passed"} + + echo -e "${msg}\n" +} + ################################################################################ # DESC: Help information printed to stdout during non-interactive mode # ARGS: None # OUTS: None ################################################################################ -usage() { +function usage() { readonly PROGRAM=$(basename "$0") echo " @@ -111,15 +125,31 @@ DESCRIPTION This program allows you to see detailed information about a git repository. -OPTIONS - -r, --suggest-reviewers - show the best people to contact to review code +GENERATE OPTIONS -T, --detailed-git-stats give a detailed list of git stats -R, --git-stats-by-branch see detailed list of git stats by branch + -c, --changelogs + see changelogs + -L, --changelogs-by-author + see changelogs by author + -S, --my-daily-stats + see your current daily stats -V, --csv-output-by-branch output daily stats by branch in CSV format + -j, --json-output + save git log as a JSON formatted file to a specified area + +LIST OPTIONS + -b, --branch-tree + show an ASCII graph of the git repo branch history + -D, --branches-by-date + show branches by date + -C, --contributors + see a list of everyone who contributed to the repo + -a, --commits-per-author + displays a list of commits per author -d, --commits-per-day displays a list of commits per day -m, --commits-by-month @@ -130,22 +160,10 @@ OPTIONS displays a list of commits per hour -A, --commits-by-author-by-hour displays a list of commits per hour by author - -a, --commits-per-author - displays a list of commits per author - -S, --my-daily-stats - see your current daily stats - -C, --contributors - see a list of everyone who contributed to the repo - -b, --branch-tree - show an ASCII graph of the git repo branch history - -D, --branches-by-date - show branches by date - -c, --changelogs - see changelogs - -L, --changelogs-by-author - see changelogs by author - -j, --json-output - save git log as a JSON formatted file to a specified area + +SUGGEST OPTIONS + -r, --suggest-reviewers + show the best people to contact to review code -h, -?, --help display this help text in the terminal @@ -173,7 +191,7 @@ ADDITIONAL USAGE # ARGS: None # OUTS: $opt: Option selected by the user based on menu choice ################################################################################ -showMenu() { +function showMenu() { # These are "global" and can be overriden from users if so desired NORMAL=$(tput sgr0) CYAN=$(tput setaf 6) @@ -228,112 +246,7 @@ showMenu() { } ################################################################################ -# DESC: Prints a formatted message of the selected option by the user to stdout -# ARGS: $* (required): String to print (usually provided by other functions) -# OUTS: None -################################################################################ -function optionPicked() { - local msg=${*:-"Error: No message passed"} - - echo -e "${msg}\n" -} - -################################################################################ -# DESC: Shows detailed contribution stats per author by parsing every commit in -# the repo and outputting their contribution stats -# ARGS: $branch (optional): Users can specify an alternative branch instead of -# the current default one -# OUTS: None -################################################################################ -function csvOutput() { - # TODO: Look into if we can refactor this to work as an option for the user - # so they can choose between JSON or CSV or possibly other formats - # like XML, YAML, and so on. - # TODO: Look into allowing the user to adjust the separator value - local is_branch_existing=false - local branch="${1:-}" - local _branch="" - - # Check if requesting for a specific branch - if [[ -n "${branch}" ]]; then - # Check if branch exist - if [[ $(git show-ref refs/heads/"${branch}") ]] ; then - is_branch_existing=true - _branch="${branch}" - else - is_branch_existing=false - _branch="" - fi - fi - - printf "author,insertions,insertions_per,deletions,deletions_per,files," - printf "files_per,commits,commits_per,lines_changed,lines_changed_per\n" - git -c log.showSignature=false log ${_branch} --use-mailmap $_merges --numstat \ - --pretty="format:commit %H%nAuthor: %aN <%aE>%nDate: %ad%n%n%w(0,4,4)%B%n" \ - "$_since" "$_until" $_log_options $_pathspec | LC_ALL=C awk ' - function printStats(author) { - printf "%s,", author - if(more["total"] > 0) { - printf "%d,%.0f%%,", more[author], \ - (more[author] / more["total"] * 100) - } - - if(less["total"] > 0) { - printf "%d,%.0f%%,", less[author], \ - (less[author] / less["total"] * 100) - } - - if(file["total"] > 0) { - printf "%d,%.0f%%,", file[author], \ - (file[author] / file["total"] * 100) - } - - if(commits["total"] > 0) { - printf "%d,%.0f%%,", commits[author], \ - (commits[author] / commits["total"] * 100) - } - - if (first[author] != "") { - if ( ((more["total"] + less["total"]) * 100) > 0) { - printf "%d,", more[author] + less[author] - printf "%.0f%%\n", ((more[author] + less[author]) / \ - (more["total"] + less["total"]) * 100) - } - } - } - - /^Author:/ { - $1 = "" - author = $0 - commits[author] += 1 - commits["total"] += 1 - } - - /^Date:/ { - $1=""; - first[author] = substr($0, 2) - if(last[author] == "" ) { last[author] = first[author] } - } - - /^[0-9]/ { - more[author] += $1 - less[author] += $2 - - file[author] += 1 - more["total"] += $1 - less["total"] += $2 - file["total"] += 1 - } - - END { - for (author in commits) { - if (author != "total") { - printStats(author) - } - } - - }' -} +# FUNCTIONS FOR GENERATING STATS ################################################################################ # DESC: Shows detailed contribution stats per author by parsing every commit in @@ -445,21 +358,156 @@ function detailedGitStats() { } ################################################################################ -# DESC: Displays the authors in order of total contribution to the repo +# DESC: Displays the latest commit history in an easy to read format by date +# ARGS: $author (optional): Can focus on a single author. Default is all authors +# OUTS: None +################################################################################ +function changelogs() { + local author="${1:-}" + local _author="" + local next=$(date +%F) + + if [[ -z "${author}" ]]; then + optionPicked "Git changelogs:" + _author="--author=**" + else + optionPicked "Git changelogs for author '${author}':" + _author="--author=${author}" + fi + + git -c log.showSignature=false log \ + --use-mailmap \ + $_merges \ + --format="%cd" \ + --date=short "${_author}" "$_since" "$_until" $_log_options $_pathspec \ + | sort -u -r | head -n $_limit \ + | while read DATE; do + echo -e "\n[$DATE]" + GIT_PAGER=cat git -c log.showSignature=false log \ + --use-mailmap $_merges \ + --format=" * %s (%aN)" "${_author}" \ + --since=$DATE --until=$next + next=$DATE + done +} + +################################################################################ +# DESC: Shows git shortstats on the current user's changes for current day # ARGS: None # OUTS: None ################################################################################ -function suggestReviewers() { - optionPicked "Suggested code reviewers (based on git history):" - git -c log.showSignature=false log --use-mailmap $_merges "$_since" "$_until" \ - --pretty=%aN $_log_options $_pathspec | head -n 100 | sort | uniq -c \ - | sort -nr | LC_ALL=C awk ' +function myDailyStats() { + optionPicked "My daily status:" + git diff --shortstat '@{0 day ago}' | sort -nr | tr ',' '\n' | LC_ALL=C awk ' { args[NR] = $0; } END { for (i = 1; i <= NR; ++i) { - printf "%s\n", args[i] + printf "\t%s\n", args[i] } - }' | column -t -s, + }' + + echo -e "\t" $(git -c log.showSignature=false log --use-mailmap \ + --author="$(git config user.name)" $_merges \ + --since=$(date "+%Y-%m-%dT00:00:00") \ + --until=$(date "+%Y-%m-%dT23:59:59") --reverse $_log_options \ + | grep -E "commit [a-f0-9]{40}" | wc -l) "commits" +} + +################################################################################ +# DESC: Shows detailed contribution stats per author by parsing every commit in +# the repo and outputting their contribution stats +# ARGS: $branch (optional): Users can specify an alternative branch instead of +# the current default one +# OUTS: None +################################################################################ +function csvOutput() { + # TODO: Look into if we can refactor this to work as an option for the user + # so they can choose between JSON or CSV or possibly other formats + # like XML, YAML, and so on. + # TODO: Look into allowing the user to adjust the separator value + local is_branch_existing=false + local branch="${1:-}" + local _branch="" + + # Check if requesting for a specific branch + if [[ -n "${branch}" ]]; then + # Check if branch exist + if [[ $(git show-ref refs/heads/"${branch}") ]] ; then + is_branch_existing=true + _branch="${branch}" + else + is_branch_existing=false + _branch="" + fi + fi + + printf "author,insertions,insertions_per,deletions,deletions_per,files," + printf "files_per,commits,commits_per,lines_changed,lines_changed_per\n" + git -c log.showSignature=false log ${_branch} --use-mailmap $_merges --numstat \ + --pretty="format:commit %H%nAuthor: %aN <%aE>%nDate: %ad%n%n%w(0,4,4)%B%n" \ + "$_since" "$_until" $_log_options $_pathspec | LC_ALL=C awk ' + function printStats(author) { + printf "%s,", author + if(more["total"] > 0) { + printf "%d,%.0f%%,", more[author], \ + (more[author] / more["total"] * 100) + } + + if(less["total"] > 0) { + printf "%d,%.0f%%,", less[author], \ + (less[author] / less["total"] * 100) + } + + if(file["total"] > 0) { + printf "%d,%.0f%%,", file[author], \ + (file[author] / file["total"] * 100) + } + + if(commits["total"] > 0) { + printf "%d,%.0f%%,", commits[author], \ + (commits[author] / commits["total"] * 100) + } + + if (first[author] != "") { + if ( ((more["total"] + less["total"]) * 100) > 0) { + printf "%d,", more[author] + less[author] + printf "%.0f%%\n", ((more[author] + less[author]) / \ + (more["total"] + less["total"]) * 100) + } + } + } + + /^Author:/ { + $1 = "" + author = $0 + commits[author] += 1 + commits["total"] += 1 + } + + /^Date:/ { + $1=""; + first[author] = substr($0, 2) + if(last[author] == "" ) { last[author] = first[author] } + } + + /^[0-9]/ { + more[author] += $1 + less[author] += $2 + + file[author] += 1 + more["total"] += $1 + less["total"] += $2 + file["total"] += 1 + } + + END { + for (author in commits) { + if (author != "total") { + printStats(author) + } + } + + }' } ################################################################################ @@ -479,6 +527,91 @@ function jsonOutput() { > "${json_path}/output.json" } +################################################################################ +# FUNCTIONS FOR LISTING STATS + +################################################################################ +# DESC: Shows an abbreviated ASCII graph based off of commit history +# ARGS: None +# OUTS: None +################################################################################ +function branchTree() { + optionPicked "Branching tree view:" + # TODO: Can we shorten this pretty format line? Quick experiment shows that + # it does not properly respect \ and interprets them literally. + git -c log.showSignature=false log --use-mailmap --graph --abbrev-commit \ + "$_since" "$_until" --decorate \ + --format=format:'--+ Commit: %h %n | Date: %aD (%ar) %n'' | Message: %s %d %n'' + Author: %aN %n' \ + --all $_log_options | head -n $((_limit*5)) +} + +################################################################################ +# DESC: Lists all branches sorted by their most recent commit +# ARGS: None +# OUTS: None +################################################################################ +function branchesByDate() { + optionPicked "All branches (sorted by most recent commit):" + git for-each-ref --sort=committerdate refs/heads/ \ + --format='[%(authordate:relative)] %(authorname) %(refname:short)' | cat -n +} + +################################################################################ +# DESC: Lists all contributors to a repo sorted by alphabetical order +# ARGS: None +# OUTS: None +################################################################################ +function contributors() { + optionPicked "All contributors (sorted by name):" + git -c log.showSignature=false log --use-mailmap $_merges "$_since" "$_until" \ + --format='%aN' $_log_options $_pathspec | sort -u | cat -n +} + +################################################################################ +# DESC: Displays the number of commits and percentage contributed to the repo +# per author and sorts them by contribution percentage +# ARGS: None +# OUTS: None +################################################################################ +function commitsPerAuthor() { + optionPicked "Git commits per author:" + local authorCommits=$(git -c log.showSignature=false log --use-mailmap \ + $_merges "$_since" "$_until" $_log_options \ + | grep -i Author: | cut -c9-) + local coAuthorCommits=$(git -c log.showSignature=false log --use-mailmap \ + $_merges "$_since" "$_until" $_log_options \ + | grep -i Co-Authored-by: | cut -c21-) + + if [[ -z "${coAuthorCommits}" ]]; then + allCommits="${authorCommits}" + else + allCommits="${authorCommits}\n${coAuthorCommits}" + fi + + echo -e "${allCommits}" | awk ' + { $NF=""; author[NR] = $0 } + END { + for(i in author) { + sum[author[i]]++; name[author[i]] = author[i]; total++; + } + for(i in sum) { + printf "\t%d:%s:%2.1f%%\n", sum[i], name[i], (100 * sum[i] / total) + } + }' | sort -n -r | column -t -s: +} + +################################################################################ +# DESC: Shows the number of commits that were committed per date recorded in the +# repo's log history +# ARGS: None +# OUTS: None +################################################################################ +function commitsPerDay() { + optionPicked "Git commits per date:"; + git -c log.showSignature=false log --use-mailmap $_merges "$_since" "$_until" \ + --date=short --format='%ad' $_log_options $_pathspec | sort | uniq -c +} + ################################################################################ # DESC: Displays a horizontal bar graph based on total commits per month # ARGS: None @@ -598,141 +731,24 @@ function commitsByHour() { } ################################################################################ -# DESC: Shows the number of commits that were committed per date recorded in the -# repo's log history +# FUNCTIONS FOR SUGGESTION STATS + +################################################################################ +# DESC: Displays the authors in order of total contribution to the repo # ARGS: None # OUTS: None ################################################################################ -function commitsPerDay() { - optionPicked "Git commits per date:"; +function suggestReviewers() { + optionPicked "Suggested code reviewers (based on git history):" git -c log.showSignature=false log --use-mailmap $_merges "$_since" "$_until" \ - --date=short --format='%ad' $_log_options $_pathspec | sort | uniq -c -} - -################################################################################ -# DESC: Displays the number of commits and percentage contributed to the repo -# per author and sorts them by contribution percentage -# ARGS: None -# OUTS: None -################################################################################ -function commitsPerAuthor() { - optionPicked "Git commits per author:" - local authorCommits=$(git -c log.showSignature=false log --use-mailmap \ - $_merges "$_since" "$_until" $_log_options \ - | grep -i Author: | cut -c9-) - local coAuthorCommits=$(git -c log.showSignature=false log --use-mailmap \ - $_merges "$_since" "$_until" $_log_options \ - | grep -i Co-Authored-by: | cut -c21-) - - if [[ -z "${coAuthorCommits}" ]]; then - allCommits="${authorCommits}" - else - allCommits="${authorCommits}\n${coAuthorCommits}" - fi - - echo -e "${allCommits}" | awk ' - { $NF=""; author[NR] = $0 } - END { - for(i in author) { - sum[author[i]]++; name[author[i]] = author[i]; total++; - } - for(i in sum) { - printf "\t%d:%s:%2.1f%%\n", sum[i], name[i], (100 * sum[i] / total) - } - }' | sort -n -r | column -t -s: -} - -################################################################################ -# DESC: Shows git shortstats on the current user's changes for current day -# ARGS: None -# OUTS: None -################################################################################ -function myDailyStats() { - optionPicked "My daily status:" - git diff --shortstat '@{0 day ago}' | sort -nr | tr ',' '\n' | LC_ALL=C awk ' + --pretty=%aN $_log_options $_pathspec | head -n 100 | sort | uniq -c \ + | sort -nr | LC_ALL=C awk ' { args[NR] = $0; } END { for (i = 1; i <= NR; ++i) { - printf "\t%s\n", args[i] + printf "%s\n", args[i] } - }' - - echo -e "\t" $(git -c log.showSignature=false log --use-mailmap \ - --author="$(git config user.name)" $_merges \ - --since=$(date "+%Y-%m-%dT00:00:00") \ - --until=$(date "+%Y-%m-%dT23:59:59") --reverse $_log_options \ - | grep -E "commit [a-f0-9]{40}" | wc -l) "commits" -} - -################################################################################ -# DESC: Lists all contributors to a repo sorted by alphabetical order -# ARGS: None -# OUTS: None -################################################################################ -function contributors() { - optionPicked "All contributors (sorted by name):" - git -c log.showSignature=false log --use-mailmap $_merges "$_since" "$_until" \ - --format='%aN' $_log_options $_pathspec | sort -u | cat -n -} - -################################################################################ -# DESC: Shows an abbreviated ASCII graph based off of commit history -# ARGS: None -# OUTS: None -################################################################################ -function branchTree() { - optionPicked "Branching tree view:" - # TODO: Can we shorten this pretty format line? Quick experiment shows that - # it does not properly respect \ and interprets them literally. - git -c log.showSignature=false log --use-mailmap --graph --abbrev-commit \ - "$_since" "$_until" --decorate \ - --format=format:'--+ Commit: %h %n | Date: %aD (%ar) %n'' | Message: %s %d %n'' + Author: %aN %n' \ - --all $_log_options | head -n $((_limit*5)) -} - -################################################################################ -# DESC: Lists all branches sorted by their most recent commit -# ARGS: None -# OUTS: None -################################################################################ -function branchesByDate() { - optionPicked "All branches (sorted by most recent commit):" - git for-each-ref --sort=committerdate refs/heads/ \ - --format='[%(authordate:relative)] %(authorname) %(refname:short)' | cat -n -} - -################################################################################ -# DESC: Displays the latest commit history in an easy to read format by date -# ARGS: $author (optional): Can focus on a single author. Default is all authors -# OUTS: None -################################################################################ -function changelogs() { - local author="${1:-}" - local _author="" - local next=$(date +%F) - - if [[ -z "${author}" ]]; then - optionPicked "Git changelogs:" - _author="--author=**" - else - optionPicked "Git changelogs for author '${author}':" - _author="--author=${author}" - fi - - git -c log.showSignature=false log \ - --use-mailmap \ - $_merges \ - --format="%cd" \ - --date=short "${_author}" "$_since" "$_until" $_log_options $_pathspec \ - | sort -u -r | head -n $_limit \ - | while read DATE; do - echo -e "\n[$DATE]" - GIT_PAGER=cat git -c log.showSignature=false log \ - --use-mailmap $_merges \ - --format=" * %s (%aN)" "${_author}" \ - --since=$DATE --until=$next - next=$DATE - done + }' | column -t -s, } ################################################################################ diff --git a/git-quick-stats.1 b/git-quick-stats.1 index a39cb6c..602a660 100644 --- a/git-quick-stats.1 +++ b/git-quick-stats.1 @@ -1,4 +1,4 @@ -.TH git-quick-stats "1" "January 2020" "git-quick-stats" "User Commands" +.TH git-quick-stats "1" "June 2021" "git-quick-stats" "User Commands" .SH NAME .B git\-quick\-stats \- Simple and efficient way to access various stats in a git repository. @@ -17,12 +17,7 @@ and files. Extracting this information is not always trivial, mostly because of a gadzillion options to a gadzillion git commands. This program allows you to see detailed information about a git repository. .PP -.SH OPTIONS -.HP -\fB\-r\fR, \fB\-\-suggest\-reviewers\fR -.IP -show the best people to contact to review code -.HP +.SH GENERATE OPTIONS .PP \fB\-T\fR, \fB\-\-detailed\-git\-stats\fR .IP @@ -34,11 +29,52 @@ give a detailed list of git stats see detailed list of git stats by branch .HP .PP +\fB\-c\fR, \fB\-\-changelogs\fR +.IP +see changelogs +.HP +.PP +\fB\-L\fR, \fB\-\-changelogs\-by\-author\fR +.IP +see changelogs by author +.HP +.PP +\fB\-S\fR, \fB\-\-my\-daily\-stats\fR +.IP +see your current daily stats +.HP +.PP \fB\-V\fR, \fB\-\-csv\-output\-by\-branch\fR .IP output daily stats by branch in CSV format .HP .PP +\fB\-j\fR, \fB\-\-json\-output\fR +.IP +save git log as a JSON formatted file to a specified area +.HP +.SH LIST OPTIONS +.PP +\fB\-b\fR, \fB\-\-branch\-tree\fR +.IP +show an ASCII graph of the git repo branch history +.HP +.PP +\fB\-D\fR, \fB\-\-branches\-by\-date\fR +.IP +show branches by date +.HP +.PP +\fB\-C\fR, \fB\-\-contributors\fR +.IP +see a list of everyone who contributed to the repo +.HP +.PP +\fB\-a\fR, \fB\-\-commits\-per\-author\fR +.IP +displays a list of commits per author +.HP +.PP \fB\-d\fR, \fB\-\-commits\-per\-day\fR .IP displays a list of commits per day @@ -63,45 +99,11 @@ displays a list of commits per hour .IP displays a list of commits per hour by author .HP +.SH SUGGEST OPTIONS .PP -\fB\-a\fR, \fB\-\-commits\-per\-author\fR +\fB\-r\fR, \fB\-\-suggest\-reviewers\fR .IP -displays a list of commits per author -.HP -.PP -\fB\-S\fR, \fB\-\-my\-daily\-stats\fR -.IP -see your current daily stats -.HP -.PP -\fB\-C\fR, \fB\-\-contributors\fR -.IP -see a list of everyone who contributed to the repo -.HP -.PP -\fB\-b\fR, \fB\-\-branch\-tree\fR -.IP -show an ASCII graph of the git repo branch history -.HP -.PP -\fB\-D\fR, \fB\-\-branches\-by\-date\fR -.IP -show branches by date -.HP -.PP -\fB\-c\fR, \fB\-\-changelogs\fR -.IP -see changelogs -.HP -.PP -\fB\-L\fR, \fB\-\-changelogs\-by\-author\fR -.IP -see changelogs by author -.HP -.PP -\fB\-j\fR, \fB\-\-json\-output\fR -.IP -save git log as a JSON formatted file to a specified area +show the best people to contact to review code .HP .PP \fB\-h\fR, \-?, \fB\-\-help\fR @@ -142,4 +144,3 @@ You can set _GIT_BRANCH to set the branch of the stats, example: .B export _GIT_BRANCH="master" . .fi - diff --git a/tests/commands_test.sh b/tests/commands_test.sh index 74c3adc..96c9488 100755 --- a/tests/commands_test.sh +++ b/tests/commands_test.sh @@ -19,15 +19,31 @@ DESCRIPTION This program allows you to see detailed information about a git repository. -OPTIONS - -r, --suggest-reviewers - show the best people to contact to review code +GENERATE OPTIONS -T, --detailed-git-stats give a detailed list of git stats -R, --git-stats-by-branch see detailed list of git stats by branch + -c, --changelogs + see changelogs + -L, --changelogs-by-author + see changelogs by author + -S, --my-daily-stats + see your current daily stats -V, --csv-output-by-branch output daily stats by branch in CSV format + -j, --json-output + save git log as a JSON formatted file to a specified area + +LIST OPTIONS + -b, --branch-tree + show an ASCII graph of the git repo branch history + -D, --branches-by-date + show branches by date + -C, --contributors + see a list of everyone who contributed to the repo + -a, --commits-per-author + displays a list of commits per author -d, --commits-per-day displays a list of commits per day -m, --commits-by-month @@ -38,22 +54,10 @@ OPTIONS displays a list of commits per hour -A, --commits-by-author-by-hour displays a list of commits per hour by author - -a, --commits-per-author - displays a list of commits per author - -S, --my-daily-stats - see your current daily stats - -C, --contributors - see a list of everyone who contributed to the repo - -b, --branch-tree - show an ASCII graph of the git repo branch history - -D, --branches-by-date - show branches by date - -c, --changelogs - see changelogs - -L, --changelogs-by-author - see changelogs by author - -j, --json-output - save git log as a JSON formatted file to a specified area + +SUGGEST OPTIONS + -r, --suggest-reviewers + show the best people to contact to review code -h, -?, --help display this help text in the terminal