Last active
December 2, 2024 11:13
-
-
Save mroderick/4472d26c77ca9b7febd0 to your computer and use it in GitHub Desktop.
A small script to find stale branches
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# This is a very naive script, it doesn't do grouping and returns all branches | |
# I only really care about branches that have not seen commits in two months | |
# | |
# I am hoping to find some time to write a tool that can output these reports for me | |
# In the meantime, I am using this | |
echo "Merged branches" | |
for branch in `git branch -r --merged | grep -v HEAD`;do echo -e `git log --no-merges -n 1 --format="%ci, %cr, %an, %ae, " $branch | head -n 1` \\t$branch; done | sort -r | |
echo "" | |
echo "Not merged branches" | |
for branch in `git branch -r --no-merged | grep -v HEAD`;do echo -e `git log --no-merges -n 1 --format="%ci, %cr, %an, %ae, " $branch | head -n 1` \\t$branch; done | sort -r |
@trntsmn - The term 'grep' is not recognized as a name of a cmdlet, function, script file, or executable program.
=D
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In order to filter with
awk
keeping just branches that have not seen commits in two monthsit would suffice prepending %ct (committer date, UNIX timestamp) to the git log fields
then filter and strip the added prefix
Since I want to produce a CSV I did it as follows (for unmerged branches)
It can clearly be optimized based on needs, moving sort after filter and so on
PS: please note here I added comments within ` (backticks) for readability, so in turn I had to replace subshell backticks with the $() syntax.
Also note that this approach leverages some additional comands, namely awk, date and sed