Files
flora2roa/docs/flux_git_flora2roa.md

3.6 KiB

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 -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:

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.