Update pull-repo.ps1

This commit is contained in:
Markus Fleschutz 2022-03-28 16:11:13 +02:00
parent 2ff3b1e4a1
commit 6bbe1bf59d

View File

@ -1,16 +1,16 @@
<# <#
.SYNOPSIS .SYNOPSIS
Pulls updates for a Git repository Pulls repository updates
.DESCRIPTION .DESCRIPTION
This script pulls updates for a local Git repository (including submodules). This PowerShell script pulls updates for the given local Git repository (including submodules).
.PARAMETER RepoDir .PARAMETER RepoDir
Specifies the path to the Git repository Specifies the path to the Git repository
.EXAMPLE .EXAMPLE
PS> ./pull-repo C:\MyRepo PS> ./pull-repo C:\MyRepo
.NOTES
Author: Markus Fleschutz / License: CC0
.LINK .LINK
https://github.com/fleschutz/PowerShell https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#> #>
param([string]$RepoDir = "$PWD") param([string]$RepoDir = "$PWD")
@ -20,9 +20,8 @@ try {
"⏳ Step 1/3: Checking requirements... " "⏳ Step 1/3: 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"
$Result = (git status) $Result = (git -C "$RepoDir" status)
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" }
if ("$Result" -match "HEAD detached at ") { if ("$Result" -match "HEAD detached at ") {
write-warning "Not on a branch, so nothing to pull (in detached HEAD state)" write-warning "Not on a branch, so nothing to pull (in detached HEAD state)"
@ -30,14 +29,14 @@ try {
} }
"⏳ Step 2/3: Pulling updates... " "⏳ Step 2/3: Pulling updates... "
& git pull --recurse-submodules --jobs=4 & git -C "$RepoDir" pull --recurse-submodules --jobs=4
if ($lastExitCode -ne "0") { throw "'git pull' failed" } if ($lastExitCode -ne "0") { throw "'git pull' failed" }
"⏳ Step 3/3: Updating submodules... " "⏳ Step 3/3: 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 $RepoDirName = (Get-Item "$RepoDir").Name
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds [int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✔️ pulled updates for Git repository 📂$RepoDirName in $Elapsed sec" "✔️ pulled updates for Git repository 📂$RepoDirName in $Elapsed sec"
exit 0 # success exit 0 # success