From 7bc7da1b3b39dc8a459ff518e56acec2e5086ea9 Mon Sep 17 00:00:00 2001 From: Markus Fleschutz Date: Fri, 25 Oct 2024 15:03:50 +0200 Subject: [PATCH] Added list-old-branches.ps1 --- scripts/list-old-branches.ps1 | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 scripts/list-old-branches.ps1 diff --git a/scripts/list-old-branches.ps1 b/scripts/list-old-branches.ps1 new file mode 100644 index 00000000..6623874d --- /dev/null +++ b/scripts/list-old-branches.ps1 @@ -0,0 +1,41 @@ +<# +.SYNOPSIS + Lists old Git branches +.DESCRIPTION + This PowerShell script lists branches in a Git repository matching: (1) search pattern, (2) already merged, (3) older than 2024 +.PARAMETER pathToRepo + Specifies the path to the Git repository (current working directory by default) +.EXAMPLE + PS> ./list-old-branches.ps1 C:\Repos\UFA +q#> + +param([string]$pathToRepo = "$PWD", [string]$searchPattern = "origin/dev/*") + +try { + "(1/3) Searching for Git executable... " + & git --version + if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" } + + "(2/3) Checking local repository..." + if (!(Test-Path "$pathToRepo" -pathType container)) { throw "Can't access repo folder: $pathToRepo" } + + "(3/3) Querying already merged branches with name '$searchPattern'..." + $branches = $(git -C "$pathToRepo" branch --list --remotes --no-color --no-column --merged HEAD "$searchPattern") + if ($lastExitCode -ne "0") { throw "'git branch --list' failed" } + + "" + "LAST COMMIT DATE BRANCH NAME" + "---------------- -----------" + foreach($branch in $branches) { + $branchName = $branch.Trim() # remove leading spaces + + $dateOfLastCommit = (git -C "$pathToRepo" log -1 --format=%cs $branchName) + if ($dateOfLastCommit -like "2024-*") { continue} # too young + + "$dateOfLastCommit $branchName" + } + exit 0 # success +} catch { + Write-Error "Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" + exit 1 +}