# 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 nouă 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 ``` # ROAGEST\COMUN svn commit -m "modificari roagest" # ROAAUTO\COMUN svn update # aduce fisierele din roagest (alte fisiere -> fara conflict) svn commit -m "modificari roaauto" # ROAGEST\COMUN svn update # aduce fisierele din roaauto ``` Acum ambele copii SVN au tot. E sursa de adevăr. ### 2. Oglindești în git (doar din folderul publisher) ``` cd ROAAUTO\COMUN git add -A git commit -m "sync svn" git push ``` ### 3. Celălalt folder: aliniere, NU commit ``` cd 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 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.