Git:Branch Author List ====================== :author: Aaron Ball :email: nullspoon@iohq.net == {doctitle} Whether your team uses the long-running, topic, or any other multi-branch https://git-scm.herokuapp.com/book/en/v2/Git-Branching-Branching-Workflows[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 // vim: set syntax=asciidoc: