Updated fetch-repo.ps1

This commit is contained in:
Markus Fleschutz 2024-09-17 07:30:38 +02:00
parent fb0c4e8783
commit 4185bb8f50

View File

@ -3,39 +3,39 @@
Fetches updates into a Git repo Fetches updates into a Git repo
.DESCRIPTION .DESCRIPTION
This PowerShell script fetches remote updates into a local Git repository (including submodules). This PowerShell script fetches remote updates into a local Git repository (including submodules).
.PARAMETER RepoDir .PARAMETER path
Specifies the file path to the local Git repository (default is working directory). Specifies the file path to the local Git repository (default is working directory).
.EXAMPLE .EXAMPLE
PS> ./fetch-repo.ps1 PS> ./fetch-repo.ps1
(1/3) Searching for Git executable... git version 2.41.0.windows.3 (1/3) Searching for Git executable... git version 2.41.0.windows.3
(2/3) Checking local repository... C:\Repos\rust (2/3) Checking local repository... C:\Repos\rust
(3/3) Fetching updates... (3/3) Fetching updates (including submodules)...
Fetched updates into 📂rust repo in 2s. Updates fetched into 📂rust repo in 2s.
.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]$pathToRepo = "$PWD") param([string]$path = "$PWD")
try { try {
$stopWatch = [system.diagnostics.stopwatch]::startNew() $stopWatch = [system.diagnostics.stopwatch]::startNew()
Write-Host "⏳ (1/3) Searching for Git executable... " -noNewline Write-Host "⏳ (1/3) 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/3) Checking local repository... $pathToRepo" Write-Host "⏳ (2/3) Checking local repository... $path"
if (!(Test-Path "$pathToRepo" -pathType container)) { throw "Can't access folder: $pathToRepo" } if (!(Test-Path "$path" -pathType container)) { throw "Can't access folder: $path" }
$repoDirName = (Get-Item "$pathToRepo").Name $repoDirName = (Get-Item "$path").Name
Write-Host "⏳ (3/3) Fetching updates..." Write-Host "⏳ (3/3) Fetching updates (including submodules)..."
& git -C "$pathToRepo" fetch --all --recurse-submodules --tags --prune --prune-tags --force --quiet & git -C "$path" fetch --all --recurse-submodules --tags --prune --prune-tags --force --quiet
if ($lastExitCode -ne "0") { throw "'git fetch --all' failed with exit code $lastExitCode" } if ($lastExitCode -ne "0") { throw "'git fetch --all' failed with exit code $lastExitCode" }
[int]$elapsed = $stopWatch.Elapsed.TotalSeconds [int]$elapsed = $stopWatch.Elapsed.TotalSeconds
"✔️ Fetched updates into 📂$repoDirName repo in $($elapsed)s." "✔️ Updates fetched into 📂$repoDirName repo in $($elapsed)s."
exit 0 # success exit 0 # success
} catch { } catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"