Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add summary fields #1013

Merged
merged 1 commit into from
Jan 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions Commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,12 +151,14 @@ Outputs a repo or path summary:
```bash
$ git summary

project : git-extras
repo age : 10 months ago
commits : 163
active : 60 days
files : 93
authors :
project : git-extras
repo age : 10 months ago
last active : 3 weeks ago
active on : 93 days
commits : 163
files : 93
uncommitted : 3
authors :
97 Tj Holowaychuk 59.5%
37 Jonhnny Weslley 22.7%
8 Kenneth Reitz 4.9%
Expand Down
39 changes: 22 additions & 17 deletions bin/git-summary
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ project=${PWD##*/}
#
# get date for the given <commit>
#

date() {
# the $1 can be empty
# shellcheck disable=SC2086
Expand All @@ -62,7 +61,6 @@ date() {
#
# get active days for the given <commit>
#

active_days() {
# shellcheck disable=SC2086
date $1 | sort -r | uniq | awk '
Expand All @@ -74,7 +72,6 @@ active_days() {
#
# get the commit total
#

commit_count() {
# shellcheck disable=SC2086
git log $MERGES_ARG --oneline $commit | wc -l | tr -d ' '
Expand All @@ -83,15 +80,13 @@ commit_count() {
#
# total file count
#

file_count() {
git ls-files | wc -l | tr -d ' '
}

#
# remove duplicate authors who belong to the same email address
#

dedup_by_email() {
# in:
# 27 luo zexuan <[email protected]>
Expand Down Expand Up @@ -132,7 +127,6 @@ dedup_by_email() {
#
# list authors
#

format_authors() {
# a rare unicode character is used as separator to avoid conflicting with
# author name. However, Linux column utility will escape tab if separator
Expand All @@ -150,9 +144,15 @@ format_authors() {
#
# fetch repository age from oldest commit
#

repository_age() {
git log --reverse --pretty=oneline --format="%ar" | head -n 1 | LC_ALL=C sed 's/ago//'
git log --reverse --pretty=oneline --format="%ar" -n 1 | LC_ALL=C sed 's/ago//'
}

#
# fetch repository age of the latest commit
#
last_active() {
git log --pretty=oneline --format="%ar" -n 1
}

#
Expand Down Expand Up @@ -181,27 +181,32 @@ line_count() {
lines "$@" | wc -l
}

# summary
uncommitted_changes_count() {
git status --porcelain | wc -l
}

# summary
echo
echo " project : $project"
echo " project : $project"

if [ -n "$SUMMARY_BY_LINE" ]; then
echo " lines : $(line_count "${paths[@]}")"
echo " authors :"
echo " lines : $(line_count "${paths[@]}")"
echo " authors :"
lines "${paths[@]}" | sort | uniq -c | sort -rn | format_authors
else
echo " repo age : $(repository_age)"
echo " repo age : $(repository_age)"
echo " last active : $(last_active)"
# shellcheck disable=SC2086
echo " active : $(active_days $commit) days"
echo " active on : $(active_days $commit) days"
# shellcheck disable=SC2086
echo " commits : $(commit_count $commit)"
echo " commits : $(commit_count $commit)"

# The file count doesn't support passing a git ref so ignore it if a ref is given
if [ "$commit" == "HEAD" ]; then
echo " files : $(file_count)"
echo " files : $(file_count)"
fi
echo " authors : "
echo " uncommitted : $(uncommitted_changes_count)"
echo " authors : "
if [ -n "$DEDUP_BY_EMAIL" ]; then
# the $commit can be empty
# shellcheck disable=SC2086
Expand Down
76 changes: 63 additions & 13 deletions man/git-summary.1
Original file line number Diff line number Diff line change
@@ -1,60 +1,87 @@
.\" 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"
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SUMMARY" "1" "December 2022" "" "Git Extras"
.
.SH "NAME"
\fBgit\-summary\fR \- Show repository summary
.
.SH "SYNOPSIS"
\fBgit\-summary\fR [\-\-dedup\-by\-email] [\-\-no\-merges] [<committish>]
.
.br
\fBgit\-summary\fR \-\-line [<path>]
.
.SH "DESCRIPTION"
Shows a summary of the repository or a path within it\.
.
.SH "OPTIONS"
<committish>
.
.P
Summarize only the range of commits included in the <committish>\.
.
.P
<path>
.
.P
Summarize only the range of files included in the <path>\.
.
.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
\-\-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 <path>\.
.
.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
repo age : 10 months ago
commits : 1893
active : 93 days
files : 111
authors :
project : express
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:) oh I see. Only the MD file must be manually adapted. When modifiying the x.1 file I already wondered how people can modify this file with all the tags and making no mistake. Thx for pointing this out.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacewander Done.

repo age : 10 months ago
last active : 3 weeks ago
active on : 93 days
commits : 1893
files : 111
uncommitted : 3
authors :
1285 visionmedia
478 Tj Holowaychuk
48 Aaron Heckmann
Expand All @@ -73,42 +100,65 @@ 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>
Loading