Compare commits

...

31 Commits
2.0.3 ... 2.0.7

Author SHA1 Message Date
Tom Ice
81fce5cadf Updating README.md to reflect new theme(s) 2019-05-13 10:35:59 -04:00
Tom Ice
f3931eb1a3 Merge pull request #65 from Calinou/improve-interactive-menu
Improve the interactive menu
2019-05-13 10:31:03 -04:00
Tom Ice
bdfe3beb25 New default theme with toggle-able legacy theme
* This sets the newly proposed theme as the main theme. In order to
  switch back to the legacy theme, set _MENU_THEME to legacy.
  This feature is currently an experimental feature and may change
  in the future.

* Fixes documentation and updates test to reflect newly changed theme.
2019-05-12 19:32:11 -04:00
Tom Ice
90d118f09f Fixing some menu color issues 2019-05-10 22:55:42 -04:00
Tom Ice
d12c1c6c4f Added color scheme toggle-ability and updated docs
* You can now switch between the default theme and an alternative theme
  for those who would like a different look to the interactive menu.
  In order to set this, simply do export _MENU_THEME=alternative. Anything
  that isn't "alternative" will simply fall back to the default menu option.

* Fixed merge conflicts based on the latest master branch which added the
  contribution stats by branch option.

* Fixed tests, updated docs, and all that fun stuff.
2019-05-10 16:17:42 -04:00
Tom Ice
1282e4b46f Updating README.md 2019-05-10 13:18:12 -04:00
Tom Ice
96de74cf4f Merge pull request #67 from joshuadeguzman/feature-request/contribution-stats-by-branch
Add non-interactive detailed git stats for a specific branch
2019-05-10 12:48:55 -04:00
Joshua de Guzman
096fd86324 Add new feature in man page 2019-05-10 23:59:12 +08:00
Joshua de Guzman
dd6a23568e Add new feature in README 2019-05-10 23:50:32 +08:00
jdeguzman
48c062f8fa Prevent logging refs when checking branch existence 2019-05-10 18:57:04 +08:00
jdeguzman
c3194f77e3 Add interactive menu for the detailed stats by branch 2019-05-10 18:08:38 +08:00
jdeguzman
52f4eff27c Add on the current branch 2019-05-10 18:00:25 +08:00
jdeguzman
c7d456465e Optimize branch existence validator 2019-05-10 11:00:38 +08:00
Joshua de Guzman
e9f085f20e Add git stats by branch to the options and update unit test 2019-05-10 01:08:53 +08:00
Joshua de Guzman
625ec404bc Update validation rules 2019-05-10 00:24:16 +08:00
jdeguzman
e6ffee5850 Add branch existence validation 2019-05-09 20:17:57 +08:00
jdeguzman
2422a010c6 Add non interactive request for detailed stats by branch 2019-05-09 19:41:47 +08:00
Hugo Locurcio
749367701d Improve the interactive menu
This adds a `>` at the end of the message to denote the program
is waiting for user input.

This also tweaks colors for better readability.
2019-04-11 14:40:16 +02:00
Lukáš Mešťan
3d86fa9664 Merge pull request #64 from opencollective/opencollective
Activating Open Collective
2019-03-05 07:44:32 +01:00
Jess
a6a65faa8d Added backers and sponsors on the README 2019-03-02 10:12:36 -08:00
Lukáš Mešťan
0cc67fd4ac Merge pull request #63 from laurence6/master
Fix some items are not displayed
2019-02-19 19:13:22 +01:00
Laurence
3344a05237 Fix some items are not displayed 2019-02-18 19:58:26 -05:00
Lukáš Mešťan
da78123ca8 Update README.md 2019-02-07 21:27:25 +01:00
Lukáš Mešťan
ad50a915b0 Merge pull request #60 from loonies/makefile
Makefile improvements
2019-02-04 14:05:28 +01:00
Miodrag Tokić
88f970632f Add man page to reinstall target
Update man page on reinstall as well. Also remove unnecessary uninstall
as the "install" command handles this gracefully.
2019-02-04 12:42:21 +01:00
Miodrag Tokić
7f3220abb7 Remove unnecessary Git alias
Git is able to find binary by the prefixed "git" name.
2019-02-04 12:41:22 +01:00
Miodrag Tokić
7a9e9c7f85 Improve man install / uninstall
- Create man directory prior to installing the page
 - Do not force root ownership of the man page
 - Remove man page when uninstalling
