diff --git a/docs/scripturi-uzuale.md b/docs/scripturi-uzuale.md index 35365b7..4474e06 100644 --- a/docs/scripturi-uzuale.md +++ b/docs/scripturi-uzuale.md @@ -22,3 +22,11 @@ refacut manual la fiecare interogare) si un wrapper care ruleaza `diag_spatiu.ps clientii, cu un rezumat pe un rand per server. Fluxul SVN ↔ git din spatele lui `roa_sync`: `fluxul_svn_git.md`. + +**Mesaje de commit din PowerShell catre `git`/`svn` (exe native): niciodata `-m $mesaj`.** +PowerShell nu escapeaza ghilimele/backtick/`$` cand paseaza argumente catre un exe nativ - un +mesaj cu `"..."` sparge comanda. Solutie: scrie mesajul intr-un fisier temporar si foloseste +`git commit -F ` / `svn commit -F `, cu textul **UTF-8 fara BOM** +(`[IO.File]::WriteAllText($cale, $mesaj, (New-Object Text.UTF8Encoding $false))` - `Out-File +-Encoding utf8` in PS 5.1 scrie BOM, care ajunge ca prim caracter in mesajul de commit) si +**LF, nu CRLF** (`svn commit -F` refuza fisiere cu linii mixte CRLF/LF: `E135000`). diff --git a/utile/livrare.ps1 b/utile/livrare.ps1 index 09fc046..7d3e2f2 100644 --- a/utile/livrare.ps1 +++ b/utile/livrare.ps1 @@ -386,7 +386,9 @@ try { $mesajDir = Join-Path ([System.IO.Path]::GetTempPath()) ('livrare_' + [guid]::NewGuid().ToString('N')) New-Item -ItemType Directory -Path $mesajDir | Out-Null $mesajFile = Join-Path $mesajDir 'mesaj_commit.txt' - $Mesaj | Out-File -FilePath $mesajFile -Encoding utf8 + # UTF8Encoding($false): fara BOM - Out-File -Encoding utf8 scrie BOM in PS 5.1, iar git + # il baga in mesajul de commit ca prim caracter (U+FEFF) daca-l citim cu -F. + [System.IO.File]::WriteAllText($mesajFile, $Mesaj, (New-Object System.Text.UTF8Encoding $false)) $exitCode += (Comite-Si-Impinge $ProjectRoot 'proiect' $FaraPush $mesajFile)