diff --git a/bin/git-summary b/bin/git-summary index 4acb19e..a12e2b5 100755 --- a/bin/git-summary +++ b/bin/git-summary @@ -5,6 +5,7 @@ cd "$(git root)" || { echo "Can't cd to top level directory";exit 1; } SUMMARY_BY_LINE= DEDUP_BY_EMAIL= +MERGES_ARG= for arg in "$@"; do case "$arg" in --line) @@ -13,6 +14,9 @@ for arg in "$@"; do --dedup-by-email) DEDUP_BY_EMAIL=1 ;; + --no-merges) + MERGES_ARG="--no-merges" + ;; -*) >&2 echo "unknown argument $arg found" exit 1 @@ -31,6 +35,12 @@ if [ -n "$DEDUP_BY_EMAIL" ] && [ -n "$SUMMARY_BY_LINE" ]; then exit 1 fi +if [ -n "$MERGES_ARG" ] && [ -n "$SUMMARY_BY_LINE" ]; then + >&2 echo "--no-merges used with --line is not supported" + exit 1 +fi + + commit="" test $# -ne 0 && commit=$* project=${PWD##*/} @@ -42,7 +52,7 @@ project=${PWD##*/} date() { # the $1 can be empty # shellcheck disable=SC2086 - git log --pretty='format: %ai' $1 | cut -d ' ' -f 2 + git log $MERGES_ARG --pretty='format: %ai' $1 | cut -d ' ' -f 2 } # @@ -63,7 +73,7 @@ active_days() { commit_count() { # shellcheck disable=SC2086 - git log --oneline $commit | wc -l | tr -d ' ' + git log $MERGES_ARG --oneline $commit | wc -l | tr -d ' ' } # @@ -193,9 +203,9 @@ else if [ -n "$DEDUP_BY_EMAIL" ]; then # the $commit can be empty # shellcheck disable=SC2086 - git shortlog -n -s -e $commit | dedup_by_email | format_authors + git shortlog $MERGES_ARG -n -s -e $commit | dedup_by_email | format_authors else # shellcheck disable=SC2086 - git shortlog -n -s $commit | format_authors + git shortlog $MERGES_ARG -n -s $commit | format_authors fi fi diff --git a/etc/git-extras-completion.zsh b/etc/git-extras-completion.zsh index 8f0d713..a6c7fe9 100644 --- a/etc/git-extras-completion.zsh +++ b/etc/git-extras-completion.zsh @@ -322,6 +322,7 @@ _git-standup() { _git-summary() { _arguments '--line[summarize with lines rather than commits]' _arguments '--dedup-by-email[remove duplicate users by the email address]' + _arguments '--no-merges[exclude merge commits]' __gitex_commits } diff --git a/etc/git-extras.fish b/etc/git-extras.fish index 319bdd6..931fc0a 100644 --- a/etc/git-extras.fish +++ b/etc/git-extras.fish @@ -170,6 +170,7 @@ complete -c git -x -n '__fish_git_using_command standup' -s n -d 'Limit the numb # summary complete -c git -n '__fish_git_using_command summary' -l line -d 'summarize with lines rather than commits' complete -c git -n '__fish_git_using_command summary' -l dedup-by-email -d 'remove duplicate users by the email address' +complete -c git -n '__fish_git_using_command summary' -l no-merges -d 'exclude merge commits' # release complete -c git -x -n '__fish_git_using_command release' -s c -d 'Generates/populates the changelog with all commit message since the last tag' complete -c git -x -n '__fish_git_using_command release' -s r -d 'The "remote" repository that is destination of a push operation' diff --git a/man/git-summary.1 b/man/git-summary.1 index 83e0ed5..7e6865c 100644 --- a/man/git-summary.1 +++ b/man/git-summary.1 @@ -1,68 +1,52 @@ -.\" generated with Ronn/v0.7.3 -.\" http://github.com/rtomayko/ronn/tree/0.7.3 -. -.TH "GIT\-SUMMARY" "1" "July 2021" "" "Git Extras" -. +.\" generated with Ronn-NG/v0.9.1 +.\" http://github.com/apjanke/ronn-ng/tree/0.9.1 +.TH "GIT\-SUMMARY" "1" "August 2021" "" "Git Extras" .SH "NAME" \fBgit\-summary\fR \- Show repository summary -. .SH "SYNOPSIS" -\fBgit\-summary\fR [\-\-line] [\-\-dedup\-by\-email] [] -. +\fBgit\-summary\fR [\-\-dedup\-by\-email] [\-\-no\-merges] [] +.br +\fBgit\-summary\fR \-\-line [] .SH "DESCRIPTION" Shows a summary of the repository\. -. .SH "OPTIONS" -. .P Summarize only the range of commits included in the \. -. .P -. .P Summarize only the range of files included in the \. -. .P \-\-dedup\-by\-email -. .P Remove duplicate authors who belong to the same email address\. For example, -. .IP "" 4 -. .nf - $ git summary -\.\.\. +\|\.\|\.\|\. 133 TJ Holowaychuk 9\.9% 115 Tj Holowaychuk 8\.5% $ git summary \-\-dedup\-by\-email -\.\.\. +\|\.\|\.\|\. 248 TJ Holowaychuk 18\.4% -. .fi -. .IP "" 0 -. .P -This option can not be used together with \fB\-\-line\fR\. -. +\-\-no\-merges +.P +Exclude merge commits\. .P \-\-line -. .P Summarize with lines other than commits\. When \fB\-\-line\fR is specified, the last argument is treated as \. -. +.P +This option can not be used together with \fB\-\-dedup\-by\-email\fR or \fB\-\-no\-merges\fR\. .SH "EXAMPLES" Outputs a repo summary: -. .IP "" 4 -. .nf - $ git summary project : express @@ -89,65 +73,42 @@ authors : 1 ewoudj 1 isaacs 1 Matt Colyer -. .fi -. .IP "" 0 -. .P This command can also take a committish, and will print a summary for the range of commits included in the committish: -. .IP "" 4 -. .nf - $ git summary v42\.\. -. .fi -. .IP "" 0 -. .P Outputs a repo summary by line: -. .IP "" 4 -. .nf - $ git summary \-\-line project : git\-extras lines : 26820 authors : - \.\.\. -. + \|\.\|\.\|\. .fi -. .IP "" 0 -. .P Filter with the path: -. .IP "" 4 -. .nf - $ git summary \-\-line bin/ project : git\-extras lines : 4420 authors : - \.\.\. -. + \|\.\|\.\|\. .fi -. .IP "" 0 -. .SH "AUTHOR" Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR> -. .SH "REPORTING BUGS" <\fIhttps://github\.com/tj/git\-extras/issues\fR> -. .SH "SEE ALSO" <\fIhttps://github\.com/tj/git\-extras\fR> diff --git a/man/git-summary.html b/man/git-summary.html index 41bfe90..fcb0882 100644 --- a/man/git-summary.html +++ b/man/git-summary.html @@ -1,8 +1,8 @@ - - + + git-summary(1) - Show repository summary