Готово (v1.2.2): без --path / -Path скрипт сразу завершается с ошибкой.
This commit is contained in:
@@ -7,6 +7,38 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [1.2.2] - 2026-07-27
|
||||||
|
|
||||||
|
### Изменено
|
||||||
|
|
||||||
|
- 🔒 **`setup-1c-repo`**: путь к репозиторию **обязателен**
|
||||||
|
- Без `--path` / `-Path` (или `--repo` / `-Repo`) скрипт завершается с ошибкой
|
||||||
|
- Автонастройка текущей папки (cwd) отключена
|
||||||
|
- Для текущей папки явно: `--path .` / `-Path .`
|
||||||
|
|
||||||
|
### Документация
|
||||||
|
|
||||||
|
- 📖 Обновлён **README.md**
|
||||||
|
- 📝 Обновлён **CHANGELOG.md**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [1.2.1] - 2026-07-27
|
||||||
|
|
||||||
|
### Добавлено
|
||||||
|
|
||||||
|
- 📁 Опция целевой папки репозитория в **`setup-1c-repo`**
|
||||||
|
- sh: `--path DIR` / `--repo DIR` (также `--path=DIR`)
|
||||||
|
- ps1: `-Path` / `-Repo` / `-RepoPath`
|
||||||
|
- С `--init` / `-Init` отсутствующий каталог создаётся
|
||||||
|
|
||||||
|
### Документация
|
||||||
|
|
||||||
|
- 📖 Обновлён **README.md**
|
||||||
|
- 📝 Обновлён **CHANGELOG.md**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [1.2.0] - 2026-07-27
|
## [1.2.0] - 2026-07-27
|
||||||
|
|
||||||
### Добавлено
|
### Добавлено
|
||||||
@@ -153,6 +185,8 @@
|
|||||||
|
|
||||||
| Версия | Дата | Изменения |
|
| Версия | Дата | Изменения |
|
||||||
|--------|------|-----------|
|
|--------|------|-----------|
|
||||||
|
| **1.2.2** | 2026-07-27 | `setup-1c-repo`: путь обязателен, без cwd по умолчанию |
|
||||||
|
| **1.2.1** | 2026-07-27 | `setup-1c-repo`: опция `--path` / `-Path` |
|
||||||
| **1.2.0** | 2026-07-27 | `setup-1c-repo` — настройки Git под выгрузку конфигуратора 1С |
|
| **1.2.0** | 2026-07-27 | `setup-1c-repo` — настройки Git под выгрузку конфигуратора 1С |
|
||||||
| **1.0.6** | 2026-07-20 | Автоснятие из `.gitignore`, fix macOS sed, `--version` |
|
| **1.0.6** | 2026-07-20 | Автоснятие из `.gitignore`, fix macOS sed, `--version` |
|
||||||
| **1.1.0** | 2025-07-19 | Добавлена настройка игнорирования подмодулей |
|
| **1.1.0** | 2025-07-19 | Добавлена настройка игнорирования подмодулей |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Git Management Tools (`git_man`)
|
# Git Management Tools (`git_man`)
|
||||||
|
|
||||||
**Версия:** 1.2.0
|
**Версия:** 1.2.2
|
||||||
|
|
||||||
Набор скриптов и утилит для управления Git-репозиториями, работы с подмодулями и автоматизации повседневных задач.
|
Набор скриптов и утилит для управления Git-репозиториями, работы с подмодулями и автоматизации повседневных задач.
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
### `setup-1c-repo` — настройка репозитория под 1С
|
### `setup-1c-repo` — настройка репозитория под 1С
|
||||||
|
|
||||||
**Описание:**
|
**Описание:**
|
||||||
Включает локальные настройки Git в **текущей папке** (каталог запуска) под выгрузку конфигурации/расширения из **конфигуратора 1С**: UTF-8 с BOM, CRLF в рабочей копии для файлов выгрузки, корректные пути с кириллицей, длинные пути, `.gitattributes` и `.gitignore`.
|
Включает локальные настройки Git в **указанной папке** (`--path` / `-Path`, **обязательно**) под выгрузку конфигурации/расширения из **конфигуратора 1С**: UTF-8 с BOM, CRLF в рабочей копии для файлов выгрузки, корректные пути с кириллицей, длинные пути, `.gitattributes` и `.gitignore`. Без пути скрипт не выполняется.
|
||||||
|
|
||||||
| Платформа | Скрипт |
|
| Платформа | Скрипт |
|
||||||
|-----------|--------|
|
|-----------|--------|
|
||||||
@@ -49,16 +49,16 @@
|
|||||||
|
|
||||||
**Использование (Windows):**
|
**Использование (Windows):**
|
||||||
```powershell
|
```powershell
|
||||||
.\setup-1c-repo.ps1
|
.\setup-1c-repo.ps1 -Path D:\projects\uas_ep -Force
|
||||||
.\setup-1c-repo.ps1 -Force -Renormalize
|
.\setup-1c-repo.ps1 -Path . -Force -Renormalize
|
||||||
.\setup-1c-repo.cmd -Init -DryRun
|
.\setup-1c-repo.cmd -Path C:\tmp\new-1c -Init -DryRun
|
||||||
```
|
```
|
||||||
|
|
||||||
**Использование (macOS / Linux):**
|
**Использование (macOS / Linux):**
|
||||||
```bash
|
```bash
|
||||||
./setup-1c-repo.sh
|
./setup-1c-repo.sh --path /projects/uas_ep --force
|
||||||
./setup-1c-repo.sh --force --renormalize
|
./setup-1c-repo.sh --path . --force --renormalize
|
||||||
./setup-1c-repo.sh --init --dry-run
|
./setup-1c-repo.sh --path /tmp/new-1c --init --dry-run
|
||||||
```
|
```
|
||||||
|
|
||||||
**Опции:**
|
**Опции:**
|
||||||
@@ -66,10 +66,12 @@
|
|||||||
| Опция (sh / ps1) | Описание |
|
| Опция (sh / ps1) | Описание |
|
||||||
|------------------|----------|
|
|------------------|----------|
|
||||||
| `--help` / `-Help` | Справка |
|
| `--help` / `-Help` | Справка |
|
||||||
| `--version` / `-Version` | Версия скрипта (`1.2.0`) |
|
| `--version` / `-Version` | Версия скрипта (`1.2.2`) |
|
||||||
|
| `--path DIR` / `-Path DIR` | Папка репозитория (**обязательно**) |
|
||||||
|
| `--repo DIR` / `-Repo DIR` | Синоним `--path` / `-Path` |
|
||||||
| `--dry-run` / `-DryRun` | Только показать действия |
|
| `--dry-run` / `-DryRun` | Только показать действия |
|
||||||
| `--force` / `-Force` | Перезаписать `.gitattributes` и `.gitignore` |
|
| `--force` / `-Force` | Перезаписать `.gitattributes` и `.gitignore` |
|
||||||
| `--init` / `-Init` | `git init`, если папка ещё не репозиторий |
|
| `--init` / `-Init` | `git init`, если папка ещё не репозиторий (создаёт каталог при необходимости) |
|
||||||
| `--renormalize` / `-Renormalize` | `git add --renormalize .` после настройки |
|
| `--renormalize` / `-Renormalize` | `git add --renormalize .` после настройки |
|
||||||
| `--no-gitignore` / `-NoGitignore` | Не трогать `.gitignore` |
|
| `--no-gitignore` / `-NoGitignore` | Не трогать `.gitignore` |
|
||||||
| `--verbose` / `-Verbose` | Подробный вывод |
|
| `--verbose` / `-Verbose` | Подробный вывод |
|
||||||
@@ -248,12 +250,14 @@ git submodule add https://git.p7net.ru/tools/git_man.git tools/git_man
|
|||||||
|
|
||||||
## 📌 История версий
|
## 📌 История версий
|
||||||
|
|
||||||
Текущая версия: **1.2.0** (2026-07-27).
|
Текущая версия: **1.2.2** (2026-07-27).
|
||||||
|
|
||||||
Кратко по релизам — см. [CHANGELOG.md](./CHANGELOG.md).
|
Кратко по релизам — см. [CHANGELOG.md](./CHANGELOG.md).
|
||||||
|
|
||||||
| Версия | Дата | Суть |
|
| Версия | Дата | Суть |
|
||||||
|--------|------|------|
|
|--------|------|------|
|
||||||
|
| **1.2.2** | 2026-07-27 | `setup-1c-repo`: путь обязателен, без cwd по умолчанию |
|
||||||
|
| **1.2.1** | 2026-07-27 | `setup-1c-repo`: опция `--path` / `-Path` |
|
||||||
| **1.2.0** | 2026-07-27 | `setup-1c-repo` — настройки Git под выгрузку конфигуратора 1С |
|
| **1.2.0** | 2026-07-27 | `setup-1c-repo` — настройки Git под выгрузку конфигуратора 1С |
|
||||||
| **1.0.6** | 2026-07-20 | Автоснятие из `.gitignore`, fix macOS, `--version` |
|
| **1.0.6** | 2026-07-20 | Автоснятие из `.gitignore`, fix macOS, `--version` |
|
||||||
| **1.1.0** | 2025-07-19 | Настройка `ignore` для подмодулей |
|
| **1.1.0** | 2025-07-19 | Настройка `ignore` для подмодулей |
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
setlocal EnableExtensions
|
setlocal EnableExtensions
|
||||||
REM ============================================================
|
REM ============================================================
|
||||||
REM setup-1c-repo.cmd - обёртка Windows для setup-1c-repo.ps1
|
REM setup-1c-repo.cmd - обёртка Windows для setup-1c-repo.ps1
|
||||||
REM Версия: 1.2.0
|
REM Версия: 1.2.2
|
||||||
REM Запуск из корня Git-репозитория 1С-проекта (выгрузка конфигуратора).
|
REM Запуск из корня Git-репозитория 1С-проекта (выгрузка конфигуратора).
|
||||||
REM ============================================================
|
REM ============================================================
|
||||||
|
|
||||||
|
|||||||
+122
-67
@@ -1,7 +1,7 @@
|
|||||||
# ============================================================
|
# ============================================================
|
||||||
# setup-1c-repo.ps1 - Настройка Git-репозитория под выгрузку 1С (конфигуратор)
|
# setup-1c-repo.ps1 - Настройка Git-репозитория под выгрузку 1С (конфигуратор)
|
||||||
#
|
#
|
||||||
# Версия: 1.2.0
|
# Версия: 1.2.2
|
||||||
# Автор: Michael BAG <mk@p7net.ru>
|
# Автор: Michael BAG <mk@p7net.ru>
|
||||||
# Репозиторий: https://git.p7net.ru/tools/git_man
|
# Репозиторий: https://git.p7net.ru/tools/git_man
|
||||||
#
|
#
|
||||||
@@ -9,12 +9,12 @@
|
|||||||
# Для Linux/macOS используйте setup-1c-repo.sh
|
# Для Linux/macOS используйте setup-1c-repo.sh
|
||||||
#
|
#
|
||||||
# Использование:
|
# Использование:
|
||||||
# .\setup-1c-repo.ps1 [-DryRun] [-Force] [-Init] [-Renormalize] [-NoGitignore]
|
# .\setup-1c-repo.ps1 -Path DIR [-DryRun] [-Force] [-Init] [-Renormalize]
|
||||||
# [-Verbose] [-Quiet] [-Help] [-Version]
|
# [-NoGitignore] [-Verbose] [-Quiet] [-Help] [-Version]
|
||||||
#
|
#
|
||||||
# Описание:
|
# Описание:
|
||||||
# Включает локальные настройки Git в текущей папке (cwd) для проектов
|
# Включает локальные настройки Git в указанной папке (-Path / -Repo;
|
||||||
# с выгрузкой конфигурации/расширения из конфигуратора 1С:
|
# обязательный параметр) для проектов с выгрузкой из конфигуратора 1С:
|
||||||
# - UTF-8 с BOM (как у конфигуратора; BOM хранится как часть содержимого)
|
# - UTF-8 с BOM (как у конфигуратора; BOM хранится как часть содержимого)
|
||||||
# - CRLF в рабочей копии для *.bsl / *.xml и др. текстовых файлов выгрузки
|
# - CRLF в рабочей копии для *.bsl / *.xml и др. текстовых файлов выгрузки
|
||||||
# - корректное отображение кириллических путей (core.quotepath=false)
|
# - корректное отображение кириллических путей (core.quotepath=false)
|
||||||
@@ -24,6 +24,10 @@
|
|||||||
|
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param(
|
param(
|
||||||
|
[Parameter()]
|
||||||
|
[Alias('Repo', 'RepoPath')]
|
||||||
|
[string]$Path,
|
||||||
|
|
||||||
[switch]$DryRun,
|
[switch]$DryRun,
|
||||||
[Alias('f')]
|
[Alias('f')]
|
||||||
[switch]$Force,
|
[switch]$Force,
|
||||||
@@ -39,7 +43,7 @@ param(
|
|||||||
)
|
)
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
$ScriptVersion = '1.2.0'
|
$ScriptVersion = '1.2.2'
|
||||||
|
|
||||||
function Show-Help {
|
function Show-Help {
|
||||||
@"
|
@"
|
||||||
@@ -48,28 +52,32 @@ function Show-Help {
|
|||||||
============================================================
|
============================================================
|
||||||
|
|
||||||
ОПИСАНИЕ:
|
ОПИСАНИЕ:
|
||||||
Настраивает локальный Git-репозиторий в ТЕКУЩЕЙ папке под
|
Настраивает локальный Git-репозиторий под выгрузку из
|
||||||
выгрузку из конфигуратора 1С (UTF-8 BOM + CRLF).
|
конфигуратора 1С (UTF-8 BOM + CRLF).
|
||||||
|
Путь к репозиторию обязателен: -Path / -Repo.
|
||||||
|
|
||||||
ИСПОЛЬЗОВАНИЕ:
|
ИСПОЛЬЗОВАНИЕ:
|
||||||
.\setup-1c-repo.ps1 [ОПЦИИ]
|
.\setup-1c-repo.ps1 -Path DIR [ОПЦИИ]
|
||||||
.\setup-1c-repo.cmd [ОПЦИИ]
|
.\setup-1c-repo.cmd -Path DIR [ОПЦИИ]
|
||||||
|
|
||||||
ОПЦИИ:
|
ОПЦИИ:
|
||||||
-Help, -h Показать эту справку
|
-Help, -h Показать эту справку
|
||||||
-Version, -V Показать версию скрипта
|
-Version, -V Показать версию скрипта
|
||||||
|
-Path, -Repo DIR Папка репозитория для настройки (обязательно)
|
||||||
-DryRun Только показать, что будет сделано
|
-DryRun Только показать, что будет сделано
|
||||||
-Force, -f Перезаписать существующие .gitattributes / .gitignore
|
-Force, -f Перезаписать существующие .gitattributes / .gitignore
|
||||||
-Init Выполнить git init, если папка ещё не репозиторий
|
-Init Выполнить git init, если папка ещё не репозиторий
|
||||||
|
(создаёт каталог, если его нет)
|
||||||
-Renormalize После настройки: git add --renormalize .
|
-Renormalize После настройки: git add --renormalize .
|
||||||
-NoGitignore Не создавать/не менять .gitignore
|
-NoGitignore Не создавать/не менять .gitignore
|
||||||
-Verbose, -v Подробный вывод
|
-Verbose, -v Подробный вывод
|
||||||
-Quiet, -q Минимальный вывод (только ошибки)
|
-Quiet, -q Минимальный вывод (только ошибки)
|
||||||
|
|
||||||
ПРИМЕРЫ:
|
ПРИМЕРЫ:
|
||||||
.\setup-1c-repo.ps1
|
.\setup-1c-repo.ps1 -Path D:\projects\uas_ep -Force
|
||||||
.\setup-1c-repo.ps1 -Force -Renormalize
|
.\setup-1c-repo.ps1 -Repo ..\my-1c-dump -Init
|
||||||
.\setup-1c-repo.ps1 -Init -DryRun
|
.\setup-1c-repo.ps1 -Path . -Force -Renormalize
|
||||||
|
.\setup-1c-repo.ps1 -Path C:\tmp\new-1c -Init -DryRun
|
||||||
|
|
||||||
============================================================
|
============================================================
|
||||||
"@ | Write-Host
|
"@ | Write-Host
|
||||||
@@ -242,91 +250,138 @@ function Test-GitAvailable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Test-GitRepository {
|
|
||||||
if (Test-Path -LiteralPath '.git') { return $true }
|
|
||||||
return $false
|
|
||||||
}
|
|
||||||
|
|
||||||
function Set-LocalGitConfig {
|
|
||||||
param([string]$Key, [string]$Value)
|
|
||||||
if ($DryRun) {
|
|
||||||
Write-Host " [DRY-RUN] git config --local $Key $Value"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
& git config --local $Key $Value
|
|
||||||
if ($LASTEXITCODE -ne 0) {
|
|
||||||
throw "Не удалось установить git config $Key=$Value"
|
|
||||||
}
|
|
||||||
Write-DebugMsg "config $Key=$Value"
|
|
||||||
}
|
|
||||||
|
|
||||||
function Write-Utf8File {
|
function Write-Utf8File {
|
||||||
param(
|
param(
|
||||||
[string]$Path,
|
[string]$FilePath,
|
||||||
[string]$Content
|
[string]$Content,
|
||||||
|
[string]$BaseDir
|
||||||
)
|
)
|
||||||
# UTF-8 без BOM: для .gitattributes/.gitignore достаточно; BOM у *.bsl
|
# UTF-8 без BOM: для .gitattributes/.gitignore достаточно; BOM у *.bsl
|
||||||
# — содержимое выгрузки конфигуратора, не этих служебных файлов.
|
# — содержимое выгрузки конфигуратора, не этих служебных файлов.
|
||||||
$normalized = $Content -replace "`r`n", "`n" -replace "`r", "`n"
|
$normalized = $Content -replace "`r`n", "`n" -replace "`r", "`n"
|
||||||
$normalized = $normalized.TrimEnd("`n") + "`n"
|
$normalized = $normalized.TrimEnd("`n") + "`n"
|
||||||
$encoding = New-Object System.Text.UTF8Encoding($false)
|
$encoding = New-Object System.Text.UTF8Encoding($false)
|
||||||
[System.IO.File]::WriteAllText((Join-Path (Get-Location) $Path), $normalized, $encoding)
|
$fullPath = Join-Path $BaseDir $FilePath
|
||||||
|
[System.IO.File]::WriteAllText($fullPath, $normalized, $encoding)
|
||||||
}
|
}
|
||||||
|
|
||||||
function Write-FileSafe {
|
function Write-FileSafe {
|
||||||
param(
|
param(
|
||||||
[string]$Path,
|
[string]$FilePath,
|
||||||
[string]$Content,
|
[string]$Content,
|
||||||
[string]$Label
|
[string]$Label,
|
||||||
|
[string]$BaseDir
|
||||||
)
|
)
|
||||||
|
|
||||||
if ((Test-Path -LiteralPath $Path) -and -not $Force) {
|
$fullPath = Join-Path $BaseDir $FilePath
|
||||||
|
|
||||||
|
if ((Test-Path -LiteralPath $fullPath) -and -not $Force) {
|
||||||
Write-WarnMsg "$Label уже существует — пропуск (используйте -Force)"
|
Write-WarnMsg "$Label уже существует — пропуск (используйте -Force)"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($DryRun) {
|
if ($DryRun) {
|
||||||
if (Test-Path -LiteralPath $Path) {
|
if (Test-Path -LiteralPath $fullPath) {
|
||||||
Write-Host " [DRY-RUN] перезаписать $Path (бэкап $Path.bak)"
|
Write-Host " [DRY-RUN] перезаписать $fullPath (бэкап $FilePath.bak)"
|
||||||
} else {
|
} else {
|
||||||
Write-Host " [DRY-RUN] создать $Path"
|
Write-Host " [DRY-RUN] создать $fullPath"
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Test-Path -LiteralPath $Path) {
|
if (Test-Path -LiteralPath $fullPath) {
|
||||||
Copy-Item -LiteralPath $Path -Destination "$Path.bak" -Force
|
Copy-Item -LiteralPath $fullPath -Destination "$fullPath.bak" -Force
|
||||||
Write-Info "Бэкап: $Path.bak"
|
Write-Info "Бэкап: $FilePath.bak"
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Utf8File -Path $Path -Content $Content
|
Write-Utf8File -FilePath $FilePath -Content $Content -BaseDir $BaseDir
|
||||||
Write-Success "Записан $Path"
|
Write-Success "Записан $FilePath"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Set-LocalGitConfig {
|
||||||
|
param(
|
||||||
|
[string]$Key,
|
||||||
|
[string]$Value,
|
||||||
|
[string]$WorkTree
|
||||||
|
)
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host " [DRY-RUN] git -C `"$WorkTree`" config --local $Key $Value"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
& git -C $WorkTree config --local $Key $Value
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
throw "Не удалось установить git config $Key=$Value"
|
||||||
|
}
|
||||||
|
Write-DebugMsg "config $Key=$Value"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Целевой каталог
|
||||||
|
# ============================================================
|
||||||
|
if ([string]::IsNullOrWhiteSpace($Path)) {
|
||||||
|
Write-ErrMsg "Не указан путь к репозиторию"
|
||||||
|
Write-Host " Обязательно: -Path DIR или -Repo DIR" -ForegroundColor Red
|
||||||
|
Write-Host " Справка: .\setup-1c-repo.ps1 -Help" -ForegroundColor Red
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$TargetDir = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path)
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Основной ход
|
# Основной ход
|
||||||
# ============================================================
|
# ============================================================
|
||||||
Write-Step "Проверка окружения (ОС: Windows)..."
|
Write-Step "Проверка окружения (ОС: Windows)..."
|
||||||
|
Write-Info "Целевой каталог: $TargetDir"
|
||||||
|
|
||||||
if (-not (Test-GitAvailable)) {
|
if (-not (Test-GitAvailable)) {
|
||||||
Write-ErrMsg "Git не установлен или недоступен в PATH"
|
Write-ErrMsg "Git не установлен или недоступен в PATH"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not (Test-GitRepository)) {
|
$repoReady = $false
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $TargetDir -PathType Container)) {
|
||||||
if ($Init) {
|
if ($Init) {
|
||||||
if ($DryRun) {
|
if ($DryRun) {
|
||||||
Write-Host " [DRY-RUN] git init"
|
Write-Host " [DRY-RUN] New-Item -ItemType Directory `"$TargetDir`""
|
||||||
|
Write-Host " [DRY-RUN] git -C `"$TargetDir`" init"
|
||||||
} else {
|
} else {
|
||||||
& git init
|
New-Item -ItemType Directory -Path $TargetDir -Force | Out-Null
|
||||||
|
Write-Success "Создан каталог: $TargetDir"
|
||||||
|
& git -C $TargetDir init
|
||||||
if ($LASTEXITCODE -ne 0) { throw "git init завершился с ошибкой" }
|
if ($LASTEXITCODE -ne 0) { throw "git init завершился с ошибкой" }
|
||||||
Write-Success "Выполнен git init"
|
Write-Success "Выполнен git init"
|
||||||
|
$repoReady = $true
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Write-ErrMsg "Текущая папка не является Git-репозиторием"
|
Write-ErrMsg "Папка не существует: $TargetDir"
|
||||||
Write-Host " Запустите из корня репозитория или добавьте -Init" -ForegroundColor Red
|
Write-Host " Укажите существующий путь или добавьте -Init" -ForegroundColor Red
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$gitMarker = Join-Path $TargetDir '.git'
|
||||||
|
if (Test-Path -LiteralPath $gitMarker) {
|
||||||
|
$repoReady = $true
|
||||||
|
} elseif ($Init) {
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host " [DRY-RUN] git -C `"$TargetDir`" init"
|
||||||
|
} else {
|
||||||
|
& git -C $TargetDir init
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "git init завершился с ошибкой" }
|
||||||
|
Write-Success "Выполнен git init"
|
||||||
|
$repoReady = $true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-ErrMsg "Папка не является Git-репозиторием: $TargetDir"
|
||||||
|
Write-Host " Укажите корень репозитория (-Path) или добавьте -Init" -ForegroundColor Red
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# В dry-run без реального каталога дальше только показываем действия
|
||||||
|
if (-not $DryRun -and -not $repoReady -and -not (Test-Path -LiteralPath (Join-Path $TargetDir '.git'))) {
|
||||||
|
Write-ErrMsg "Репозиторий не готов: $TargetDir"
|
||||||
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Success "Окружение проверено"
|
Write-Success "Окружение проверено"
|
||||||
@@ -334,18 +389,18 @@ Write-Success "Окружение проверено"
|
|||||||
Write-Step "Локальные настройки Git..."
|
Write-Step "Локальные настройки Git..."
|
||||||
|
|
||||||
# Кириллические пути без \320\...
|
# Кириллические пути без \320\...
|
||||||
Set-LocalGitConfig 'core.quotepath' 'false'
|
Set-LocalGitConfig -Key 'core.quotepath' -Value 'false' -WorkTree $TargetDir
|
||||||
# Длинные пути Windows / глубокие деревья метаданных 1С
|
# Длинные пути Windows / глубокие деревья метаданных 1С
|
||||||
Set-LocalGitConfig 'core.longpaths' 'true'
|
Set-LocalGitConfig -Key 'core.longpaths' -Value 'true' -WorkTree $TargetDir
|
||||||
# Кодировки UI и коммитов
|
# Кодировки UI и коммитов
|
||||||
Set-LocalGitConfig 'gui.encoding' 'utf-8'
|
Set-LocalGitConfig -Key 'gui.encoding' -Value 'utf-8' -WorkTree $TargetDir
|
||||||
Set-LocalGitConfig 'i18n.commitEncoding' 'utf-8'
|
Set-LocalGitConfig -Key 'i18n.commitEncoding' -Value 'utf-8' -WorkTree $TargetDir
|
||||||
# EOL полностью через .gitattributes
|
# EOL полностью через .gitattributes
|
||||||
Set-LocalGitConfig 'core.autocrlf' 'false'
|
Set-LocalGitConfig -Key 'core.autocrlf' -Value 'false' -WorkTree $TargetDir
|
||||||
Set-LocalGitConfig 'core.safecrlf' 'warn'
|
Set-LocalGitConfig -Key 'core.safecrlf' -Value 'warn' -WorkTree $TargetDir
|
||||||
# Рекомендации 1С:ГитКонвертер для крупных деревьев метаданных
|
# Рекомендации 1С:ГитКонвертер для крупных деревьев метаданных
|
||||||
Set-LocalGitConfig 'diff.renames' 'false'
|
Set-LocalGitConfig -Key 'diff.renames' -Value 'false' -WorkTree $TargetDir
|
||||||
Set-LocalGitConfig 'diff.renameLimit' '1'
|
Set-LocalGitConfig -Key 'diff.renameLimit' -Value '1' -WorkTree $TargetDir
|
||||||
|
|
||||||
if ($DryRun) {
|
if ($DryRun) {
|
||||||
Write-Info "Локальный git config (dry-run)"
|
Write-Info "Локальный git config (dry-run)"
|
||||||
@@ -354,11 +409,11 @@ if ($DryRun) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Write-Step "Файл .gitattributes..."
|
Write-Step "Файл .gitattributes..."
|
||||||
Write-FileSafe -Path '.gitattributes' -Content $GitAttributesContent -Label '.gitattributes'
|
Write-FileSafe -FilePath '.gitattributes' -Content $GitAttributesContent -Label '.gitattributes' -BaseDir $TargetDir
|
||||||
|
|
||||||
if (-not $NoGitignore) {
|
if (-not $NoGitignore) {
|
||||||
Write-Step "Файл .gitignore..."
|
Write-Step "Файл .gitignore..."
|
||||||
Write-FileSafe -Path '.gitignore' -Content $GitIgnoreContent -Label '.gitignore'
|
Write-FileSafe -FilePath '.gitignore' -Content $GitIgnoreContent -Label '.gitignore' -BaseDir $TargetDir
|
||||||
} else {
|
} else {
|
||||||
Write-Info "Пропуск .gitignore (-NoGitignore)"
|
Write-Info "Пропуск .gitignore (-NoGitignore)"
|
||||||
}
|
}
|
||||||
@@ -366,9 +421,9 @@ if (-not $NoGitignore) {
|
|||||||
if ($Renormalize) {
|
if ($Renormalize) {
|
||||||
Write-Step "Нормализация индекса (git add --renormalize .)..."
|
Write-Step "Нормализация индекса (git add --renormalize .)..."
|
||||||
if ($DryRun) {
|
if ($DryRun) {
|
||||||
Write-Host " [DRY-RUN] git add --renormalize ."
|
Write-Host " [DRY-RUN] git -C `"$TargetDir`" add --renormalize ."
|
||||||
} else {
|
} else {
|
||||||
& git add --renormalize .
|
& git -C $TargetDir add --renormalize .
|
||||||
if ($LASTEXITCODE -ne 0) { throw "git add --renormalize завершился с ошибкой" }
|
if ($LASTEXITCODE -ne 0) { throw "git add --renormalize завершился с ошибкой" }
|
||||||
Write-Success "Индекс перенормализован"
|
Write-Success "Индекс перенормализован"
|
||||||
Write-WarnMsg "Проверьте git status — возможны массовые изменения EOL"
|
Write-WarnMsg "Проверьте git status — возможны массовые изменения EOL"
|
||||||
@@ -381,7 +436,7 @@ if (-not $Quiet) {
|
|||||||
Write-Host "📊 Итог настройки под выгрузку конфигуратора 1С" -ForegroundColor Cyan
|
Write-Host "📊 Итог настройки под выгрузку конфигуратора 1С" -ForegroundColor Cyan
|
||||||
Write-Host "============================================================"
|
Write-Host "============================================================"
|
||||||
Write-Host " ОС: Windows"
|
Write-Host " ОС: Windows"
|
||||||
Write-Host " Каталог: $(Get-Location)"
|
Write-Host " Каталог: $TargetDir"
|
||||||
Write-Host " Encoding: UTF-8 (BOM сохраняется в содержимом файлов)"
|
Write-Host " Encoding: UTF-8 (BOM сохраняется в содержимом файлов)"
|
||||||
Write-Host " EOL (выгрузка): CRLF в рабочей копии (*.bsl, *.xml, …)"
|
Write-Host " EOL (выгрузка): CRLF в рабочей копии (*.bsl, *.xml, …)"
|
||||||
Write-Host " core.autocrlf: false (управляет .gitattributes)"
|
Write-Host " core.autocrlf: false (управляет .gitattributes)"
|
||||||
@@ -395,13 +450,13 @@ if (-not $Quiet) {
|
|||||||
Write-Host "✅ Готово" -ForegroundColor Green
|
Write-Host "✅ Готово" -ForegroundColor Green
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host "Следующие шаги:" -ForegroundColor Cyan
|
Write-Host "Следующие шаги:" -ForegroundColor Cyan
|
||||||
Write-Host " 1. git status"
|
Write-Host " 1. git -C `"$TargetDir`" status"
|
||||||
Write-Host " 2. git add .gitattributes .gitignore"
|
Write-Host " 2. git -C `"$TargetDir`" add .gitattributes .gitignore"
|
||||||
Write-Host ' 3. git commit -m "Настройки Git для выгрузки конфигуратора 1С"'
|
Write-Host ' 3. git commit -m "Настройки Git для выгрузки конфигуратора 1С"'
|
||||||
if (-not $Renormalize) {
|
if (-not $Renormalize) {
|
||||||
Write-Host " 4. При необходимости нормализовать EOL:"
|
Write-Host " 4. При необходимости нормализовать EOL:"
|
||||||
Write-Host " .\setup-1c-repo.ps1 -Renormalize"
|
Write-Host " .\setup-1c-repo.ps1 -Path `"$TargetDir`" -Renormalize"
|
||||||
Write-Host " или: git add --renormalize ."
|
Write-Host " или: git -C `"$TargetDir`" add --renormalize ."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Write-Host "============================================================"
|
Write-Host "============================================================"
|
||||||
|
|||||||
+105
-27
@@ -2,20 +2,20 @@
|
|||||||
# ============================================================
|
# ============================================================
|
||||||
# setup-1c-repo.sh - Настройка Git-репозитория под выгрузку 1С (конфигуратор)
|
# setup-1c-repo.sh - Настройка Git-репозитория под выгрузку 1С (конфигуратор)
|
||||||
#
|
#
|
||||||
# Версия: 1.2.0
|
# Версия: 1.2.2
|
||||||
# Автор: Michael BAG <mk@p7net.ru>
|
# Автор: Michael BAG <mk@p7net.ru>
|
||||||
# Репозиторий: https://git.p7net.ru/tools/git_man
|
# Репозиторий: https://git.p7net.ru/tools/git_man
|
||||||
#
|
#
|
||||||
# Платформы: Linux, macOS (на Windows используйте setup-1c-repo.ps1)
|
# Платформы: Linux, macOS (на Windows используйте setup-1c-repo.ps1)
|
||||||
#
|
#
|
||||||
# Использование:
|
# Использование:
|
||||||
# ./setup-1c-repo.sh [--help] [--version] [--dry-run] [--force]
|
# ./setup-1c-repo.sh --path DIR [--help] [--version] [--dry-run] [--force]
|
||||||
# [--init] [--renormalize] [--no-gitignore]
|
# [--init] [--renormalize] [--no-gitignore]
|
||||||
# [--verbose] [--quiet]
|
# [--verbose] [--quiet]
|
||||||
#
|
#
|
||||||
# Описание:
|
# Описание:
|
||||||
# Включает локальные настройки Git в текущей папке (cwd) для проектов
|
# Включает локальные настройки Git в указанной папке (--path / --repo;
|
||||||
# с выгрузкой конфигурации/расширения из конфигуратора 1С:
|
# обязательный параметр) для проектов с выгрузкой из конфигуратора 1С:
|
||||||
# - UTF-8 с BOM (как у конфигуратора; BOM хранится как часть содержимого)
|
# - UTF-8 с BOM (как у конфигуратора; BOM хранится как часть содержимого)
|
||||||
# - CRLF в рабочей копии для *.bsl / *.xml и др. текстовых файлов выгрузки
|
# - CRLF в рабочей копии для *.bsl / *.xml и др. текстовых файлов выгрузки
|
||||||
# - корректное отображение кириллических путей (core.quotepath=false)
|
# - корректное отображение кириллических путей (core.quotepath=false)
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
SCRIPT_VERSION="1.2.0"
|
SCRIPT_VERSION="1.2.2"
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Справка
|
# Справка
|
||||||
@@ -37,18 +37,22 @@ show_help() {
|
|||||||
============================================================
|
============================================================
|
||||||
|
|
||||||
ОПИСАНИЕ:
|
ОПИСАНИЕ:
|
||||||
Настраивает локальный Git-репозиторий в ТЕКУЩЕЙ папке под
|
Настраивает локальный Git-репозиторий под выгрузку из
|
||||||
выгрузку из конфигуратора 1С (UTF-8 BOM + CRLF).
|
конфигуратора 1С (UTF-8 BOM + CRLF).
|
||||||
|
Путь к репозиторию обязателен: --path / --repo.
|
||||||
|
|
||||||
ИСПОЛЬЗОВАНИЕ:
|
ИСПОЛЬЗОВАНИЕ:
|
||||||
./setup-1c-repo.sh [ОПЦИИ]
|
./setup-1c-repo.sh --path DIR [ОПЦИИ]
|
||||||
|
|
||||||
ОПЦИИ:
|
ОПЦИИ:
|
||||||
--help, -h Показать эту справку
|
--help, -h Показать эту справку
|
||||||
--version, -V Показать версию скрипта
|
--version, -V Показать версию скрипта
|
||||||
|
--path DIR, --repo DIR
|
||||||
|
Папка репозитория для настройки (обязательно)
|
||||||
--dry-run Только показать, что будет сделано
|
--dry-run Только показать, что будет сделано
|
||||||
--force, -f Перезаписать существующие .gitattributes / .gitignore
|
--force, -f Перезаписать существующие .gitattributes / .gitignore
|
||||||
--init Выполнить git init, если папка ещё не репозиторий
|
--init Выполнить git init, если папка ещё не репозиторий
|
||||||
|
(создаёт каталог, если его нет)
|
||||||
--renormalize После настройки: git add --renormalize .
|
--renormalize После настройки: git add --renormalize .
|
||||||
--no-gitignore Не создавать/не менять .gitignore
|
--no-gitignore Не создавать/не менять .gitignore
|
||||||
--verbose, -v Подробный вывод
|
--verbose, -v Подробный вывод
|
||||||
@@ -60,9 +64,10 @@ show_help() {
|
|||||||
3. Файл .gitignore — типичные исключения (*.cf, *.cfe, …)
|
3. Файл .gitignore — типичные исключения (*.cf, *.cfe, …)
|
||||||
|
|
||||||
ПРИМЕРЫ:
|
ПРИМЕРЫ:
|
||||||
./setup-1c-repo.sh
|
./setup-1c-repo.sh --path /projects/uas_ep --force
|
||||||
./setup-1c-repo.sh --force --renormalize
|
./setup-1c-repo.sh --repo ../my-1c-dump --init
|
||||||
./setup-1c-repo.sh --init --dry-run
|
./setup-1c-repo.sh --path . --force --renormalize
|
||||||
|
./setup-1c-repo.sh --path /tmp/new-1c --init --dry-run
|
||||||
|
|
||||||
============================================================
|
============================================================
|
||||||
EOF
|
EOF
|
||||||
@@ -84,11 +89,28 @@ QUIET=false
|
|||||||
DO_INIT=false
|
DO_INIT=false
|
||||||
RENORMALIZE=false
|
RENORMALIZE=false
|
||||||
NO_GITIGNORE=false
|
NO_GITIGNORE=false
|
||||||
|
REPO_PATH=""
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
--help|-h) show_help ;;
|
--help|-h) show_help ;;
|
||||||
--version|-V) show_version ;;
|
--version|-V) show_version ;;
|
||||||
|
--path|--repo)
|
||||||
|
if [ -z "${2:-}" ] || [[ "${2:-}" == -* ]]; then
|
||||||
|
echo -e "\033[0;31m❌ Для $1 укажите путь к папке репозитория\033[0m" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
REPO_PATH="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--path=*|--repo=*)
|
||||||
|
REPO_PATH="${1#*=}"
|
||||||
|
if [ -z "$REPO_PATH" ]; then
|
||||||
|
echo -e "\033[0;31m❌ Пустой путь в $1\033[0m" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
;;
|
||||||
--dry-run) DRY_RUN=true; shift ;;
|
--dry-run) DRY_RUN=true; shift ;;
|
||||||
--force|-f) FORCE=true; shift ;;
|
--force|-f) FORCE=true; shift ;;
|
||||||
--init) DO_INIT=true; shift ;;
|
--init) DO_INIT=true; shift ;;
|
||||||
@@ -264,29 +286,84 @@ cache/
|
|||||||
*.pfl
|
*.pfl
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Целевой каталог репозитория
|
||||||
|
# ============================================================
|
||||||
|
resolve_repo_dir() {
|
||||||
|
local raw="$1"
|
||||||
|
if command -v realpath >/dev/null 2>&1; then
|
||||||
|
# realpath -m: путь может ещё не существовать (--init)
|
||||||
|
if realpath -m "$raw" >/dev/null 2>&1; then
|
||||||
|
realpath -m "$raw"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Fallback без GNU realpath (macOS)
|
||||||
|
if [ -d "$raw" ]; then
|
||||||
|
(cd "$raw" && pwd -P)
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
local parent base
|
||||||
|
parent=$(dirname "$raw")
|
||||||
|
base=$(basename "$raw")
|
||||||
|
if [ -d "$parent" ]; then
|
||||||
|
printf '%s/%s\n' "$(cd "$parent" && pwd -P)" "$base"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
printf '%s\n' "$raw"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$REPO_PATH" ]; then
|
||||||
|
log_error "Не указан путь к репозиторию"
|
||||||
|
echo " Обязательно: --path DIR или --repo DIR" >&2
|
||||||
|
echo " Справка: ./setup-1c-repo.sh --help" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TARGET_DIR="$(resolve_repo_dir "$REPO_PATH")"
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Проверка окружения
|
# Проверка окружения
|
||||||
# ============================================================
|
# ============================================================
|
||||||
log_step "Проверка окружения (ОС: ${OS_KIND})..."
|
log_step "Проверка окружения (ОС: ${OS_KIND})..."
|
||||||
|
log_info "Целевой каталог: $TARGET_DIR"
|
||||||
|
|
||||||
if ! command -v git >/dev/null 2>&1; then
|
if ! command -v git >/dev/null 2>&1; then
|
||||||
log_error "Git не установлен"
|
log_error "Git не установлен"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d ".git" ] && [ ! -f ".git" ]; then
|
if [ ! -d "$TARGET_DIR" ]; then
|
||||||
if [ "$DO_INIT" = true ]; then
|
if [ "$DO_INIT" = true ]; then
|
||||||
if [ "$DRY_RUN" = true ]; then
|
if [ "$DRY_RUN" = true ]; then
|
||||||
echo " [DRY-RUN] git init"
|
echo " [DRY-RUN] mkdir -p \"$TARGET_DIR\""
|
||||||
|
echo " [DRY-RUN] git -C \"$TARGET_DIR\" init"
|
||||||
else
|
else
|
||||||
git init
|
mkdir -p "$TARGET_DIR"
|
||||||
|
log_success "Создан каталог: $TARGET_DIR"
|
||||||
|
git -C "$TARGET_DIR" init
|
||||||
log_success "Выполнен git init"
|
log_success "Выполнен git init"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log_error "Текущая папка не является Git-репозиторием"
|
log_error "Папка не существует: $TARGET_DIR"
|
||||||
echo " Запустите из корня репозитория или добавьте --init" >&2
|
echo " Укажите существующий путь или добавьте --init" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
if [ ! -d "$TARGET_DIR/.git" ] && [ ! -f "$TARGET_DIR/.git" ]; then
|
||||||
|
if [ "$DO_INIT" = true ]; then
|
||||||
|
if [ "$DRY_RUN" = true ]; then
|
||||||
|
echo " [DRY-RUN] git -C \"$TARGET_DIR\" init"
|
||||||
|
else
|
||||||
|
git -C "$TARGET_DIR" init
|
||||||
|
log_success "Выполнен git init"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_error "Папка не является Git-репозиторием: $TARGET_DIR"
|
||||||
|
echo " Укажите корень репозитория (--path) или добавьте --init" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_success "Окружение проверено"
|
log_success "Окружение проверено"
|
||||||
@@ -298,10 +375,10 @@ set_local_config() {
|
|||||||
local key="$1"
|
local key="$1"
|
||||||
local value="$2"
|
local value="$2"
|
||||||
if [ "$DRY_RUN" = true ]; then
|
if [ "$DRY_RUN" = true ]; then
|
||||||
echo " [DRY-RUN] git config --local $key $value"
|
echo " [DRY-RUN] git -C \"$TARGET_DIR\" config --local $key $value"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
git config --local "$key" "$value"
|
git -C "$TARGET_DIR" config --local "$key" "$value"
|
||||||
log_debug "config $key=$value"
|
log_debug "config $key=$value"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,9 +414,10 @@ fi
|
|||||||
# Запись файла с бэкапом
|
# Запись файла с бэкапом
|
||||||
# ============================================================
|
# ============================================================
|
||||||
write_file_safe() {
|
write_file_safe() {
|
||||||
local path="$1"
|
local rel="$1"
|
||||||
local content="$2"
|
local content="$2"
|
||||||
local label="$3"
|
local label="$3"
|
||||||
|
local path="$TARGET_DIR/$rel"
|
||||||
|
|
||||||
if [ -f "$path" ] && [ "$FORCE" != true ]; then
|
if [ -f "$path" ] && [ "$FORCE" != true ]; then
|
||||||
log_warning "$label уже существует — пропуск (используйте --force)"
|
log_warning "$label уже существует — пропуск (используйте --force)"
|
||||||
@@ -357,12 +435,12 @@ write_file_safe() {
|
|||||||
|
|
||||||
if [ -f "$path" ]; then
|
if [ -f "$path" ]; then
|
||||||
cp -f "$path" "${path}.bak"
|
cp -f "$path" "${path}.bak"
|
||||||
log_info "Бэкап: ${path}.bak"
|
log_info "Бэкап: ${rel}.bak"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Пишем через printf, чтобы сохранить финальный перевод строки
|
# Пишем через printf, чтобы сохранить финальный перевод строки
|
||||||
printf '%s\n' "$content" > "$path"
|
printf '%s\n' "$content" > "$path"
|
||||||
log_success "Записан $path"
|
log_success "Записан $rel"
|
||||||
}
|
}
|
||||||
|
|
||||||
log_step "Файл .gitattributes..."
|
log_step "Файл .gitattributes..."
|
||||||
@@ -381,9 +459,9 @@ fi
|
|||||||
if [ "$RENORMALIZE" = true ]; then
|
if [ "$RENORMALIZE" = true ]; then
|
||||||
log_step "Нормализация индекса (git add --renormalize .)..."
|
log_step "Нормализация индекса (git add --renormalize .)..."
|
||||||
if [ "$DRY_RUN" = true ]; then
|
if [ "$DRY_RUN" = true ]; then
|
||||||
echo " [DRY-RUN] git add --renormalize ."
|
echo " [DRY-RUN] git -C \"$TARGET_DIR\" add --renormalize ."
|
||||||
else
|
else
|
||||||
git add --renormalize .
|
git -C "$TARGET_DIR" add --renormalize .
|
||||||
log_success "Индекс перенормализован"
|
log_success "Индекс перенормализован"
|
||||||
log_warning "Проверьте git status — возможны массовые изменения EOL"
|
log_warning "Проверьте git status — возможны массовые изменения EOL"
|
||||||
fi
|
fi
|
||||||
@@ -398,7 +476,7 @@ if [ "$QUIET" != true ]; then
|
|||||||
echo -e "${CYAN}📊 Итог настройки под выгрузку конфигуратора 1С${NC}"
|
echo -e "${CYAN}📊 Итог настройки под выгрузку конфигуратора 1С${NC}"
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
echo " ОС: $OS_KIND ($OS_NAME)"
|
echo " ОС: $OS_KIND ($OS_NAME)"
|
||||||
echo " Каталог: $(pwd)"
|
echo " Каталог: $TARGET_DIR"
|
||||||
echo " Encoding: UTF-8 (BOM сохраняется в содержимом файлов)"
|
echo " Encoding: UTF-8 (BOM сохраняется в содержимом файлов)"
|
||||||
echo " EOL (выгрузка): CRLF в рабочей копии (*.bsl, *.xml, …)"
|
echo " EOL (выгрузка): CRLF в рабочей копии (*.bsl, *.xml, …)"
|
||||||
echo " core.autocrlf: false (управляет .gitattributes)"
|
echo " core.autocrlf: false (управляет .gitattributes)"
|
||||||
@@ -411,13 +489,13 @@ if [ "$QUIET" != true ]; then
|
|||||||
echo -e "${GREEN}✅ Готово${NC}"
|
echo -e "${GREEN}✅ Готово${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${CYAN}Следующие шаги:${NC}"
|
echo -e "${CYAN}Следующие шаги:${NC}"
|
||||||
echo " 1. git status"
|
echo " 1. cd \"$TARGET_DIR\" && git status"
|
||||||
echo " 2. git add .gitattributes .gitignore"
|
echo " 2. git add .gitattributes .gitignore"
|
||||||
echo " 3. git commit -m \"Настройки Git для выгрузки конфигуратора 1С\""
|
echo " 3. git commit -m \"Настройки Git для выгрузки конфигуратора 1С\""
|
||||||
if [ "$RENORMALIZE" != true ]; then
|
if [ "$RENORMALIZE" != true ]; then
|
||||||
echo " 4. При необходимости нормализовать EOL:"
|
echo " 4. При необходимости нормализовать EOL:"
|
||||||
echo " ./setup-1c-repo.sh --renormalize"
|
echo " ./setup-1c-repo.sh --path \"$TARGET_DIR\" --renormalize"
|
||||||
echo " или: git add --renormalize ."
|
echo " или: git -C \"$TARGET_DIR\" add --renormalize ."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
|
|||||||
Reference in New Issue
Block a user