Compare commits

..

18 Commits
2.1.8 ... 2.4.1

Author SHA1 Message Date
Tom Ice
71d414eb4a Merge pull request #137 from pyxide/fix/json-format-output
fix: json format output with multiline content
2022-07-11 16:09:01 -04:00
pyxide
d8346210a4 fix: json format output with multiline content 2022-07-11 19:15:07 +02:00
Tom Ice
b85760e8b9 Merge pull request #136 from dotmpe/master
Misc. fixes on filtering, added commits-by-year
2022-02-26 21:01:26 -05:00
B. van Berkum
07ad3b57a7 Updated screenshot URLs after PR#136 changes 2022-02-24 04:54:27 +01:00
B. van Berkum
dec1c4e103 Add --commits-by-year; put 'since' at first commit
- Added commits-by-year graph/statistics.
- Made 'since' use first reachable commit, instead of GIT epoch (May
  2005). To avoid empty bars in the new 'Commits by years' graph.

- Removed start-/end-year filter: on -by-weekday, -hour and -month. Instead
  made each `grep` look for its date tag fixed in a more specific sequence
  so as to not match commit message.

  Was giving problems if a since/until date-span larger than one year was given
  (ie. #135, #130, #123).

  Maybe should look at removing commit message from log listing entirely.
  Not sure why `grep -E "($startYear|$endYear)"` was ever introduced yet.

- Made tests run properly, updated test with usage output.
  Added a test-case with LC_TIME=POSIX.
2022-02-19 00:01:07 +01:00
Lukáš Mešťan
2a0294941f Update README.md 2021-08-19 09:16:37 +02:00
Lukáš Mešťan
22f1b3563d Merge pull request #133 from tomice/master
Add stat by author per timezone functionality
2021-06-15 13:52:05 +02:00
Tom Ice
628b31ffd8 Convert README.md inline HTML to pure Markdown
* The README.md contained inline HTML for the contributors, backers,
  and sponsors section. This technically works when the README.md is
  rendered within a webpage, but other Markdown readers, such as those
  that are built into GUIs, may or may not render them correctly.
  This changes those inline HTML hyperlinks to pure Markdown as
  specified by Markdown Lint rule MD033. For more info, see:

  https://github.com/DavidAnson/markdownlint/blob/v0.23.1/doc/Rules.md#md033

* Fixes some other small whitespace and inconsistency issues
2021-06-12 11:47:56 -04:00
Tom Ice
1e5723d7a2 Add stats by author per timezone functionality
* Added the ability to see git stats both per timezone, as well as
  by author per timezone. It should respect all global options.

* Adjusted the non-interactive menu as it was missed during the
  reorganization effort

* Updated tests, README.md, man page, and screenshots to reflect the
  new changes

* Resolves #128
2021-06-11 17:35:56 -04:00
Tom Ice
0c1749a560 Reorganize code to be consistent with the menu
* Before, we had various functions in a different order from the
  interactive menu in the code base. This changes our ordering of
  the functions and aligns the interactive menu, man pages, README.md,
  and code base so that they are all following the same paradigm.

  Also fixes some minor missing keywords
2021-06-11 16:11:26 -04:00
Tom Ice
ecab54c630 Fix some whitespace and other internal formatting
* Did some minor clean up of white space to try to adhere to the
  classic 80 characters per line standard that is typically found
  in shell code. It isn't perfect, but it's getting us closer.

* Added some extra notes and todos for adjustments that can be made
  and potential future work for others to jump in on.
2021-06-11 13:26:34 -04:00
Lukáš Mešťan
7219205696 Merge pull request #131 from treussart/export-csv
Export CSV of detailedGitStats
2021-05-20 07:46:54 +02:00
Tom Ice
dd3c97816e Update README.md to display new functionality
* With pull request #131, we add new functionality for both interactive and non-interactive modes.
  This change updates the README.md to reflect our new menu option for outputting the stats in CSV
2021-05-20 00:17:23 -04:00
Matthieu Treussart
d2b273eead Export CSV of detailedGitStats 2021-05-20 05:25:09 +02:00
Lukáš Mešťan
5b08bb0b52 Merge pull request #129 from treussart/add_git_branch_option
Add git branch option
2021-05-19 08:36:00 +02:00
Matthieu Treussart
08d1a5a6e3 Set git branch in options 2021-05-18 21:51:40 +02:00
Lukáš Mešťan
f5c2b82f02 Merge pull request #127 from pawaer/fix/issue126
Replaced grep commit by grep with regex including git sha hash
2021-04-29 08:36:34 +02:00
Pawaer
bf29c19cf5 Replaced grep commit by grep with regex including git sha hash
myDailyStats() used grep commit to detect count of commits. This
also increases the count by mentioning commit in the commit
message.

Therefore a grep with regex is used that expects a 40 digit/char
SHA1 hash after the word commit.
2021-04-24 21:50:30 +02:00
8 changed files with 877 additions and 451 deletions

5
.gitignore vendored
View File

@@ -7,4 +7,7 @@
.Spotlight*
.Trash*
**/*~
nbproject/*
nbproject/*
/tests/test-git/.git/
#/tests/test-git/*
!/tests/test-git/resetgit

View File

@@ -3,6 +3,7 @@ _INSTDIR ?= $(DESTDIR)$(PREFIX)
BINDIR ?= $(_INSTDIR)/bin
MANDIR ?= $(_INSTDIR)/share/man
TASK_DONE = echo -e "\n✓ $@ done\n"
SHELL := $(shell which bash)
.PHONY: test

153
README.md
View File

@@ -5,7 +5,8 @@
>
> Any git repository may contain tons of information about commits, contributors, and files. Extracting this information is not always trivial, mostly because there are 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/58364013-61e53800-7e7b-11e9-87f9-790d6744fbd5.png)
![mainMenuScreenshot](https://user-images.githubusercontent.com/8818630/154823670-f42a111b-45f4-47fc-aea7-80059827c8e6.png)
## Table of Contents
@@ -53,15 +54,15 @@
## Screenshots
![commitsByWeekdayScreenshot](https://user-images.githubusercontent.com/8818630/58364011-61e53800-7e7b-11e9-9417-16cbb241ac2e.png)
![commitsByWeekdayScreenshot](https://user-images.githubusercontent.com/8818630/154823677-e34ca867-ae61-4755-bf89-c877f809c591.png)
![commitsByHourScreenshot](https://user-images.githubusercontent.com/8818630/58364010-61e53800-7e7b-11e9-8711-a40b50aebf52.png)
![commitsByHourScreenshot](https://user-images.githubusercontent.com/8818630/154823679-bdadc26c-c644-4a01-b625-85e330f85d41.png)
## Usage
### Interactive
git-quick-stats has a built-in interactive menu that can be executed as such:
`git-quick-stats` has a built-in interactive menu that can be executed as such:
```bash
git-quick-stats
@@ -92,40 +93,53 @@ git quick-stats <optional-command-to-execute-directly>
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
-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
-Y, --commits-by-year
displays a list of commits per year
-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
-z, --commits-by-timezone
displays a list of commits per timezone
-Z, --commits-by-author-by-timezone
displays a list of commits per timezone 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
@@ -149,7 +163,7 @@ export _GIT_LIMIT=20
### Git log options
You can set _GIT_LOG_OPTIONS for [git log options](https://git-scm.com/docs/git-log#_options):
You can set `_GIT_LOG_OPTIONS` for [git log options](https://git-scm.com/docs/git-log#_options):
```bash
export _GIT_LOG_OPTIONS="--ignore-all-space --ignore-blank-lines"
@@ -171,22 +185,30 @@ export _GIT_PATHSPEC=':!package-lock.json'
### Git merge view strategy
You can set the variable `_GIT_MERGE_VIEW` to enable merge commits to be part of the stats by setting `_GIT_MERGE_VIEW` to `enable`. You can also choose to only show merge commits by setting `_GIT_MERGE_VIEW` to `exclusive`. Default is to not show merge commits. These work similar to git's built-in `--merges` and `--no-merges` log options.
You can set the variable `_GIT_MERGE_VIEW` to enable merge commits to be part of the stats by setting `_GIT_MERGE_VIEW` to `enable`. You can also choose to only show merge commits by setting `_GIT_MERGE_VIEW` to `exclusive`. Default is to not show merge commits. These work similar to git's built-in `--merges` and `--no-merges` log options.
```bash
export _GIT_MERGE_VIEW="enable"
export _GIT_MERGE_VIEW="exclusive"
```
### Git branch
You can set the variable `_GIT_BRANCH` to set the branch of the stats. Works with commands `--git-stats-by-branch` and `--csv-output-by-branch`.
```bash
export _GIT_BRANCH="master"
```
### 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
export _MENU_THEME="legacy"
```
![legacyThemeScreenshot](https://user-images.githubusercontent.com/8818630/58364012-61e53800-7e7b-11e9-910a-aaff836260eb.png)
![legacyThemeScreenshot](https://user-images.githubusercontent.com/8818630/154823711-3dd0c268-f3cb-42e5-9094-0eb8e45d1761.png)
## Installation
@@ -245,7 +267,24 @@ You can use the Docker image provided:
## System requirements
* An OS with a Bash shell
* Tools we use: awk ; basename ; cat ; column ; echo ; git ; grep ; head ; seq ; sort ; tput ; tr ; uniq ; wc
* Tools we use:
```bash
awk
basename
cat
column
echo
git
grep
head
printf
seq
sort
tput
tr
uniq
```
### Dependencies
@@ -308,25 +347,29 @@ MIT see [LICENSE][] for the full license text.
## 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>
[![contributors](https://opencollective.com/git-quick-stats/contributors.svg?width=890&button=false)](https://github.com/arzzen/git-quick-stats/graphs/contributors)
### 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>
[![backers](https://opencollective.com/git-quick-stats/backers.svg?width=890)](https://opencollective.com/git-quick-stats#backers)
### 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?v=1"></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>
[![sponsor0](https://opencollective.com/git-quick-stats/sponsor/0/avatar.svg?v=1)](https://opencollective.com/git-quick-stats/sponsor/0/website)
[![sponsor1](https://opencollective.com/git-quick-stats/sponsor/1/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/1/website)
[![sponsor2](https://opencollective.com/git-quick-stats/sponsor/2/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/2/website)
[![sponsor3](https://opencollective.com/git-quick-stats/sponsor/3/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/3/website)
[![sponsor4](https://opencollective.com/git-quick-stats/sponsor/4/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/4/website)
[![sponsor5](https://opencollective.com/git-quick-stats/sponsor/5/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/5/website)
[![sponsor6](https://opencollective.com/git-quick-stats/sponsor/6/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/6/website)
[![sponsor7](https://opencollective.com/git-quick-stats/sponsor/7/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/7/website)
[![sponsor8](https://opencollective.com/git-quick-stats/sponsor/8/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/8/website)
[![sponsor9](https://opencollective.com/git-quick-stats/sponsor/9/avatar.svg)](https://opencollective.com/git-quick-stats/sponsor/9/website)
[![61999966](https://user-images.githubusercontent.com/6382002/130024560-65bb49a6-c7e9-48f9-8427-a29d8ff2a3db.png)](https://quaestor.com/?utm_source=github&utm_category=sponsor)

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,13 @@
.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
.B git\-quick\-stats
\- Simple and efficient way to access various stats in a git repository.
.SH SYNOPSIS
.PP
For non\-interactive mode:
For non\-interactive mode:
.B git\-quick\-stats [OPTIONS]
.PP
For interactive mode:
For interactive mode:
.B git-quick-stats
.PP
.SH DESCRIPTION
@@ -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,6 +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
@@ -44,6 +85,11 @@ displays a list of commits per day
displays a list of commits per month
.HP
.PP
\fB\-Y\fR, \fB\-\-commits\-by\-year\fR
.IP
displays a list of commits per year
.HP
.PP
\fB\-w\fR, \fB\-\-commits\-by\-weekday\fR
.IP
displays a list of commits per weekday
@@ -59,44 +105,20 @@ displays a list of commits per hour
displays a list of commits per hour by author
.HP
.PP
\fB\-a\fR, \fB\-\-commits\-per\-author\fR
\fB\-z\fR, \fB\-\-commits\-by\-timezone\fR
.IP
displays a list of commits per author
displays a list of commits per timezone
.HP
.PP
\fB\-S\fR, \fB\-\-my\-daily\-stats\fR
\fB\-Z\fR, \fB\-\-commits\-by\-author\-by\-timezone\fR
.IP
see your current daily stats
displays a list of commits per timezone by author
.HP
.SH SUGGEST OPTIONS
.PP
\fB\-C\fR, \fB\-\-contributors\fR
\fB\-r\fR, \fB\-\-suggest\-reviewers\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
@@ -131,6 +153,9 @@ You can also set _GIT_MERGE_VIEW to only show merge commits, example:
You can switch to the legacy color scheme, example:
.PP
.B export _MENU_THEME=legacy
.PP
You can set _GIT_BRANCH to set the branch of the stats, example:
.PP
.B export _GIT_BRANCH="master"
.
.fi

View File

@@ -79,7 +79,7 @@ assert_end() {
tests_endtime="$(date +%s%N)"
# required visible decimal place for seconds (leading zeros if needed)
local tests_time="$( \
printf "%010d" "$(( ${tests_endtime/%N/000000000}
printf "%010d" "$(( ${tests_endtime/%N/000000000}
- ${tests_starttime/%N/000000000} ))")" # in ns
tests="$tests_ran ${*:+$* }tests"
[[ -n "$DISCOVERONLY" ]] && echo "collected $tests." && _assert_reset && return
@@ -105,7 +105,7 @@ assert_end() {
assert() {
# assert <command> <expected stdout> [stdin]
(( tests_ran++ )) || :
[[ -z "$DISCOVERONLY" ]] || return
[[ -z "$DISCOVERONLY" ]] || return 0
expected=$(echo -ne "${2:-}")
result="$(eval 2>/dev/null $1 <<< ${3:-})" || true
if [[ "$result" == "$expected" ]]; then
@@ -115,13 +115,13 @@ assert() {
result="$(sed -e :a -e '$!N;s/\n/\\n/;ta' <<< "$result")"
[[ -z "$result" ]] && result="nothing" || result="\"$result\""
[[ -z "$2" ]] && expected="nothing" || expected="\"$2\""
_assert_fail "expected $expected${_indent}got $result" "$1" "$3"
_assert_fail "expected $expected${_indent}got $result" "$1" "${3:-}"
}
assert_raises() {
# assert_raises <command> <expected code> [stdin]
(( tests_ran++ )) || :
[[ -z "$DISCOVERONLY" ]] || return
[[ -z "$DISCOVERONLY" ]] || return 0
status=0
(eval $1 <<< ${3:-}) > /dev/null 2>&1 || status=$?
expected=${2:-0}
@@ -129,7 +129,12 @@ assert_raises() {
[[ -z "$DEBUG" ]] || echo -n .
return
fi
_assert_fail "program terminated with code $status instead of $expected" "$1" "$3"
_assert_fail "program terminated with code $status instead of $expected" "$1" "${3:-}"
}
assert_success() {
# assert_success <command>
assert_raises "$1" 0
}
# _assert_with_grep <grep modifiers> <command> <expected output...>

View File

@@ -19,39 +19,51 @@ 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
displays a list of commits per month
-Y, --commits-by-year
displays a list of commits per year
-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
-z, --commits-by-timezone
displays a list of commits per timezone
-Z, --commits-by-author-by-timezone
displays a list of commits per timezone 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
@@ -69,17 +81,26 @@ ADDITIONAL USAGE
You can also set _GIT_MERGE_VIEW to only show merge commits
ex: export _GIT_MERGE_VIEW=exclusive
You can set _MENU_THEME to display the legacy color scheme
ex: export _MENU_THEME=legacy"
ex: export _MENU_THEME=legacy
You can set _GIT_BRANCH to set the branch of the stats
ex: export _GIT_BRANCH=master"
assert_raises "$src fail" 1
assert_contains "$src --suggest-reviewers" "Suggested code reviewers (based on git history)"
assert_raises "$src --suggest-reviewers" 0
assert_success "$src --suggest-reviewers"
assert_contains "$src --detailed-git-stats" "Contribution stats"
assert_raises "$src --detailed-git-stats" 0
assert_success "$src --detailed-git-stats"
assert_contains "$src --commits-per-day" "Git commits per date"
assert_raises "$src --commits-per-day" 0
assert_success "$src --commits-per-day"
assert_startswith "$src --commits-by-year" "Git commits by year"
assert_success "$src --commits-by-year"
export LC_TIME=POSIX
assert_startswith "$src --commits-by-year" "Git commits by year"
assert_success "$src --commits-by-year"
assert_end

17
tests/test-git/resetgit Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/sh
# Initialises a new local Git repo for test purpose.
if test -d ../test-git/.git; then rm -Rf ../test-git/.git; fi
#mkdir test-git
cd ../test-git
git init
git config user.name "$(printf %s 'Test Git,\nfor test purpose')"
git config user.email "TestGit\o/@example.org"
#printf '\n[user]\nname = test-git\nemail = test-git@example.org\n'> .git/config
printf 'test-git\n========\n' > README.md
git add README.md
git commit -m 'added readme (o\w/o)' -m 'in markdown, no \r\n, only \n' -m 'a very "simple" readme'
testChars="$(printf 'tab [%b] form feed [%b] line feed [%b] carriage return [%b]' '\x09' '\x0C' '\x0A' '\x0D')"
#printf '# testChars [%s]\n' "$testChars">&2
git notes add -m 'Some notes' -m 'out of ascii: été au cœur' -m "$testChars"
git log