PowerShell/Scripts/remove-tag.ps1

52 lines
1.6 KiB
PowerShell
Raw Normal View History

2021-09-27 10:38:12 +02:00
<#
2021-09-06 13:48:26 +02:00
.SYNOPSIS
Removes a Git tag (locally, remote, or both)
2021-10-04 21:29:23 +02:00
.DESCRIPTION
2021-10-16 16:50:10 +02:00
This script removes a Git tag, either locally, remote, or both.
.PARAMETER TagName
Specifies the Git tag name
.PARAMETER Mode
Specifies either locally, remote, or both
.PARAMETER RepoDir
Specifies the path to the Git repository
2021-09-06 13:48:26 +02:00
.EXAMPLE
2021-09-24 17:19:49 +02:00
PS> ./remove-tag v1.7 locally
2021-09-06 13:48:26 +02:00
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz · License: CC0
#>
param([string]$TagName = "", [string]$Mode = "", [string]$RepoDir = "$PWD")
try {
if ($TagName -eq "") { $TagName = read-host "Enter new tag name" }
if ($Mode -eq "") { $Mode = read-host "Remove the tag locally, remote, or both" }
$StopWatch = [system.diagnostics.stopwatch]::startNew()
if (-not(test-path "$RepoDir" -pathType container)) { throw "Can't access directory: $RepoDir" }
$Null = (git --version)
if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" }
if (($Mode -eq "locally") -or ($Mode -eq "both")) {
"Removing local tag..."
& git -C "$RepoDir" tag --delete $TagName
if ($lastExitCode -ne "0") { throw "'git tag --delete' failed" }
}
if (($Mode -eq "remote") -or ($Mode -eq "both")) {
"Removing remote tag..."
& git -C "$RepoDir" push origin :refs/tags/$TagName
if ($lastExitCode -ne "0") { throw "'git push origin' failed" }
}
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✔️ removed tag '$TagName' in $Elapsed sec"
2021-09-27 10:09:45 +02:00
exit 0 # success
2021-09-06 13:48:26 +02:00
} catch {
2021-09-16 20:19:10 +02:00
"⚠️ Error: $($Error[0]) ($($MyInvocation.MyCommand.Name):$($_.InvocationInfo.ScriptLineNumber))"
2021-09-06 13:48:26 +02:00
exit 1
}