Update new-branch.ps1

This commit is contained in:
Markus Fleschutz 2022-03-28 16:21:19 +02:00
parent 6bbe1bf59d
commit e6110bcdd8

View File

@ -1,18 +1,18 @@
<# <#
.SYNOPSIS .SYNOPSIS
Create a New Git Branch Create a new Git branch
.DESCRIPTION .DESCRIPTION
This PowerShell script creates and switches to a new branch in a Git repository. This PowerShell script creates and switches to a new branch in a Git repository.
.PARAMETER BranchName .PARAMETER BranchName
Specifies the branch name (or needs to be entered) Specifies the new branch name
.PARAMETER RepoDir .PARAMETER RepoDir
Specifies the path to the Git repository (or 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 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]$BranchName = "", [string]$RepoDir = "$PWD") param([string]$BranchName = "", [string]$RepoDir = "$PWD")
@ -22,29 +22,29 @@ try {
$StopWatch = [system.diagnostics.stopwatch]::startNew() $StopWatch = [system.diagnostics.stopwatch]::startNew()
"⏳ Step 1/4: Checking requirements... " "⏳ Step 1/5: Checking requirements... "
if (-not(test-path "$RepoDir" -pathType container)) { throw "Can't access directory: $RepoDir" } if (-not(test-path "$RepoDir" -pathType container)) { throw "Can't access directory: $RepoDir" }
set-location "$RepoDir"
$Null = (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" }
$RepoDirName = (get-item "$RepoDir").Name "⏳ Step 2/5: Fetching updates..."
"⏳ Step 2/4: Fetching updates..." & git -C "$RepoDir" fetch --all --recurse-submodules --prune --prune-tags --force
& git fetch --all --recurse-submodules --prune --prune-tags --force
if ($lastExitCode -ne "0") { throw "'git fetch' failed" } if ($lastExitCode -ne "0") { throw "'git fetch' failed" }
"⏳ Step 3/4: Checkout and push new branch..." "⏳ Step 3/5: Creating new branch '$BranchName'..."
& git checkout -b "$BranchName" & git -C "$RepoDir" checkout -b "$BranchName"
if ($lastExitCode -ne "0") { throw "'git checkout -b $BranchName' failed" } if ($lastExitCode -ne "0") { throw "'git checkout -b $BranchName' failed" }
& git push origin "$BranchName" "⏳ Step 4/5: Pushing updates..."
& git -C "$RepoDir" push origin "$BranchName"
if ($lastExitCode -ne "0") { throw "'git push origin $BranchName' failed" } if ($lastExitCode -ne "0") { throw "'git push origin $BranchName' failed" }
"⏳ Step 4/4: Updating submodules..." "⏳ Step 5/5: Updating submodules..."
& git submodule update --init --recursive & git -C "$RepoDir" submodule update --init --recursive
if ($lastExitCode -ne "0") { throw "'git submodule update' failed" } if ($lastExitCode -ne "0") { throw "'git submodule update' failed" }
$RepoDirName = (get-item "$RepoDir").Name
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds [int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✔️ created new branch '$BranchName' in Git repository 📂$RepoDirName in $Elapsed sec" "✔️ created new branch '$BranchName' in Git repository 📂$RepoDirName in $Elapsed sec"
exit 0 # success exit 0 # success