my .gitconfig
Shell Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin misc fiddling Jan 4, 2017
LICENSE
README.md
gitattributes
gitconfig
install.sh convience install.sh for test/dev Jun 5, 2016

README.md

my .gitconfig, see gitconfig for inline comments.

Some are stuff I use a lot. A lot are things I use occasionally, so this just documents them.

General purpose tools

git brage

Show a colorful list of git branches sorted by last commit date.

Think of it as the 'ls -lart' of 'git branch'. Supports 'git branch' options (ala, '-a, '-r', etc)

git checkout-tag

Checkout a tag "FOO-1-0" into a branch called "FOO-1-0-branch".

$ git checkout-tag FOO-1-0

git stat

Attempts to find untracked files that are likely to be candidates to be committed.

This uses 'ack' to build a list of things that look like source code. The idea is to show a more focused list of candidates that 'git status -u' output.

git unpushed

Alias for 'git cherry -v'. Shows a summary of commits in the local branch that have not been pushed yet.

git tagsort

List tags sorted by a version sort. Needs GNU sort (it uses 'sort --version-sort'). Useful if you tag releases with version info.

git tagage

List tags sorted by the date they were created/tagged, ie, 'taggerdate'. Useful if you work on multiple releases and are looking for 'the thing we just released', which may not be the highest version (as used in tagsort).

git cloneurl

Show the repo url of 'origin'.

16:34 $ git cloneurl
git://github.com/ansible/ansible.git

git find

Search for a pattern in branch names, file names, or file contents. A combo of 'find', 'git grep' plus branch search.

16:50 $ git find brage
  remotes/origin/add_dash_v_to_brage
bin/git-brage
bin/git-brage:    echo "git-brage [-v|--verbose] [extra for-each-ref options]"
gitconfig:    # brage = "!f() { git for-each-ref --sort=committerdate refs/heads $1  --format=\"%(refname:short)\" ; }; g() { for C in $(f $1) ; do git show -s --pretty=format:\"%Cgreen%ci %Cblue%cr%Creset  $C\" \"$C\" -- ; done; }; g "
gitconfig:    brageall = !git brage refs/remotes
gitconfig:    # TODO: make these options of 'git-brage' script
gitconfig:    tbrage = "!f() { git for-each-ref --sort=committerdate refs/heads $1  --format=\"%(refname:short)\" ; }; g() { for C in $(f $1) ; do UP=$(git rev-parse --symbolic-full-name --abbrev-ref $C@{upstream} 2> /dev/null); TRACKING=$?; UP=\"-> $UP \"; if [ $TRACKING -ne 0 ] ; then UP=\"\"; fi;  git show -s --pretty=format:\"%Cgreen%ci %Cblue%cr%Creset  $C $UP\" \"$C\" -- ; done; }; g "
gitconfig:    tbrageall = !git tbrage refs/remotes

git churn

List the files in the repo with the most changes.

git whatadded $FILE

Show the commit that first added $FILE into the repo

git list-by-type

Show a summary of files in the repo grouped by file extension.

git ls-github

Show file/repo contents in a format similar to the github tree view.

16:22 $ git ls-github
LICENSE                1 year, 7 months ago Create LICENSE [Adrian Likins]
README.md              2 hours ago  README -> README.md [Adrian Likins]
gitattributes          3 years, 11 months ago Add config options to use po_diff/pot_diff for po files [Adrian Likins]
gitconfig              2 hours ago  Add epydoc diff viewer config [Adrian Likins]

git burners

Provide a list of committers sorted by the number of lines of code committed by each.

Non general purpose tools

Note: Some of the tools here are pretty specific to my workflow, the tools I use, and the projects I work on. So not everything here is general purpose.

git-checkcommits

install git-checkcommits to somewhere in the PATH. usage is "git checkcommits master feature" which will show commits in feature that don't seem to be in master. It's based on comparing the subject line, and try's to ignore subjects that start with "12345:" (how we indicate bug id's).

git-showbugs

git-showbugs also needs to go in PATH, and requires python-bugzilla setup. It looks for the same bug id as above.

git-bugbyrelease shows bugs fixed in each release. This is kind of specific to http://http://rm-rf.ca/tito based builds.

License

If not otherwise specified, the License here is GPLv2 or later. But check the source/comments about each tool to verify. For the most part tools borrowed from elsewhere will have comments pointing to the original source. In those cases, the license chosen by the original author would apply.