Files
comun/docs/fluxul_svn_git.md

2.4 KiB

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.

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/<subiect> si comite doar acolo; git diff main..claude/<subiect> 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.