Files
flora2roa/docs/flux_git_flora2roa.md

80 lines
3.6 KiB
Markdown

# 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<rev>`
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.