Files
comun/docs/fluxul_svn_git.md
2026-08-20 17:36:06 +03:00

4.4 KiB

COMUN: flux SVN + git

SVN = sursa de adevăr. git = oglindă. Pe main din COMUN scrie doar roa_sync.

De ce: COMUN e același repo git ținut în 8 copii, câte una per proiect. main are un singur furnizor — SVN, prin roa_sync. Conținut intrat pe altă ușă revine oricum ca sync SVN rN după svn commit: același conținut, alt SHA, conflict.

Utilizatorul doar aprobă

Comenzile le rulezi tu: roa_sync.bat, svn commit, roa_sync.bat. El nu ține minte niciun pas și nu tastează nimic — dar nimic nu se comite fără un „da" explicit de la el.

Deci: nu te opri tăcut după ce livrezi diff-ul. Întreabă, cu fișierele și mesajul propuse.

Flux

   .prg / .md / .ps1 / .sql              .vc2 / .sc2
            │                                 │
            │                        txt2vcx.ps1  <- IMEDIAT
            │                                 │
            │                        verifica pe BINAR
            └────────────────┬────────────────┘
                             │
                antet la zi  +  test rulat
                             │
                diff ca fisier in docs\
                             │
                INTREBI: fisiere + mesaj  -->  "da" ?  --no--> stop
                             │ da
                svn commit TINTIT   (.prg | .scx + .sct  -- niciodata .sc2)
                             │
                roa_sync.bat  -->  main:  sync SVN rN

Cazuri

Intri în proiect → rulezi roa_sync.bat, fără să întrebi, dacă svn status și git status sunt curate. Dacă nu sunt, întrebi întâi — pot fi modificări nefinalizate ale altcuiva.

Ai editat .prg / .md / .ps1 / .sql → antetul la zi, testul rulat, diff-ul ca fișier în docs\.

Ai editat .vc2 / .sc2txt2vcx.ps1 imediat, apoi verifici pe binar (reconvertești binarul într-un cache temporar și compari cu textul din arbore; mtime nu dovedește nimic). Text fără write-back = modificarea nu există. Abia apoi antet / test / diff.

Vrei să-ți ții munca în git → branch. În repo-ul proiectului: liber. În COMUN: claude/<subiect>, commit doar acolo, niciodată pe main.

Ai terminat branch-ul → în repo-ul proiectului: merge în main, normal. În COMUN: nu face merge. După svn commit, conținutul ajunge pe main ca sync SVN rN; branch-ul se șterge.

Vrei svn update → doar din stare curată. Niciodată în mijlocul lucrului: aduce binare noi peste ce ai pe disc. Dacă ai text .??2 editat fără write-back, fă întâi write-back-ul.

svn update a dat conflict → oprește-te și raportează. Binarele nu se rezolvă manual.

După svn update, git arată fișiere modificate → e oglinda rămasă în urmă, nu munca ta. Nu le comite de mână; le ia roa_sync într-un sync SVN rN.

Diff-ul e gata → ceri aprobarea, explicit și complet: lista fișierelor de comis și mesajul propus. Nu presupune „da" din tăcere și nu amâna întrebarea pentru „mai târziu" — el nu ține minte pasul, tu îl ții.

A zis „da" → rulezi tu svn commit țintit, doar fișierele aprobate — pe binar (.scx + .sct), nu pe .sc2. Niciodată pe tot COMUN: intră zgomotul de compilare VFP. Imediat după, rulezi roa_sync.bat. Raportezi revizia SVN și ce a intrat pe main.

A zis „nu" sau a cerut modificări → nu comiți, nu insiști, nu rulezi roa_sync. Lucrarea rămâne necomisă pe disc și o raportezi ca atare la predarea contextului.

Predai contextul → raportează explicit dacă ai lăsat text .??2 editat fără write-back. E stare periculoasă.

Interzis

  • git commit / git push / git merge pe main în COMUN
  • copierea unui fișier dintr-o copie de COMUN în alta — svn update îl duce; copierea = intrare dublă
  • write-back pe .fr2 / .mn2 / .lb2 / .pj2 — nu e suportat; acolo textul se citește, modificarea se face în IDE

Copii rămase în urmă

Nimic nu se sincronizează în fundal. O copie neatinsă de luni se aliniază singură la primul roa_sync.bat rulat de acolo: svn update → regenerare text → sync SVN rN → fetch → ff sau rebase --empty=drop, care aruncă automat sync-urile al căror conținut e deja pe origin. De aceea regula veche „un singur folder publisher" e retrasă: numărul de copii nu mai contează.