# Flux git + SVN in FLORA2ROA Proiectul e urmarit in PARALEL de doua sisteme, cu roluri diferite: - **SVN** (`http://svnroa:3001/svn/ROAIMPORT/FLORA2ROA`) ramane **sursa de adevar**, inclusiv pentru binarele VFP (`frm_import.scx/.sct`, `flora2roa.pjx/.pjt`, `.fll`, `.exe`). - **git** urmareste **versiunile TEXT** ale binarelor (`.sc2`, `.pj2`), generate in arbore de FoxBin2Prg, plus sursele `.prg`, scripturile de test si documentatia. Binarele VFP sunt git-ignored, ca diff-urile sa fie lizibile. Metoda generala si procedura de inrolare: `D:\ROA\ROACONT\COMUN\docs\inrolare-proiect-git-text.md` si `fluxul_svn_git.md`. ## Particularitatea acestui proiect FLORA2ROA **nu are folder `COMUN\`** (spre deosebire de ROACONT/ROAGEST/ROAFACTURARE, unde COMUN e un external SVN cu repo git propriu). Foloseste doar un `comun.h` local. Prin urmare: - nu exista `COMUN\.git` de sincronizat aici; repo-ul `romfast/comun.git` e gestionat din proiectele care il contin efectiv; - scriptul partajat `COMUN\scripts\roa_sync.ps1` nu ajunge in acest proiect prin svn update, deci exista un echivalent local: `Teste\roa_sync.ps1`, apelat de `roa_sync.bat` din radacina. ## La inceput de sesiune ``` roa_sync.bat ``` Face, in ordine: `svn update` -> regenerarea textelor `.??2` (git_sync) -> commit `sync SVN r` pe `main` -> reconciliere cu `origin` -> push (doar commit-uri de sync; unul non-sync blocheaza push-ul automat, ca sa treaca prin review). Verificare rapida fara SVN: `powershell -File Teste\roa_sync.ps1 -GitOnly`. Regula de push, verificata pe un remote local de test: un commit `sync SVN` se publica automat, iar orice commit non-sync nepushed **blocheaza** push-ul automat si apare ca avertisment, ca sa treaca intai prin review. ## Ce urmareste git Urmarite: `.prg`, `.h`, `.sc2`/`.pj2` (textele binarelor), `Teste\`, `docs\`, `settings.ini`, `settings.flora.ini`, `app.ico`, `.fll` (dependente de rulare, versionate si in SVN), exemplele mici de import care sunt si in SVN. Ignorate (`.gitignore`): binarele convertibile (`.scx/.sct/.pjx/.pjt/...`), compilatele (`.fxp`), `flora2roa.exe`, `log\`, artefactele testelor (`Teste\uisync`, `Teste\screenshots`, `*_log.txt`), si restul folderului `EXEMPLE\` (~900 fisiere, ~80 MB de date locale de lucru; in git raman doar cele 7 exemple versionate si in SVN). `.gitattributes` are `* -text`: SVN ramane autoritatea pentru sfarsiturile de linie, git nu normalizeaza nimic (altfel ar aparea modificari fantoma dupa fiecare `svn update`). Simetric, `svn:ignore` pe radacina acopera `.git`, `.gitignore`, `.gitattributes` si toate textele `.??2`, ca sa nu ajunga din greseala in SVN. ## Editarea formularului pe text ```powershell powershell -ExecutionPolicy Bypass -File Teste\text_din_bin.ps1 # binar -> frm_import.sc2 # editezi frm_import.sc2 byte-safe, in Windows-1252 (vezi conventie_encoding_cp1252.md) powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2 -DryRun powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2 ``` Write-back-ul face fidelity check pe octeti inainte de a atinge binarul. Dupa el, binarul apare modificat in SVN: **`svn commit` doar cu acordul explicit al utilizatorului**. ## De facut (blocant, cere interventia utilizatorului) Repo-ul gitea `romfast/flora2roa.git` **nu exista inca**; procedura interzice crearea de repo-uri prin API. Dupa ce e creat din interfata gitea: ```powershell git -C D:\PROIECTE\FLORA\FLORA2ROA remote add origin git@gitea.romfast.ro:romfast/flora2roa.git git -C D:\PROIECTE\FLORA\FLORA2ROA push -u origin main ``` Pana atunci repo-ul e valid local, iar `roa_sync.bat` semnaleaza lipsa remote-ului si continua.