Fixes #770: Adds git-brv

This commit is contained in:
Brice Dutheil 2020-01-14 14:56:18 +01:00
parent 265b03e400
commit 80cd52701e
No known key found for this signature in database
GPG key ID: BF42285FEDEFA803
8 changed files with 259 additions and 0 deletions

View file

@ -5,6 +5,7 @@
- [`git back`](#git-back)
- [`git bug`](#git-featurerefactorbugchore)
- [`git bulk`](#git-bulk)
- [`git brv`](#git-brv)
- [`git changelog`](#git-changelog)
- [`git chore`](#git-featurerefactorbugchore)
- [`git clear`](#git-clear)
@ -331,6 +332,17 @@ $ git bulk --removeworkspace personal
$ git bulk --purge
```
## git brv
Pretty listing of branches sorted by the date of their last commit.
```bash
$ git brv
2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
2020-01-08 master origin/master 265b03e Merge pull request #816 from spacewander/git-sed-pathspec
```
## git repl
Git read-eval-print-loop. Lets you run `git` commands without typing 'git'.

62
bin/git-brv Executable file
View file

@ -0,0 +1,62 @@
#!/usr/bin/env bash
# A sorted prettier branch -vv
if ! (( BASH_VERSINFO[0] > 4 ||
BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 2 )); then
printf >&2 'This script requires bash 4.2 or newer\n'
exit 1
fi
if [[ -t 1 ]]; then
shopt -s checkwinsize
COLUMNS=$(tput cols)
color_branch_local=$(git config --get-color color.branch.local normal)
color_branch_current=$(git config --get-color color.branch.current green)
color_diff_commit=$(git config --get-color color.diff.commit yellow)
color_branch_upstream=$(git config --get-color color.branch.upstream blue)
reset=$(tput sgr0)
fi
declare -A upstream date hash message
eval "$(
git for-each-ref --format='upstream[%(refname:short)]=%(upstream:short)' \
--shell 'refs/heads/**'
)"
for b in "${!upstream[@]}"; do
blen=${#b} ulen=${#upstream[$b]}
(( bwidth = blen > bwidth ? blen : bwidth ))
(( uwidth = ulen > uwidth ? ulen : uwidth ))
IFS=/ read -r 'date[$b]' 'hash[$b]' 'message[$b]' < <(
git log --no-walk=unsorted --format=%ct/%h/%s "$b" --
)
hlen=${#hash[$b]}
(( hwidth = hlen > hwidth ? hlen : hwidth ))
done
mapfile -t ordered < <(
for b in "${!date[@]}"; do
printf '%d\t%s\n' "${date[$b]}" "$b"
done | sort -rn | cut -f2-
)
current=$(git symbolic-ref -q --short HEAD)
for b in "${ordered[@]}"; do
branch_color=$color_branch_local
if [[ $b = "$current" ]]; then
branch_color=$color_branch_current
fi
if [[ -t 1 ]]; then
msg=${message[$b]:0:COLUMNS-bwidth-uwidth-hwidth-14}
else
msg=${message[$b]}
fi
printf '%(%Y-%m-%d)T %s%*s%s %s%*s%s %s%*s%s %s\n' \
"${date[$b]}" \
"$branch_color" "-$bwidth" "$b" "$reset" \
"$color_branch_upstream" "-$uwidth" "${upstream[$b]}" "$reset" \
"$color_diff_commit" "-$hwidth" "${hash[$b]}" "$reset" \
"$msg"
done

View file

@ -456,6 +456,7 @@ zstyle ':completion:*:*:git:*' user-commands $existing_user_commands \
back:'undo and stage latest commits' \
bug:'create bug branch' \
bulk:'run bulk commands' \
brv:'list branches sorted by their last commit date'\
changelog:'generate a changelog report' \
chore:'create chore branch' \
clear-soft:'soft clean up a repository' \

37
man/git-brv.1 Normal file
View file

@ -0,0 +1,37 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-BRV" "1" "January 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-brv\fR \- List branches sorted by their last commit date
.
.SH "SYNOPSIS"
\fBgit\-brv\fR
.
.SH "DESCRIPTION"
Pretty listing of branches sorted by the date of their last commit\.
.
.SH "EXAMPLES"
Simply run \fBgit brv\fR
.
.IP "" 4
.
.nf
$ git brv
2020\-01\-14 adds\-git\-brv fork/adds\-git\-brv 1ca0d76 Fixes #700: Adds git\-brv
2020\-01\-08 master origin/master 265b03e Merge pull request #816 from spacewander/git\-sed\-pathspec
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Øsse <\fIhttps://github\.com/Osse\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>

114
man/git-brv.html Normal file
View file

@ -0,0 +1,114 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' value='text/html;charset=utf8'>
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
<title>git-brv(1) - List branches sorted by their last commit date</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>
<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#EXAMPLES">EXAMPLES</a>
<a href="#AUTHOR">AUTHOR</a>
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>git-brv(1)</li>
<li class='tc'>Git Extras</li>
<li class='tr'>git-brv(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>git-brv</code> - <span class="man-whatis">List branches sorted by their last commit date</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<p><code>git-brv</code></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Pretty listing of branches sorted by the date of their last commit.</p>
<h2 id="EXAMPLES">EXAMPLES</h2>
<p> Simply run <code>git brv</code></p>
<pre><code>$ git brv
2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
2020-01-08 master origin/master 265b03e Merge pull request #816 from spacewander/git-sed-pathspec
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Øsse &lt;<a href="https://github.com/Osse" data-bare-link="true">https://github.com/Osse</a>&gt;</p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p>&lt;<a href="https://github.com/tj/git-extras/issues" data-bare-link="true">https://github.com/tj/git-extras/issues</a>&gt;</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p>&lt;<a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a>&gt;</p>
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>January 2020</li>
<li class='tr'>git-brv(1)</li>
</ol>
</div>
</body>
</html>

31
man/git-brv.md Normal file
View file

@ -0,0 +1,31 @@
git-brv(1) -- List branches sorted by their last commit date
========================================================
## SYNOPSIS
`git-brv`
## DESCRIPTION
Pretty listing of branches sorted by the date of their last commit.
## EXAMPLES
Simply run `git brv`
$ git brv
2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
2020-01-08 master origin/master 265b03e Merge pull request #816 from spacewander/git-sed-pathspec
## AUTHOR
Written by Øsse &lt;<https://github.com/Osse>&gt;
## REPORTING BUGS
&lt;<https://github.com/tj/git-extras/issues>&gt;
## SEE ALSO
&lt;<https://github.com/tj/git-extras>&gt;

View file

@ -25,6 +25,7 @@ git-extras(1) -- Awesome GIT utilities
- **git-archive-file(1)** Export the current HEAD of the git repository to an archive
- **git-authors(1)** Generate authors report
- **git-back(1)** Undo and Stage latest commits
- **git-brv(1)** List branches sorted by their last commit date
- **git-bug(1)** Create bug branch
- **git-bulk(1)** Run git commands on multiple repositories
- **git-changelog(1)** Generate a changelog report

View file

@ -3,6 +3,7 @@ git-alias(1) git-alias
git-archive-file(1) git-archive-file
git-authors(1) git-authors
git-back(1) git-back
git-brv(1) git-brv
git-bug(1) git-bug
git-bulk(1) git-bulk
git-changelog(1) git-changelog