/
dgrigorev
/
veda
Обзор
Документация
Войти
/
dgrigorev
/
veda
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/git_init.ps1
128 строк
6 KB
Дмитрий Григорьев
Initial commit
01 июн 2026, 17:44
01 июн 2026, 17:44
a063587
Код
Авторство
О чём код?
<# .SYNOPSIS Инициализация git-репозитория veda со структурированной историей коммитов. .DESCRIPTION Скрипт создаёт репозиторий и раскладывает уже существующие файлы по нескольким тематическим коммитам (на русском), чтобы история была понятной. Зачем отдельный скрипт: репозиторий нужно инициализировать на самой машине Windows. Все сообщения коммитов — на русском. Если в каталоге уже есть частично созданный .git (например, оставшийся от неудачной инициализации), скрипт по умолчанию его удаляет (-Force чтобы без запроса). .PARAMETER UserName Имя автора коммитов (git user.name). .PARAMETER UserEmail Email автора коммитов (git user.email). .PARAMETER Force Не спрашивать подтверждение при удалении существующего .git. .EXAMPLE .\scripts\git_init.ps1 .EXAMPLE .\scripts\git_init.ps1 -UserName "Dmitry" -UserEmail "you@example.com" -Force #> [CmdletBinding()] param( [string]$UserName = "Dmitry", [string]$UserEmail = "frankshultz777@gmail.com", [switch]$Force ) $ErrorActionPreference = "Stop" # Переходим в корень репозитория (на уровень выше папки scripts). $RepoRoot = Split-Path -Parent $PSScriptRoot Set-Location $RepoRoot Write-Host "=== Инициализация git-репозитория veda ===" -ForegroundColor Cyan # Проверяем наличие git. if (-not (Get-Command git -ErrorAction SilentlyContinue)) { Write-Host "Ошибка: git не найден. Установите Git: https://git-scm.com" -ForegroundColor Red exit 1 } # Удаляем частично созданный/старый .git, если он есть. if (Test-Path ".git") { if (-not $Force) { $answer = Read-Host "Каталог .git уже существует. Удалить и создать заново? (y/N)" if ($answer -ne "y") { Write-Host "Отменено пользователем." -ForegroundColor Yellow exit 0 } } Write-Host "Удаляю существующий .git…" -ForegroundColor DarkGray # Снимаем атрибут «только для чтения» с файлов внутри .git, затем удаляем. Get-ChildItem -Path ".git" -Recurse -Force | ForEach-Object { try { $_.Attributes = "Normal" } catch {} } Remove-Item -Recurse -Force ".git" } # Инициализация и базовая конфигурация. git init -b master | Out-Null git config user.name $UserName git config user.email $UserEmail git config core.autocrlf false # переводы строк храним как есть (LF) Write-Host "Репозиторий создан. Автор: $UserName <$UserEmail>" -ForegroundColor Green # --- Тематические коммиты (порядок = логика развития проекта) ----------------- # Каждый элемент: сообщение + список путей. Несуществующие пути пропускаются. $commits = @( @{ Msg = "Инициализация проекта: манифест, лицензия, тулчейн"; Paths = @("Cargo.toml", "Cargo.lock", ".gitignore", "LICENSE", "rust-toolchain.toml", "rustfmt.toml") }, @{ Msg = "Конфигурация: чтение config.toml и пример настроек"; Paths = @("src/config", "config.example.toml") }, @{ Msg = "Рендерер OpenGL: шейдеры, атлас глифов, отрисовка сетки"; Paths = @("src/renderer") }, @{ Msg = "Терминал и ConPTY поверх alacritty_terminal"; Paths = @("src/terminal") }, @{ Msg = "Ввод, вкладки/сплиты и Kitty Graphics"; Paths = @("src/input", "src/ui", "src/graphics") }, @{ Msg = "Точка входа и главный цикл winit"; Paths = @("src/main.rs") }, @{ Msg = "Скрипты сборки и CI для Windows"; Paths = @("scripts", ".github") }, @{ Msg = "Документация и макеты интерфейса"; Paths = @("README.md", "docs", "CONTRIBUTING.md", "CHANGELOG.md") } ) foreach ($c in $commits) { # Оставляем только существующие пути. $existing = $c.Paths | Where-Object { Test-Path $_ } if ($existing.Count -eq 0) { continue } git add -- $existing # Коммитим, только если есть что коммитить. git diff --cached --quiet if ($LASTEXITCODE -ne 0) { git commit -q -m $c.Msg Write-Host (" ✓ " + $c.Msg) -ForegroundColor Green } } # На случай, если что-то осталось вне групп — добиваем одним коммитом. git add -A git diff --cached --quiet if ($LASTEXITCODE -ne 0) { git commit -q -m "Прочие файлы проекта" Write-Host " ✓ Прочие файлы проекта" -ForegroundColor Green } Write-Host "" Write-Host "История коммитов:" -ForegroundColor Cyan git --no-pager log --oneline --graph --decorate Write-Host "" Write-Host "Готово. Дальше можно подключить удалённый репозиторий, например:" -ForegroundColor DarkGray Write-Host " git remote add origin <url>" -ForegroundColor DarkGray Write-Host " git push -u origin master" -ForegroundColor DarkGray