# Scripturi uzuale (sarcini repetitive)

**Regula: o sarcina care se repeta se pune intr-un script si de atunci se apeleaza scriptul.**
Nu reface lantul de pasi din memorie la fiecare sesiune si nu da unui subagent aceleasi instructiuni
a doua oara — daca a doua oara e nevoie de acelasi lucru, scrie scriptul.

| Cand | Ce rulezi | Ce face |
|---|---|---|
| inceput de sesiune, si dupa orice `svn update` | `roa_sync.bat` din radacina proiectului (→ `COMUN\scripts\roa_sync.ps1`) | `svn update` → `git_sync` (texte `.??2`) → commit `sync SVN r<rev>` → reconciliere cu `origin` (ff/rebase) → push conditionat → inchide branch-urile `claude/*` terminate |
| inainte de un commit | `COMUN\utile\curatenie.ps1` (`-DryRun` doar listeaza) | sterge artefactele de lucru netrackuite: patch-uri de review, `handoff*`/`runda*`/`propuneri_*`, backup-uri `*.pre_runda*.bak`, artefacte de test |
| la "commit / push" | `COMUN\utile\livrare.ps1 -Mesaj "..." [-Comun]` | `git_sync` → `curatenie` → verificari de livrare → status/diff pe ambele repo-uri → commit + push. `COMUN` doar cu `-Comun`; `push --force` nu exista |
| editare `.vcx`/`.scx` | `D:\ROA\UTIL\foxbin2prg\` : `git_sync.ps1`, `vfp_symbols.ps1`, `txt2vcx.ps1` | reimprospatare text in-arbore, index de simboluri, write-back cu fidelity-check |
| actualizare de baza de date blocata | `COMUN\utile\diag_actualizare.ps1 -Alias <TNS>` | `UPD_ISTORIC` → `UPD_LOG` → `script_master.log` → versiuni per schema → job → tablespace → verdict. Vezi `depanare-pack-update.md` |
| spatiu plin la un client | `COMUN\utile\diag_spatiu.ps1 -Alias <TNS> [-Disc] [-SysPassword]` | tablespace, audit, ADR, FRA, disc server, top segmente. Vezi `depanare-spatiu-oracle.md` |
| publicare scripturi de baza de date | `COMUN\utile\publicare_scripturi.ps1 [-Luna YYYY-MM] [-Fisier ...] [-DryRun]` | import in `UPD_DATABASE` → arhiva lunara `database[n]_*.zip` + indexi in `_UPDATE`, cu verificare octet cu octet. Vezi `publicare-scripturi-db.md` |
| teste UI VFP | harness din `COMUN\utile\Teste` | vezi `testare-ui-vfp.md` |
| citirea emailurilor de pe conturile romfast | `COMUN\utile\citeste_email.ps1 [-Cauta ...] [-Nr <linie>]` | listeaza/extrage mesaje din mbox-urile Thunderbird Portable (conectorul Gmail nu vede conturile romfast). Vezi `email-thunderbird.md` |

Documentatia **nu** se genereaza automat si nu exista niciun hook care s-o scrie — `livrare.ps1`
doar semnaleaza ce lipseste (changelog neatins, binar VFP fara textul lui sincronizat).

Candidati inca nescrisi: un helper pentru rulat SQL prin `sqlplus` (fisier ASCII + `@fisier.sql`,
refacut manual la fiecare interogare) si un wrapper care ruleaza `diag_spatiu.ps1` peste toti
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 <fisier>` / `svn commit -F <fisier>`, 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`).
