PowerShell/Docs/remove-tag.md

109 lines
3.0 KiB
Markdown
Raw Normal View History

2022-12-04 10:40:18 +01:00
## The *remove-tag.ps1* Script
2021-11-08 21:36:42 +01:00
2022-02-10 09:01:07 +01:00
This PowerShell script removes a Git tag, either locally, remote, or both.
2021-11-08 21:36:42 +01:00
## Parameters
```powershell
2021-12-09 16:19:09 +01:00
remove-tag.ps1 [[-TagName] <String>] [[-Mode] <String>] [[-RepoDir] <String>] [<CommonParameters>]
2021-11-08 21:36:42 +01:00
-TagName <String>
Specifies the Git tag name
Required? false
Position? 1
Default value
Accept pipeline input? false
Accept wildcard characters? false
-Mode <String>
Specifies either locally, remote, or both
Required? false
Position? 2
Default value
Accept pipeline input? false
Accept wildcard characters? false
-RepoDir <String>
Specifies the path to the Git repository
Required? false
Position? 3
Default value "$PWD"
Accept pipeline input? false
Accept wildcard characters? false
[<CommonParameters>]
This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction,
WarningVariable, OutBuffer, PipelineVariable, and OutVariable.
```
## Example
```powershell
PS> ./remove-tag v1.7 locally
```
## Notes
2022-11-17 19:46:02 +01:00
Author: Markus Fleschutz | License: CC0
2021-11-08 21:36:42 +01:00
## Related Links
https://github.com/fleschutz/PowerShell
2022-11-17 20:02:26 +01:00
## Source Code
2022-11-17 20:05:34 +01:00
```powershell
2022-11-17 20:02:26 +01:00
<#
.SYNOPSIS
Removes a Git tag (locally, remote, or both)
.DESCRIPTION
This PowerShell 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
.EXAMPLE
PS> ./remove-tag v1.7 locally
.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 with exit code $lastExitCode" }
}
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 with exit code $lastExitCode" }
}
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✔️ removed tag '$TagName' in $Elapsed sec"
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}
2022-11-17 20:05:34 +01:00
```
2022-11-17 20:02:26 +01:00
2021-11-08 21:36:42 +01:00
*Generated by convert-ps2md.ps1 using the comment-based help of remove-tag.ps1*