Documentatie flux git+SVN si roa_sync pentru sincronizarea de inceput de sesiune
This commit is contained in:
75
docs/flux_git_flora2roa.md
Normal file
75
docs/flux_git_flora2roa.md
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# 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`.
|
||||||
|
|
||||||
|
## 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.
|
||||||
Reference in New Issue
Block a user