Update new-branch.ps1

This commit is contained in:
Markus Fleschutz 2023-06-22 08:43:11 +02:00
parent 82f25f34b9
commit 821372c229

View File

@ -3,54 +3,54 @@
Creates a new Git branch Creates a new Git branch
.DESCRIPTION .DESCRIPTION
This PowerShell script creates a new branch in a Git repository and switches to it. This PowerShell script creates a new branch in a Git repository and switches to it.
.PARAMETER NewBranchName .PARAMETER newBranch
Specifies the new branch name Specifies the new branch name
.PARAMETER RepoDir .PARAMETER repoPath
Specifies the path to the Git repository (current working directory per default) Specifies the path to the Git repository (current working directory per default)
.EXAMPLE .EXAMPLE
PS> ./new-branch test123 PS> ./new-branch.ps1 test123
.LINK .LINK
https://github.com/fleschutz/PowerShell https://github.com/fleschutz/PowerShell
.NOTES .NOTES
Author: Markus Fleschutz | License: CC0 Author: Markus Fleschutz | License: CC0
#> #>
param([string]$NewBranchName = "", [string]$RepoDir = "$PWD") param([string]$newBranch = "", [string]$repoPath = "$PWD")
try { try {
if ($NewBranchName -eq "") { $NewBranchName = Read-Host "Enter new branch name" } if ($newBranch -eq "") { $newBranch = Read-Host "Enter the new branch name" }
$StopWatch = [system.diagnostics.stopwatch]::startNew() $stopWatch = [system.diagnostics.stopwatch]::startNew()
Write-Host "⏳ (1/6) Searching for Git executable... " -noNewline Write-Host "⏳ (1/6) Searching for Git executable... " -noNewline
& git --version & git --version
if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" } if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" }
Write-Host "⏳ (2/6) Checking repository... 📂$RepoDir" Write-Host "⏳ (2/6) Checking local repository... 📂$repoPath"
if (-not(Test-Path "$RepoDir" -pathType container)) { throw "Can't access directory: $RepoDir" } if (-not(Test-Path "$repoPath" -pathType container)) { throw "Can't access directory: $repoPath" }
$RepoDirName = (Get-Item "$RepoDir").Name $repoPathName = (Get-Item "$repoPath").Name
"⏳ (3/6) Fetching latest updates..." "⏳ (3/6) Fetching latest updates..."
& git -C "$RepoDir" fetch --all --recurse-submodules --prune --prune-tags --force & git -C "$repoPath" fetch --all --recurse-submodules --prune --prune-tags --force
if ($lastExitCode -ne "0") { throw "'git fetch' failed with exit code $lastExitCode" } if ($lastExitCode -ne "0") { throw "'git fetch' failed with exit code $lastExitCode" }
$CurrentBranchName = (git -C "$RepoDir" rev-parse --abbrev-ref HEAD) $currentBranch = (git -C "$repoPath" rev-parse --abbrev-ref HEAD)
if ($lastExitCode -ne "0") { throw "'git rev-parse' failed with exit code $lastExitCode" } if ($lastExitCode -ne "0") { throw "'git rev-parse' failed with exit code $lastExitCode" }
"⏳ (4/6) Creating branch..." "⏳ (4/6) Creating branch..."
& git -C "$RepoDir" checkout -b "$NewBranchName" & git -C "$repoPath" checkout -b "$newBranch"
if ($lastExitCode -ne "0") { throw "'git checkout -b $NewBranchName' failed with exit code $lastExitCode" } if ($lastExitCode -ne "0") { throw "'git checkout -b $newBranch' failed with exit code $lastExitCode" }
"⏳ (5/6) Pushing updates..." "⏳ (5/6) Pushing updates..."
& git -C "$RepoDir" push origin "$NewBranchName" & git -C "$repoPath" push origin "$newBranch"
if ($lastExitCode -ne "0") { throw "'git push origin $NewBranchName' failed with exit code $lastExitCode" } if ($lastExitCode -ne "0") { throw "'git push origin $newBranch' failed with exit code $lastExitCode" }
"⏳ (6/6) Updating submodules..." "⏳ (6/6) Updating submodules..."
& git -C "$RepoDir" submodule update --init --recursive & git -C "$repoPath" submodule update --init --recursive
if ($lastExitCode -ne "0") { throw "'git submodule update' failed with exit code $lastExitCode" } if ($lastExitCode -ne "0") { throw "'git submodule update' failed with exit code $lastExitCode" }
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds [int]$elapsed = $stopWatch.Elapsed.TotalSeconds
"✔️ created branch '$NewBranchName' in repo 📂$RepoDirName (based on '$CurrentBranchName') in $Elapsed sec" "✔️ created branch '$newBranch' based on '$currentBranch' in repo 📂$repoPathName in $elapsed sec"
exit 0 # success exit 0 # success
} catch { } catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"