diff options
Diffstat (limited to 'scripts/git-log-pretty-since.sh')
-rwxr-xr-x | scripts/git-log-pretty-since.sh | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/scripts/git-log-pretty-since.sh b/scripts/git-log-pretty-since.sh index d8e3282fb3..a0aa4354b6 100755 --- a/scripts/git-log-pretty-since.sh +++ b/scripts/git-log-pretty-since.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash -# Shows a log with changes grouped next to their merge-commit. +# Prints a nicely-formatted commit history. +# - Commits are grouped below their merge-commit. +# - Issue numbers are moved next to the commit-id. # # Parameters: # $1 "since" commit @@ -19,14 +21,32 @@ is_merge_commit() { git log $1^2 >/dev/null 2>&1 && return 0 || return 1 } -for commit in $(git log --format='%H' --first-parent --since $__SINCE); do +# Removes parens from issue/ticket/PR numbers. +# +# Example: +# in: 3340e08becbf foo (#9423) +# out: 3340e08becbf foo #9423 +_deparen() { + sed 's/(\(\#[0-9]\{3,\}\))/\1/g' +} + +# Cleans up issue/ticket/PR numbers in the commit descriptions. +# +# Example: +# in: 3340e08becbf foo (#9423) +# out: 3340e08becbf #9423 foo +_format_ticketnums() { + nvim -Es +'g/\v(#[0-9]{3,})/norm! ngEldE0ep' +'%p' | _deparen +} + +for commit in $(git log --format='%H' --first-parent "$__SINCE"..HEAD); do if is_merge_commit ${commit} ; then if [ -z "$__INVMATCH" ] || ! git log --oneline ${commit}^1..${commit}^2 \ - | grep -E "$__INVMATCH" >/dev/null 2>&1 ; then + | >/dev/null 2>&1 grep -E "$__INVMATCH" ; then git log -1 --oneline ${commit} git log --format=' %h %s' ${commit}^1..${commit}^2 fi else git log -1 --oneline ${commit} fi -done +done | _format_ticketnums |