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
Create a New Git Branch
Create a new Git branch
.DESCRIPTION
This PowerShell script creates and switches to a new branch in a Git repository.
.PARAMETER BranchName
Specifies the branch name (or needs to be entered)
Specifies the new branch name
.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
PS> ./new-branch test123
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz / License: CC0
Author: Markus Fleschutz | License: CC0
#>
param([string]$BranchName = "", [string]$RepoDir = "$PWD")
@ -22,29 +22,29 @@ try {
$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" }
set-location "$RepoDir"
$Null = (git --version)
& git --version
if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" }
$RepoDirName = (get-item "$RepoDir").Name
"⏳ Step 2/4: Fetching updates..."
& git fetch --all --recurse-submodules --prune --prune-tags --force
"⏳ Step 2/5: Fetching updates..."
& git -C "$RepoDir" fetch --all --recurse-submodules --prune --prune-tags --force
if ($lastExitCode -ne "0") { throw "'git fetch' failed" }
"⏳ Step 3/4: Checkout and push new branch..."
& git checkout -b "$BranchName"
"⏳ Step 3/5: Creating new branch '$BranchName'..."
& git -C "$RepoDir" checkout -b "$BranchName"
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" }
"⏳ Step 4/4: Updating submodules..."
& git submodule update --init --recursive
"⏳ Step 5/5: Updating submodules..."
& git -C "$RepoDir" submodule update --init --recursive
if ($lastExitCode -ne "0") { throw "'git submodule update' failed" }
$RepoDirName = (get-item "$RepoDir").Name
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✔️ created new branch '$BranchName' in Git repository 📂$RepoDirName in $Elapsed sec"
exit 0 # success