Skip to content

List-OldBranches

Lists old Git branches

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 {
	"?? ERROR: $($Error[0]) (script line $($_.InvocationInfo.ScriptLineNumber))"
	exit 1
}

Specifies the path to the Git repository (current working directory by default)

An interactive directory of PowerShell scripts.