Updated sync-repo.ps1

This commit is contained in:
Markus Fleschutz 2024-10-28 13:46:33 +01:00
parent 13695d0061
commit 0f4ff81b09

View File

@ -4,14 +4,14 @@
.DESCRIPTION
This PowerShell script synchronizes a local Git repository by pull and push (including submodules).
.PARAMETER path
Specifies the path to the Git repository
Specifies the path to the Git repository (current working directory by default)
.EXAMPLE
PS> ./sync-repo.ps1 C:\MyRepo
PS> ./sync-repo.ps1 C:\Repos\curl
(1/4) Searching for Git executable... git version 2.42.0.windows.1
(2/4) Checking local repository... 📂C:\MyRepo
(2/4) Checking local repository... C:\Repos\curl
(3/4) Pulling remote updates... Already up to date.
(4/4) Pushing local updates... Everything up-to-date
Synced repo 📂MyRepo in 5 sec
Synced the 📂curl repo in 5s.
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
@ -21,26 +21,26 @@
param([string]$path = "$PWD")
try {
$StopWatch = [system.diagnostics.stopwatch]::startNew()
$stopWatch = [system.diagnostics.stopwatch]::startNew()
Write-Host "⏳ (1/4) Searching for Git executable... " -noNewline
& git --version
if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" }
Write-Host "⏳ (2/4) Checking local repository... 📂$path"
Write-Host "⏳ (2/4) Checking local repository... $path"
if (!(Test-Path "$path" -pathType container)) { throw "Can't access folder: $path" }
$pathName = (Get-Item "$path").Name
Write-Host "⏳ (3/4) Pulling remote updates... " -noNewline
& git -C "$Path" pull --all --recurse-submodules
& git -C "$path" pull --all --recurse-submodules
if ($lastExitCode -ne "0") { throw "'git pull --all --recurse-submodes' failed" }
Write-Host "⏳ (4/4) Pushing local updates... " -noNewline
& git -C "$Path" push
& git -C "$path" push
if ($lastExitCode -ne "0") { throw "'git push' failed" }
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✅ Synced repo 📂$pathName in $Elapsed sec"
$pathName = (Get-Item "$path").Name
[int]$elapsed = $stopWatch.Elapsed.TotalSeconds
"✅ Synced the 📂$pathName repo in $($elapsed)s."
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"