2019-02-03 18:10:06 +01:00
Miodrag Tokić
190ae631e5 Straightforward binary removal
Remove binary using the full path instead of jumping to directory.
2019-02-03 18:06:31 +01:00
Miodrag Tokić
94ea505dbd Replace "mkdir" with "install"
Favour "install" over "mkdir" in installation scripts.
2019-02-03 18:04:13 +01:00
Miodrag Tokić
601986fbe1 Remove EXEC_FILES
Variable doesn't make much sense and makes the code more convoluted.
2019-02-03 17:57:28 +01:00
Miodrag Tokić
01f60821ea Help formatting 2019-02-03 17:44:18 +01:00
5 changed files with 237 additions and 134 deletions

View File

@@ -1,42 +1,39 @@
PREFIX ?= /usr/local
TASK_DONE = echo -e "\n✓ $@ done\n"
# files that need mode 755
EXEC_FILES=git-quick-stats
.PHONY: test
all:
@echo "usage: make install"
@echo " make reinstall"
@echo " make uninstall"
@echo " make test"
@echo "Usage:"
@echo " make install"
@echo " make reinstall"
@echo " make uninstall"
@echo " make test"
help:
$(MAKE) all
@$(TASK_DONE)
install:
mkdir -p $(PREFIX)/bin
install -m 0755 $(EXEC_FILES) $(PREFIX)/bin/$(EXEC_FILES)
git config --global alias.quick-stats '! $(PREFIX)/bin/$(EXEC_FILES)'
install -d -m 0755 $(PREFIX)/bin
install -m 0755 git-quick-stats $(PREFIX)/bin/git-quick-stats
$(MAKE) man
@$(TASK_DONE)
uninstall:
test -d $(PREFIX)/bin && \
cd $(PREFIX)/bin && \
rm -f $(EXEC_FILES) && \
git config --global --unset alias.quick-stats
rm -f $(PREFIX)/bin/git-quick-stats
rm -f $(PREFIX)/share/man/man1/git-quick-stats.1
@$(TASK_DONE)
reinstall:
@curl -s https://raw.githubusercontent.com/arzzen/git-quick-stats/master/git-quick-stats > git-quick-stats
$(MAKE) uninstall && \
@curl -sO https://raw.githubusercontent.com/arzzen/git-quick-stats/master/git-quick-stats
@curl -sO https://raw.githubusercontent.com/arzzen/git-quick-stats/master/git-quick-stats.1
$(MAKE) install
@$(TASK_DONE)
man:
install -g 0 -o 0 -m 0644 git-quick-stats.1 /usr/share/man/man1/
install -d -m 0755 $(PREFIX)/share/man/man1/
install -m 0644 git-quick-stats.1 $(PREFIX)/share/man/man1/
test:
tests/commands_test.sh

View File

