diff --git a/docs/fluxul_svn_git.md b/docs/fluxul_svn_git.md new file mode 100644 index 0000000..1679bd7 --- /dev/null +++ b/docs/fluxul_svn_git.md @@ -0,0 +1,50 @@ +# 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.