3.4 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\.gitde sincronizat aici; repo-ulromfast/comun.gite gestionat din proiectele care il contin efectiv; - scriptul partajat
COMUN\scripts\roa_sync.ps1nu ajunge in acest proiect prin svn update, deci exista un echivalent local:Teste\roa_sync.ps1, apelat deroa_sync.batdin 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.
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.