@@ -1,14 +1,13 @@
## GIT quick statistics [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Simple%20and%20efficient%20way%20to%20access%20various%20statistics%20in%20git%20repository&url=https://github.com/arzzen/git-quick-stat&via=arzzen&hashtags=git,stats,tool,statistics,developers)
## GIT quick statistics [![Backers on Open Collective](https://opencollective.com/git-quick-stats/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/git-quick-stats/sponsors/badge.svg)](#sponsors) [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Simple%20and%20efficient%20way%20to%20access%20various%20statistics%20in%20git%20repository&url=https://github.com/arzzen/git-quick-stat&via=arzzen&hashtags=git,stats,tool,statistics,developers) [![Travis](https://api.travis-ci.org/arzzen/git-quick-stats.svg?branch=master)](https://travis-ci.org/arzzen/git-quick-stats) [![Homebrew package](https://repology.org/badge/version-for-repo/homebrew/git-quick-stats.svg)](http://braumeister.org/formula/git-quick-stats) [![Linuxbrew package](https://repology.org/badge/version-for-repo/linuxbrew/git-quick-stats.svg)](https://repology.org/metapackage/git-quick-stats/packages)
[![Travis](https://api.travis-ci.org/arzzen/git-quick-stats.svg?branch=master)](https://travis-ci.org/arzzen/git-quick-stats)
[![Homebrew package](https://repology.org/badge/version-for-repo/homebrew/git-quick-stats.svg)](http://braumeister.org/formula/git-quick-stats)
[![Linuxbrew package](https://repology.org/badge/version-for-repo/linuxbrew/git-quick-stats.svg)](https://repology.org/metapackage/git-quick-stats/packages)
> `git quick-stats` is a simple and efficient way to access various statistics in git repository.
> `git-quick-stats` is a simple and efficient way to access various statistics in git repository.
> Any git repository contains tons of information about commits, contributors, and files. Extracting this information is not always trivial, mostly because of a gadzillion options to a gadzillion git commands I dont think there is a single person alive who knows them all. Probably not even [Linus Torvalds](https://github.com/torvalds) himself :).
![mainMenuScreenshot](https://user-images.githubusercontent.com/8818630/57629726-4704f080-756a-11e9-89cc-f8bdeea3c982.png)
## Table of Contents
[**Screenshots**](#screenshots)
@@ -36,28 +35,20 @@
## Screenshots
![screenshot from 2017-04-02 17-10-21](https://cloud.githubusercontent.com/assets/6382002/24588459/bef0a1b8-17c8-11e7-8525-3ab5983b81dc.png)
![commitsByWeekdayScreenshot](https://user-images.githubusercontent.com/8818630/57629719-42d8d300-756a-11e9-8031-8132e14aa10f.png)
![screenshot from 2017-04-02 17-09-13](https://cloud.githubusercontent.com/assets/6382002/24588456/bec1278a-17c8-11e7-8835-39273da7bc99.png)
![screenshot from 2017-04-02 17-09-31](https://cloud.githubusercontent.com/assets/6382002/24588457/beece9f6-17c8-11e7-80a4-274ecd314a7e.png)
![screenshot from 2017-04-02 17-09-45](https://cloud.githubusercontent.com/assets/6382002/24588458/bef03656-17c8-11e7-82e6-30a5a11cfbb0.png)
![screenshot from 2017-04-02 17-08-28](https://cloud.githubusercontent.com/assets/6382002/24588460/bef0c2e2-17c8-11e7-88b2-a4033593c5d0.png)
![commitsByHourScreenshot](https://user-images.githubusercontent.com/8818630/57629717-40767900-756a-11e9-97d4-301ffe7535c7.png)
## Usage
```bash
git quick-stats
# or
git-quick-stats
```
Or you can use (non-interactive) direct execution:
`git quick-stats <optional-command-to-execute-directly>`
`git-quick-stats <optional-command-to-execute-directly>`
Possible arguments in short and long form:
@@ -66,6 +57,8 @@ Possible arguments in short and long form:
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
-d, --commits-per-day
displays a list of commits per day
-m, --commits-by-month
@@ -122,6 +115,14 @@ You can exclude directory from the stats by using [pathspec](https://git-scm.com
export _GIT_PATHSPEC=':!directory'
```
#### Color themes
You can change to the legacy color scheme by toggling the variable `_MENU_THEME` between `default` and `legacy`
```bash
export _MENU_THEME=legacy
```
![legacyThemeScreenshot](https://user-images.githubusercontent.com/8818630/57629724-453b2d00-756a-11e9-9ffc-6a7f53c5fc49.png)
## Installation
@@ -211,3 +212,33 @@ MIT see [LICENSE][] for the full license text.
[landing page]: http://arzzen.github.io/git-quick-stats
[LICENSE]: https://github.com/arzzen/git-quick-stats/blob/master/LICENSE
## Contributors
This project exists thanks to all the people who contribute.
<a href="https://github.com/arzzen/git-quick-stats/graphs/contributors"><img src="https://opencollective.com/git-quick-stats/contributors.svg?width=890&button=false" /></a>
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/git-quick-stats#backer)]
<a href="https://opencollective.com/git-quick-stats#backers" target="_blank"><img src="https://opencollective.com/git-quick-stats/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/git-quick-stats#sponsor)]
<a href="https://opencollective.com/git-quick-stats/sponsor/0/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/1/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/2/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/3/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/4/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/5/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/6/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/7/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/8/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/git-quick-stats/sponsor/9/website" target="_blank"><img src="https://opencollective.com/git-quick-stats/sponsor/9/avatar.svg"></a>

View File

@@ -24,6 +24,10 @@ else
_limit=10
fi
# Default menu theme
# Set the legacy theme by typing "export _MENU_THEME=legacy"
_theme="${_MENU_THEME:=default}"
################################################################################
# DESC: Checks to make sure the user has the appropriate utilities installed
# ARGS: None
@@ -76,6 +80,8 @@ OPTIONS
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
-d, --commits-per-day
displays a list of commits per day
-m, --commits-by-month
@@ -109,7 +115,9 @@ ADDITIONAL USAGE
You can set _GIT_LIMIT for limited output log
ex: export _GIT_LIMIT=20
You can exclude a directory from the stats by using pathspec
ex: export _GIT_PATHSPEC=':!directory'"
ex: export _GIT_PATHSPEC=':!directory'
You can set _MENU_THEME to display the legacy color scheme
ex: export _MENU_THEME=legacy"
}
################################################################################
@@ -120,27 +128,51 @@ ADDITIONAL USAGE
function show_menu() {
local normal=$(tput sgr0)
local cyan=$(tput setaf 6)
local bold=$(tput bold)
local red=$(tput setaf 1)
local yellow=$(tput setaf 3)
echo -e "\n${red} Generate: ${normal}"
echo -e "${cyan} ${yellow} 1)${cyan} Contribution stats (by author) ${normal}"
echo -e "${cyan} ${yellow} 2)${cyan} Git changelogs (last $_limit days)${normal}"
echo -e "${cyan} ${yellow} 3)${cyan} Git changelogs by author ${normal}"
echo -e "${cyan} ${yellow} 4)${cyan} My daily status ${normal}"
echo -e "${red} List: ${normal}"
echo -e "${cyan} ${yellow} 5)${cyan} Branch tree view (last $_limit)${normal}"
echo -e "${cyan} ${yellow} 6)${cyan} All branches (sorted by most recent commit) ${normal}"
echo -e "${cyan} ${yellow} 7)${cyan} All contributors (sorted by name) ${normal}"
echo -e "${cyan} ${yellow} 8)${cyan} Git commits per author ${normal}"
echo -e "${cyan} ${yellow} 9)${cyan} Git commits per date ${normal}"
echo -e "${cyan} ${yellow} 10)${cyan} Git commits per month ${normal}"
echo -e "${cyan} ${yellow} 11)${cyan} Git commits per weekday ${normal}"
echo -e "${cyan} ${yellow} 12)${cyan} Git commits per hour ${normal}"
echo -e "${cyan} ${yellow} 13)${cyan} Git commits by author per hour ${normal}"
echo -e "${red} Suggest: ${normal}"
echo -e "${cyan} ${yellow} 14)${cyan} Code reviewers (based on git history) ${normal}"
echo -e "\n${yellow}Please enter a menu option or ${red}press enter to exit. ${normal}"
local white=$(tput setaf 7)
local titles=""
local text=""
local nums=""
local help_txt=""
local exit_txt=""
# Adjustable color menu option
if [[ "${_theme}" == "legacy" ]]; then
titles="${bold}${red}"
text="${normal}${cyan}"
nums="${bold}${yellow}"
help_txt="${normal}${yellow}"
exit_txt="${bold}${red}"
else
titles="${bold}${cyan}"
text="${normal}${white}"
nums="${normal}${bold}${white}"
help_txt="${normal}${cyan}"
exit_txt="${bold}${cyan}"
fi
echo -e "\n${titles} Generate:${normal}"
echo -e "${nums} 1)${text} Contribution stats (by author)"
echo -e "${nums} 2)${text} Contribution stats (by author) on a specific branch"
echo -e "${nums} 3)${text} Git changelogs (last $_limit days)"
echo -e "${nums} 4)${text} Git changelogs by author"
echo -e "${nums} 5)${text} My daily status"
echo -e "\n${titles} List:"
echo -e "${nums} 6)${text} Branch tree view (last $_limit)"
echo -e "${nums} 7)${text} All branches (sorted by most recent commit)"
echo -e "${nums} 8)${text} All contributors (sorted by name)"
echo -e "${nums} 9)${text} Git commits per author"
echo -e "${nums} 10)${text} Git commits per date"
echo -e "${nums} 11)${text} Git commits per month"
echo -e "${nums} 12)${text} Git commits per weekday"
echo -e "${nums} 13)${text} Git commits per hour"
echo -e "${nums} 14)${text} Git commits by author per hour"
echo -e "\n${titles} Suggest:"
echo -e "${nums} 15)${text} Code reviewers (based on git history)"
echo -e "\n${help_txt}Please enter a menu option or ${exit_txt}press Enter to exit."
echo -n "${text}> ${normal}"
read -r opt
}
@@ -165,73 +197,97 @@ function option_picked() {
# OUTS: None
################################################################################
function detailedGitStats() {
option_picked "Contribution stats (by author):"
git -c log.showSignature=false log --use-mailmap --no-merges --numstat \
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
# Prompt message
if [[ $is_branch_existing && -n "${_branch}" ]]; then
option_picked "Contribution stats (by author) on ${_branch} branch:"
elif [[ -n "${branch}" && -z "${_branch}" ]]; then
option_picked "Branch \"${branch}\" does not exist.\nContribution stats (by author) on the current branch:"
else
option_picked "Contribution stats (by author) on the current branch:"
fi
git -c log.showSignature=false log ${_branch} --use-mailmap --no-merges --numstat \
--pretty="format:commit %H%nAuthor: %aN <%aE>%nDate: %ad%n%n%w(0,4,4)%B%n" \
$_since $_until $_pathspec | LC_ALL=C awk '
function printStats(author) {
printf "\t%s:\n", author
function printStats(author) {
printf "\t%s:\n", author
if(more["total"] > 0) {
printf "\t insertions: %d (%.0f%%)\n", more[author], \
(more[author] / more["total"] * 100)
}
if(less["total"] > 0) {
printf "\t deletions: %d (%.0f%%)\n", less[author], \
(less[author] / less["total"] * 100)
}
if(file["total"] > 0) {
printf "\t files: %d (%.0f%%)\n", file[author], \
(file[author] / file["total"] * 100)
}
if(commits["total"] > 0) {
printf "\t commits: %d (%.0f%%)\n", commits[author], \
(commits[author] / commits["total"] * 100)
}
if (first[author] != "") {
printf "\t lines changed: %s\n", more[author] + less[author]
printf "\t first commit: %s\n", first[author]
printf "\t last commit: %s\n", last[author]
}
printf "\n"
}
/^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)
if(more["total"] > 0) {
printf "\t insertions: %d (%.0f%%)\n", more[author], \
(more[author] / more["total"] * 100)
}
}
printStats("total")
}'
if(less["total"] > 0) {
printf "\t deletions: %d (%.0f%%)\n", less[author], \
(less[author] / less["total"] * 100)
}
if(file["total"] > 0) {
printf "\t files: %d (%.0f%%)\n", file[author], \
(file[author] / file["total"] * 100)
}
if(commits["total"] > 0) {
printf "\t commits: %d (%.0f%%)\n", commits[author], \
(commits[author] / commits["total"] * 100)
}
if (first[author] != "") {
printf "\t lines changed: %s\n", more[author] + less[author]
printf "\t first commit: %s\n", first[author]
printf "\t last commit: %s\n", last[author]
}
printf "\n"
}
/^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)
}
}
printStats("total")
}'
}
################################################################################
@@ -263,7 +319,7 @@ function commitsByMonth() {
do
echo -en "\t$i\t"
git -c log.showSignature=false shortlog -n --no-merges --format='%ad %s' \
$_since $_until | grep -c " $i "
$_since $_until | grep " $i " | wc -l
done | awk '{
count[$1] = $2
total += $2
@@ -294,7 +350,7 @@ function commitsByWeekday() {
do
echo -en "\t$i\t"
git -c log.showSignature=false shortlog -n --no-merges --format='%ad %s' \
$_since $_until | grep -c "$i "
$_since $_until | grep "$i " | wc -l
done | awk '{
}
@@ -407,7 +463,7 @@ function myDailyStats() {
--author="$(git config user.name)" --no-merges \
--since=$(date "+%Y-%m-%dT00:00:00") \
--until=$(date "+%Y-%m-%dT23:59:59") --reverse \
| grep -c commit) "commits"
| grep commit | wc -l) "commits"
}
################################################################################
@@ -492,6 +548,12 @@ if [[ "$#" -eq 1 ]]; then
case "$1" in
-r|--suggest-reviewers) suggestReviewers;;
-T|--detailed-git-stats) detailedGitStats;;
-R|--git-stats-by-branch)
branch=""
while [[ -z "${branch}" ]]; do
read -r -p "Which branch? " branch
done
detailedGitStats "${branch}";;
-b|--branch-tree) branchTree;;
-d|--commits-per-day) commitsPerDay;;
-a|--commits-per-author) commitsPerAuthor;;
@@ -529,27 +591,32 @@ while [[ "${opt}" != "" ]]; do
clear
case "${opt}" in
1) detailedGitStats; show_menu;;
2) changelogs; show_menu;;
3) author=""
2) branch=""
while [[ -z "${branch}" ]]; do
read -r -p "Which branch? " branch
done
detailedGitStats "${branch}"; show_menu;;
3) changelogs; show_menu;;
4) author=""
while [[ -z "${author}" ]]; do
read -r -p "Which author? " author
done
changelogs "${author}"; show_menu;;
4) myDailyStats; show_menu;;
5) branchTree; show_menu;;
6) branchesByDate; show_menu;;
7) contributors; show_menu;;
8) commitsPerAuthor; show_menu;;
9) commitsPerDay; show_menu;;
10) commitsByMonth; show_menu;;
11) commitsByWeekday; show_menu;;
12) commitsByHour; show_menu;;
13) author=""
5) myDailyStats; show_menu;;
6) branchTree; show_menu;;
7) branchesByDate; show_menu;;
8) contributors; show_menu;;
9) commitsPerAuthor; show_menu;;
10) commitsPerDay; show_menu;;
11) commitsByMonth; show_menu;;
12) commitsByWeekday; show_menu;;
13) commitsByHour; show_menu;;
14) author=""
while [[ -z "${author}" ]]; do
read -r -p "Which author? " author
done
commitsByHour "${author}"; show_menu;;
14) suggestReviewers; show_menu;;
15) suggestReviewers; show_menu;;
q|"\n") exit;;
*) clear; option_picked "Pick an option from the menu"; show_menu;;
esac

View File

@@ -24,12 +24,16 @@ This program allows you to see detailed information about a git repository.
show the best people to contact to review code
.HP
.PP
.PP
\fB\-T\fR, \fB\-\-detailed\-git\-stats\fR
.IP
give a detailed list of git stats
.HP
.PP
\fB\-R\fR, \fB\-\-git\-stats\-by\-branch\fR
.IP
see detailed list of git stats by branch
.HP
.PP
\fB\-d\fR, \fB\-\-commits\-per\-day\fR
.IP
displays a list of commits per day
@@ -108,6 +112,10 @@ You can set _GIT_LIMIT for limited output log, example:
You can exclude a directory from the stats by using pathspec, example:
.PP
.B export _GIT_PATHSPEC=':!directory'
.PP
You can switch to the legacy color scheme, example:
.PP
.B export _MENU_THEME=legacy
.
.fi

View File

@@ -4,7 +4,7 @@
src="./git-quick-stats"
#assert "$src fail" "Invalid argument\n\nNAME\n git-quick-stats - Simple and efficient way to access various stats in a git repo\n\nSYNOPSIS\n For non-interactive mode: git-quick-stats [OPTIONS]\n For interactive mode: git-quick-stats\n\nDESCRIPTION\n Any git repository contains tons of information about commits, contributors,\n and files. Extracting this information is not always trivial, mostly because\n of a gadzillion options to a gadzillion git commands.\n\n This program allows you to see detailed information about a git repository.\n\nOPTIONS\n suggestReviewers - see best people to contact to review code\n detailedGitStats - displays a detailed list of git status\n commitsPerDay - displays a list of commits per day\n commitsByMonth - displays a list of commits per month\n commitsByWeekday - displays a list of commits per weekday\n commitsByHour - displays a list of commits per hour\n commitsByAuthorByHour - see a list of commits per hour by author\n commitsPerAuthor - displays a list of commits per author\n myDailyStats - see your current daily stats\n contributors - see a list of all contributors\n branchTree - see an ASCII graph of the git repo\n branchesByDate - show branches by date\n changelogs - see changelogs\n changelogsByAuthor - see changelogs by author\n\nADDITIONAL USAGE\n You can set _GIT_SINCE and _GIT_UNTIL to limit the git time log\n ex: export _GIT_SINCE=2017-20-01\n You can set _GIT_LIMIT for limited output log\n ex: export _GIT_LIMIT=20\n You can exclude a directory from the stats by using pathspec\n ex: export _GIT_PATHSPEC=':!directory'\n \nCONTRIBUTION\n For details regarding contribution, please see the contribution.md document\n\nLICENSE\n This is under the MIT license. See LICENSE in the repo for more info"
assert "$src fail" "Invalid argument\n\nNAME\n git-quick-stats - Simple and efficient way to access various stats in a git repo\n\nSYNOPSIS\n For non-interactive mode: git-quick-stats [OPTIONS]\n For interactive mode: git-quick-stats\n\nDESCRIPTION\n Any git repository contains tons of information about commits, contributors,\n and files. Extracting this information is not always trivial, mostly because\n of a gadzillion options to a gadzillion git commands.\n\n This program allows you to see detailed information about a git repository.\n\nOPTIONS\n -r, --suggest-reviewers\n show the best people to contact to review code\n -T, --detailed-git-stats\n give a detailed list of git stats\n -d, --commits-per-day\n displays a list of commits per day\n -m, --commits-by-month\n displays a list of commits per month\n -w, --commits-by-weekday\n displays a list of commits per weekday\n -o, --commits-by-hour\n displays a list of commits per hour\n -A, --commits-by-author-by-hour\n displays a list of commits per hour by author\n -a, --commits-per-author\n displays a list of commits per author\n -S, --my-daily-stats\n see your current daily stats\n -C, --contributors\n see a list of everyone who contributed to the repo\n -b, --branch-tree\n show an ASCII graph of the git repo branch history\n -D, --branches-by-date\n show branches by date\n -c, --changelogs\n see changelogs\n -L, --changelogs-by-author\n see changelogs by author\n -h, -?, --help\n display this help text in the terminal\n\nADDITIONAL USAGE\n You can set _GIT_SINCE and _GIT_UNTIL to limit the git time log\n ex: export _GIT_SINCE=\"2017-20-01\"\n You can set _GIT_LIMIT for limited output log\n ex: export _GIT_LIMIT=20\n You can exclude a directory from the stats by using pathspec\n ex: export _GIT_PATHSPEC=':!directory'"
assert "$src fail" "Invalid argument\n\nNAME\n git-quick-stats - Simple and efficient way to access various stats in a git repo\n\nSYNOPSIS\n For non-interactive mode: git-quick-stats [OPTIONS]\n For interactive mode: git-quick-stats\n\nDESCRIPTION\n Any git repository contains tons of information about commits, contributors,\n and files. Extracting this information is not always trivial, mostly because\n of a gadzillion options to a gadzillion git commands.\n\n This program allows you to see detailed information about a git repository.\n\nOPTIONS\n -r, --suggest-reviewers\n show the best people to contact to review code\n -T, --detailed-git-stats\n give a detailed list of git stats\n -R, --git-stats-by-branch\n see detailed list of git stats by branch\n -d, --commits-per-day\n displays a list of commits per day\n -m, --commits-by-month\n displays a list of commits per month\n -w, --commits-by-weekday\n displays a list of commits per weekday\n -o, --commits-by-hour\n displays a list of commits per hour\n -A, --commits-by-author-by-hour\n displays a list of commits per hour by author\n -a, --commits-per-author\n displays a list of commits per author\n -S, --my-daily-stats\n see your current daily stats\n -C, --contributors\n see a list of everyone who contributed to the repo\n -b, --branch-tree\n show an ASCII graph of the git repo branch history\n -D, --branches-by-date\n show branches by date\n -c, --changelogs\n see changelogs\n -L, --changelogs-by-author\n see changelogs by author\n -h, -?, --help\n display this help text in the terminal\n\nADDITIONAL USAGE\n You can set _GIT_SINCE and _GIT_UNTIL to limit the git time log\n ex: export _GIT_SINCE=\"2017-20-01\"\n You can set _GIT_LIMIT for limited output log\n ex: export _GIT_LIMIT=20\n You can exclude a directory from the stats by using pathspec\n ex: export _GIT_PATHSPEC=':!directory'\n You can set _MENU_THEME to display the legacy color scheme\n ex: export _MENU_THEME=legacy"
assert_raises "$src fail" 1
assert_contains "$src --suggest-reviewers" "Suggested code reviewers (based on git history)" 127