Update pull-repo.ps1

This commit is contained in:
Markus Fleschutz 2022-10-31 11:14:53 +01:00
parent 844996442b
commit 824a70d9c9

View File

@ -1,10 +1,10 @@
<# <#
.SYNOPSIS .SYNOPSIS
Pulls Git repository updates Pulls repository updates
.DESCRIPTION .DESCRIPTION
This PowerShell script pulls updates for a local Git repository (including submodules). This PowerShell script pulls updates for a local Git repository (including submodules).
.PARAMETER RepoDir .PARAMETER RepoDir
Specifies the path to the Git repository Specifies the file path to the local Git repository (default is working directory)
.EXAMPLE .EXAMPLE
PS> ./pull-repo PS> ./pull-repo
.LINK .LINK
@ -18,27 +18,27 @@ param([string]$RepoDir = "$PWD")
try { try {
$StopWatch = [system.diagnostics.stopwatch]::startNew() $StopWatch = [system.diagnostics.stopwatch]::startNew()
"⏳ Step 1/4 - Searching for Git executable..." Write-Host "⏳ (1/4) 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" }
$RepoDirName = (Get-Item "$RepoDir").Name $RepoDirName = (Get-Item "$RepoDir").Name
"Step 2/4 - Checking folder 📂$RepoDirName..." "(2/4) Checking Git repository 📂$RepoDirName... "
if (-not(Test-Path "$RepoDir" -pathType container)) { throw "Can't access folder: $RepoDir" } if (-not(Test-Path "$RepoDir" -pathType container)) { throw "Can't access folder: $RepoDir" }
$Result = (git -C "$RepoDir" status) $Result = (git -C "$RepoDir" status)
if ("$Result" -match "HEAD detached at ") { throw "Not on a branch, so nothing to pull (in detached HEAD state)" } if ("$Result" -match "HEAD detached at ") { throw "Currently in detached HEAD state (not on a branch!), so nothing to pull" }
"Step 3/4 - Pulling updates..." "(3/4) Pulling updates..."
& git -C "$RepoDir" pull --recurse-submodules --jobs=4 & git -C "$RepoDir" pull --recurse-submodules=yes
if ($lastExitCode -ne "0") { throw "'git pull' failed with exit code $lastExitCode" } if ($lastExitCode -ne "0") { throw "'git pull' failed with exit code $lastExitCode" }
"Step 4/4 - Updating submodules... " "(4/4) Updating submodules... "
& git -C "$RepoDir" submodule update --init --recursive & git -C "$RepoDir" 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
"✔️ pulled updates for 📂$RepoDirName repo in $Elapsed sec" "✔️ updated 📂$RepoDirName repository 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])"