Files
knowledge-base/projects/niikn/_kbtmp_sync.ps1

32 lines
1.5 KiB
PowerShell
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# niikn-kb-sync.ps1 — автосинхронизация базы знаний НИИКН с Gitea
# Запускается Scheduled Task каждые ~7 минут. Тянет изменения с сервера,
# коммитит локальные правки и отправляет обратно. Лог: niikn-kb-sync.log
$ErrorActionPreference = "Continue"
$base = "C:\Users\msi\Documents\niikn-knowledge-base"
$git = "C:\Program Files\Git\cmd\git.exe"
$log = "$base\niikn-kb-sync.log"
function Log($m) { "$([DateTime]::Now.ToString('yyyy-MM-dd HH:mm:ss')) $m" | Add-Content -Path $log -Encoding UTF8 }
# mutex — не запускать второй экземпляр
$mtx = New-Object System.Threading.Mutex($false, "niikn-kb-sync")
if (-not $mtx.WaitOne(0)) { exit 0 }
try {
Set-Location $base
# подтянуть с сервера (rebase, чтобы не плодить merge-коммиты)
& $git pull --rebase --autostash origin main 2>&1 | Out-Null
# есть ли локальные изменения?
$status = & $git status --porcelain
if ($status) {
& $git add -A 2>&1 | Out-Null
& $git commit -m "auto-sync $([DateTime]::Now.ToString('yyyy-MM-dd HH:mm'))" 2>&1 | Out-Null
Log "committed local changes"
}
# отправить (если есть что)
$push = & $git push origin main 2>&1
if ($LASTEXITCODE -eq 0) { Log "sync ok" } else { Log "push issue: $push" }
}
catch { Log "ERROR: $_" }
finally { $mtx.ReleaseMutex() }