Git:Branch Author List

Whether your team uses the long-running, topic, or any other multi-branch branching workflows, you usually end up with many server-side "abandonded" branches that haven’t been commited to in a while, especially when the team is relatively agile. While a cluttered server-side branch set it isn’t always a pressing issue, the difficulty in cleanup can make it be a long-standing issue; one that gets worse and worse as time goes by.

Enter, the git-branch-authors.sh script.

I wrote this script because my team has the problem I described above. To preface the source code though, git doesn’t track who created a branch. It just tracks at which commit reference the branch was forked from its parent, which means we can’t actually tell who created a given branch. However, since a branch is usually commited to by its creator, we can make an educated guess by using the name of the person who commited most recently. At the very least, the most recent author will give a point of contact to help find out information about the branch.

#!/usr/bin/env bash

# Verify we're inside a git repo
git status 2>/dev/null 1>/dev/null
if [[ $? != 0 ]]; then
  echo "Error: '$(pwd)' is not a epository."
  exit 1
fi

# Set the column headers
out='Unix Timestamp~Branch~Timestamp~Commit~Author~Relative Time'

# Parse the branches
for i in $(git branch -r | grep -v HEAD); do
  format="unix:%at~${i}~%ai~%h~%an <%ae>~commited %ar"
  cmd=$(git show "${i}" --format="${format}" | head -n 1)
  out=${out}'\n'${cmd}
done

# Output the goodness
echo -e ${out} | sort -r -n | column -s '~' -t

To use this, simply save it to your ~/bin directory (ensure your PATH variable has \~/bin in it or that won’t work) and chmod \+x ~/bin/git-branch-authors.sh.

Category:Bash Category:Scripts Category:Git