# Flux SVN + git pentru COMUN **SVN = șeful** (munca reală circulă prin el). **git = oglindă** pentru unelte (Claude, căutare). git primește de la SVN, niciodată invers. ## Reguli 1. **Munca reală se comite DOAR în SVN.** Nu face `git commit` cu o modificare noua care n-a trecut prin SVN. 2. **git se împrospătează DIN svn**, într-o singură direcție. 3. **COMUN se publică pe git dintr-UN SINGUR folder** (publisher, ex. `ROAAUTO\COMUN`). Celelalte doar se aliniază la origin. ## Lucrat în paralel în 2 proiecte (ex. roagest + roaauto), fișiere diferite 1. **Împaci în SVN**: `svn commit` in ROAGEST\COMUN -> `svn update` in ROAAUTO\COMUN (aduce fisierele din roagest, fara conflict pe fisiere diferite) -> `svn commit` acolo -> `svn update` inapoi in ROAGEST\COMUN. Acum ambele copii SVN au tot — e sursa de adevăr. 2. **Oglindești în git, doar din folderul publisher**: `git add -A` + `git commit` + `git push` in ROAAUTO\COMUN. 3. **Celălalt folder: aliniere, NU commit** — in ROAGEST\COMUN: `git fetch origin` + `git reset --hard origin/main`. Sigur: fișierele sunt deja identice cu origin (le-a făcut svn), `reset` doar mută pointerul. Când te muți dintr-un proiect în altul: `svn update` in proiectul unde intri, apoi `git reset --hard origin/main` in COMUN, ca git-ul sa fie curat. ## Regula care rezumă tot > Un singur folder publică în git (commit+push). Celelalte doar `git reset --hard origin/main`. > Munca circulă prin SVN; git fotografiază rezultatul. ## Model de branching (git urmareste text .??2) git urmareste versiunile text FoxBin2Prg (.vc2/.sc2/…), improspatate in-arbore cu `git_sync.ps1` la inceput de sesiune si inainte de orice commit; nu comite cat timp `git_sync` raporteaza esecuri (exit nenul). Doua benzi: - **`main` = oglinda SVN**: primeste DOAR commit-uri `sync SVN rN`, facute din stare curata (imediat dupa `svn update`, inainte de lucru local). - **Claude lucreaza pe branch** `claude/` si comite doar acolo; `git diff main..claude/` arata exact si numai munca lui. - Dupa ce modificarile intra in SVN (`svn commit` facut de utilizator), branch-ul se inchide (merge in `main` la urmatorul sync sau stergere). - Igiena: sync pe `main` doar din stare curata — `svn update` in mijlocul lucrului amesteca binarele pe disc.