Most of the customer-projects I work on use a modular repository system. That is to see, each discrete service-element is developed in a purpose-specific repository. Further, most of the customer-projects I work on use a fork-and-branch workflow. As such, the "upstream" repositories tend to stay fairly "clean" of stale branch content.
Recently, I was moved to a project where the customer uses a (ginormous) mono-repo design for their repository and uses a simple, wholly branch-based workflow. As team members are assigned Jira tickets, they open a branch (almost always) off the project-trunk. Once they complete the modifications within their branch, the submit a merge-request back and, if accepted, their branch gets deleted …assuming the submitter has ticked the "Delete source branch when merge request is accepted" checkbox in their MR.
Unfortunately, not every branch actually ends up getting merged and, even more-frequently, not every MR submitter ticks the delete-on-accept checkbox in their MR. So, as the project goes on, there gets to be more and more stale branches hanging around.
I'm a bit of a neat-freak when it comes to what I like to see in the output of any given tool I use. It's why a prefer when tools offer good output-filtering …and get cranky when, as part of "improving" an interface, output-filtering is adversely impacted (I'm glaring at you, Amazon, and your "improvements" to the various service-components' web-consoles).
As a result of this, when I join a new project and see a "cluttered" project-root, I like to see, "can this mess be cleaned up". A quick way to do that is check how old the various branches are as, typically, if a branch has been sitting out there with no activity on it for two or more months, it's probably stale. One way to check for such staleness is a quick shell one-liner:
( for branch in $( git branch -r | grep -v HEAD ) do echo -e $( git show --format="%ci|%cr|%cN|" $branch | head -n 1 ) $branch done | sort ) | \ sed -e 's/|\s+/|/g' |Whata the above does is iterates across all branches, finding the most-recent commit in the branch, then formats each line of the output into a |-delimited string. Since the commit-date (in ISO 8601 format) is the first column of each line, the sort causes all of the output-lines to be displayed in ascending recency-order. The `sed` line is a bit of a shim – ensuring that extraneous white-spaces afer the |-delimiter are removed. The `awk` statement just ensures that the output has a nice, aligned columnar display. For example:awk -F '|' '{ printf ("%s\t%-20s\t%-20s\t%s\n",$1,$2,$3,$4) }'
2021-02-16 20:21:23 +0000 1 year, 3 months ago Billy Madison origin/PROJ-9388 2021-04-14 13:09:26 -0400 1 year, 1 month ago Art Donovan origin/PROJ-11000 2021-06-04 12:57:35 +0000 12 months ago Billy Madison origin/PROJ-8538 2021-06-16 11:37:18 -0400 11 months ago William Gibson origin/PROJ-11649 2021-06-16 15:43:15 -0400 11 months ago William Gibson origin/PROJ-11364 2021-07-16 17:39:23 -0400 10 months ago William Gibson origin/PROJ-11767 2021-09-02 16:54:02 -0400 9 months ago Art Donovan origin/PROJ-13029 2021-09-22 14:07:16 +0000 8 months ago David Graham origin/PROJ-13023 2021-10-04 16:55:57 -0400 8 months ago David Morgan origin/PROJ-13259 2021-10-19 16:19:54 +0000 7 months ago David Graham origin/PROJ-13214 2021-12-06 08:59:48 -0500 6 months ago Art Donovan origin/PROJ-14228 2022-01-05 18:22:36 +0000 5 months ago David Graham origin/PROJ-13228 2022-01-25 20:24:59 +0000 4 months ago David Graham origin/PROJ-14447 2022-04-05 18:18:48 +0000 6 weeks ago Susan McDonald origin/PROJ-15004 2022-04-06 14:18:16 +0000 6 weeks ago Tracy Morgan origin/PROJ-16375 2022-05-06 14:49:54 +0000 2 weeks ago Dee Madison origin/PROJ-16641 2022-05-06 14:49:54 +0000 2 weeks ago Dee Madison origin/PROJ-16666 2022-05-13 18:34:21 +0000 7 days ago Alexis Veracruz origin/PROJ-16507 2022-05-13 21:42:16 +0000 7 days ago Gomez Addams origin/PROJ-16653 2022-05-18 15:52:04 +0000 2 days ago Ronald Johnson origin/PROJ-16740 2022-05-19 17:18:44 +0000 19 hours ago Thomas H Jones II origin/master 2022-05-19 17:47:28 +0000 19 hours ago Thomas H Jones II origin/PROJ-16874 2022-05-19 20:57:26 +0000 16 hours ago Kaiya Nubbins origin/PROJ-16631As you can see, there's clearly some cleanup to be done in this project.
No comments:
Post a Comment