<# .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 }