53 lines
2.3 KiB
PowerShell
53 lines
2.3 KiB
PowerShell
param (
|
|
[string]$destinationFolder = "../savegame4",
|
|
[string]$branch = "master" # Параметр для ветки, по умолчанию 'master'
|
|
)
|
|
|
|
# Получаем путь к текущей папке (папка скрипта)
|
|
$scriptFolder = Split-Path $MyInvocation.MyCommand.Path -Parent
|
|
|
|
# Убедимся, что папка назначения существует, если нет — создаем её
|
|
if (-not (Test-Path -Path $destinationFolder)) {
|
|
New-Item -Path $destinationFolder -ItemType Directory
|
|
}
|
|
|
|
# Переходим в папку скрипта (если это репозиторий Git)
|
|
Set-Location -Path $scriptFolder
|
|
|
|
# Получаем текущую ветку
|
|
$currentBranch = git rev-parse --abbrev-ref HEAD
|
|
|
|
# Пуллим изменения только если мы не на нужной ветке
|
|
if ($currentBranch -ne $branch) {
|
|
Write-Host "Переключение на ветку '$branch'..."
|
|
git checkout $branch
|
|
}
|
|
|
|
# Пуллим последние изменения из удаленного репозитория для указанной ветки
|
|
Write-Host "Пуллинг изменений из ветки '$branch'..."
|
|
git pull origin $branch
|
|
|
|
# Получаем все файлы и папки в текущей папке, исключая .git, downloadSaves.ps1 и uploadSaves.ps1
|
|
$filesToCopy = Get-ChildItem -Path $scriptFolder -Recurse | Where-Object {
|
|
$_.FullName -notmatch '\\\.git' -and
|
|
$_.Name -ne 'downloadSaves.ps1' -and
|
|
$_.Name -ne 'uploadSaves.ps1'
|
|
}
|
|
|
|
# Копируем файлы в папку назначения
|
|
foreach ($file in $filesToCopy) {
|
|
# Если это папка, создаем такую же структуру в папке назначения
|
|
if ($file.PSIsContainer) {
|
|
$destinationPath = $file.FullName.Replace($scriptFolder, $destinationFolder)
|
|
if (-not (Test-Path -Path $destinationPath)) {
|
|
New-Item -Path $destinationPath -ItemType Directory
|
|
}
|
|
} else {
|
|
# Если это файл, копируем в папку назначения
|
|
$destinationFile = $file.FullName.Replace($scriptFolder, $destinationFolder)
|
|
Copy-Item -Path $file.FullName -Destination $destinationFile
|
|
}
|
|
}
|
|
|
|
Write-Host "Копирование завершено."
|