actualizare

This commit is contained in:
2026-08-03 08:30:21 +03:00
parent 7f06f3ca4c
commit 9b6671b0ed
3 changed files with 17 additions and 95 deletions

View File

@@ -9,7 +9,7 @@ A local shared copy of **FoxBin2Prg** (the VFPX tool by Fernando D. Bozzo, maint
This directory is a git clone with two remotes:
- **`origin`** = `https://github.com/fdbozzo/foxbin2prg.git` (upstream, read-only). `master` tracks `origin/master` and stays a pristine mirror.
- **`romfast`** = `git@gitea.romfast.ro:romfast/foxbin2prg.git` (our fork on Gitea, SSH). Working branch **`romfast`** (default on Gitea) = upstream `master` + the ROA additions committed (`vcx2txt.ps1`, `PROMPT_cautare_vfp.md`, `CLAUDE.md`, `git_svn_parallel_init_prompt.md`). The pre-git local state is kept on branch `local-snapshot-v1.21.04`.
- **`romfast`** = `git@gitea.romfast.ro:romfast/foxbin2prg.git` (our fork on Gitea, SSH). Working branch **`romfast`** (default on Gitea) = upstream `master` + the ROA additions committed (`vcx2txt.ps1`, `PROMPT_cautare_vfp.md`, `CLAUDE.md`). The pre-git local state is kept on branch `local-snapshot-v1.21.04`.
Update flow (sync fork from upstream): `git fetch origin``git checkout master && git merge --ff-only origin/master``git checkout romfast && git merge master``git push romfast romfast master`. After any update, regenerate binaries/EXE in VFP9 with `DO ReCreate_FoxBin2Prg.prg` (an error about `TESTS\FXUResults.db2` is expected). Text caches live outside this folder (`D:\ROA\_vfp_textcache\`, see below) so `ReCreate` never touches them; compiled binaries are kept out of git via the upstream `.gitignore` plus `.git/info/exclude` (which also still ignores any stray local `_textcache*`).

View File

@@ -1,87 +0,0 @@
# Prompt: init git in paralel cu SVN pentru un proiect ROA
Foloseste acest prompt intr-o sesiune Claude Code noua, deschisa in radacina proiectului
tinta (ex. `D:\ROA\ROAIMOB`). Functioneaza generic pentru orice proiect VFP din `D:\ROA\`
care are structura ROAACNPRO (proiect + subfolder COMUN\ partajat, ambele in SVN).
---
```
Vreau sa initializezi git pentru proiectul VFP din directorul curent, in paralel cu SVN-ul
existent (nu atinge SVN, nu rula comenzi svn, doar adauga .svn/ in .gitignore).
Structura e identica cu D:\ROA\ROAACNPRO: acest folder e propriul proiect VFP (are un .PJX
al lui), si contine un subfolder COMUN\ care e framework-ul PARTAJAT intre toate aplicatiile
ROA, versionat separat prin SVN (are propriul .svn\).
Fa exact ce s-a facut deja pentru ROAACNPRO (poti citi acolo ca referinta/sablon):
- D:\ROA\ROAACNPRO\.gitignore (sablon pentru .gitignore-ul proiectului principal)
- D:\ROA\ROAACNPRO\COMUN\.gitignore (sablon pentru .gitignore-ul din COMUN)
- D:\ROA\ROAACNPRO\CLAUDE.md (conventii proiect) si docs\cautare_vcx_vct.md (cum se cauta
cod in interiorul .vcx/.scx binare, via D:\ROA\UTIL\foxbin2prg\vcx2txt.ps1)
Pasi:
1. Verifica intai ce exista deja: `git status`/`.git` in radacina si in COMUN\, si
`git remote -v` daca exista deja vreun remote configurat gresit (asa cum a fost cazul la
ROAACNPRO, unde originul proiectului principal pointa gresit catre repo-ul comun.git).
2. REPO PRINCIPAL (radacina acestui folder):
- Daca nu exista .git, `git init -b main`.
- Creeaza/adapteaza .gitignore dupa modelul ROAACNPRO/.gitignore (artefacte VFP compilate:
*.fxp, *.mpx, *.bak, *.mpr, *.err, log.txt, *.tmp, *.dct, *.exe, cruft Windows), plus
obligatoriu `COMUN/` (COMUN e gestionat de git-ul lui separat, nu de-al acestui repo)
si `.svn/`.
- Deduce numele repo-ului gitea dupa conventia romfast/<nume-folder-lowercase>.git
(ex. romfast/roaimob.git). INAINTE sa creezi/pushezi orice, verifica cu
`git ls-remote git@gitea.romfast.ro:romfast/<nume>.git` daca exista deja si ce contine
(clone --depth 1 intr-un folder temporar din scratchpad daca ai dubii). Daca exista deja
cu istoric care nu se potriveste cu ce ai local, OPRESTE-TE si intreaba-ma inainte sa
faci push sau orice suprascriere.
- Daca remote-ul e gol/nou: add -A, commit "Initial commit — sursa <PROIECT>", adauga
origin, push normal (fara --force).
3. COMUN\ (subfolder-ul partajat):
- Initializeaza un git SEPARAT, propriu, in interiorul COMUN\ (COMUN are propriul .git,
nu e tracked de repo-ul principal — de-asta l-am exclus mai sus).
- .gitignore propriu in COMUN\ dupa modelul ROAACNPRO/COMUN/.gitignore (artefacte VFP +
`.svn/` + `bash.exe.stackdump`).
- Origin-ul din COMUN\ trebuie sa fie EXACT acelasi repo pentru toate proiectele ROA:
git@gitea.romfast.ro:romfast/comun.git — repo-ul asta e deja populat (din COMUN-ul lui
ROAACNPRO). NU face commit+push orbeste peste el.
- Fa intai `git fetch origin`, compara continutul de pe origin/main cu fisierele locale
din acest COMUN\ (diff pe folder, nu doar pe nume). Daca sunt identice sau diferentele
sunt neglijabile, seteaza pur si simplu branch-ul local sa urmareasca origin/main (fara
sa strici fisierele din working copy SVN). Daca sunt diferente reale intre COMUN-ul
acestui proiect si cel deja impins pe gitea, arata-mi un rezumat al diferentelor si
intreaba-ma explicit cum procedez (nu face force-push fara aprobarea mea explicita —
ar sterge ireversibil istoricul comun tuturor proiectelor ROA).
4. Cautare in cod VFP binar (.vcx/.scx) pentru acest proiect:
- Foloseste acelasi vcx2txt.ps1, dar parametrizat pentru proiectul curent (nu ROAACNPRO):
powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\vcx2txt.ps1 `
-Project D:\ROA\<PROIECT>\<proiect>.PJX -ProjectRoot D:\ROA\<PROIECT> `
-CacheRoot D:\ROA\_vfp_textcache\<proiect>
- Cache separat per proiect, in D:\ROA\_vfp_textcache\ (in AFARA folderului foxbin2prg, ca
ReCreate_FoxBin2Prg.prg sa nu-l reconverteasca). Nu-l amesteca cu cache-ul ROAACNPRO
(D:\ROA\_vfp_textcache\roacnpro). Grep in cache-ul respectiv, la fel ca in docs\cautare_vcx_vct.md.
5. La final, adauga/actualizeaza CLAUDE.md al acestui proiect cu o sectiune scurta: git ruleaza
in paralel cu SVN legacy (SVN ramane sursa "vie" pentru COMUN, sincronizat manual catre git);
COMUN e partajat intre toate aplicatiile ROA prin acelasi git@gitea.romfast.ro:romfast/comun.git;
cautarile in .vcx/.scx se fac cu vcx2txt.ps1 parametrizat pentru acest proiect (vezi mai sus).
Inainte de orice `push --force` sau orice operatie care ar suprascrie istoric remote deja
existent (mai ales pe romfast/comun.git, care e comun mai multor proiecte), opreste-te si
intreaba-ma explicit — nu decide singur.
```
---
## Note
- Cel mai sensibil pas e COMUN\: daca versiunea de COMUN a noului proiect difera de cea deja
impinsa pe `comun.git` (din ROAACNPRO), Claude trebuie sa se opreasca si sa intrebe cum se
reconciliaza, nu sa faca force-push automat.
- Daca `romfast/<proiect>.git` nu exista inca pe gitea, trebuie creat gol acolo inainte de push
(manual sau prin API) — altfel push-ul esueaza cu "repository not found".

View File

@@ -24,8 +24,9 @@
Esec partial: la esecul unui fisier continua cu restul, colecteaza esecurile, le raporteaza la
final si iese cu exit code nenul.
Curatare orfani: textele .??2 fara binar corespondent (binar sters din SVN) se sterg si se
raporteaza; la fel .db2-urile ale caror tabele au IESIT din lista -DbfList.
Curatare orfani: textele .??2 fara binar corespondent (binar sters din SVN) si .db2-urile ale
caror tabele au IESIT din lista -DbfList sunt DOAR RAPORTATE implicit; se sterg numai cu
-OrphanCleanup explicit.
Toate invocarile FoxBin2Prg.EXE trec prin Invoke-FoxBin2PrgSafe (timeout + taskkill).
@@ -53,7 +54,10 @@
Reconverteste chiar daca textul e la zi.
.PARAMETER NoOrphanCleanup
Nu sterge textele orfane (doar le raporteaza).
Pastrat pentru compatibilitate: forteaza doar-raportare chiar si cu -OrphanCleanup.
.PARAMETER OrphanCleanup
Sterge efectiv textele orfane. Implicit orfanii sunt DOAR raportati, nu stersi.
.EXAMPLE
powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\git_sync.ps1 -ProjectRoot D:\ROA\ROACONT
@@ -65,14 +69,19 @@ param(
[string[]]$DbfList = @('Locale\locale*.dbf','Help\*.dbf','DATE\Optiuni_*.dbf',
'COMUN\clase\Locale\*.dbf','COMUN\datemenu\*.dbf','COMUN\datemenu\xold\*.dbf',
'COMUN\Drepturi utilizatori\*\*.dbf','COMUN\utile\GridExtras\gridextras.dbf',
'COMUN\utile\ListProperty\lproperty.dbf','COMUN\utile\hpdf\*.dbf','COMUN\utile\hpdf\ReportOutput\*.dbf'),
'COMUN\utile\ListProperty\lproperty.dbf','COMUN\utile\hpdf\*.dbf','COMUN\utile\hpdf\ReportOutput\*.dbf',
# acelasi set si fara prefixul COMUN\, pentru rulari cu -ProjectRoot chiar pe radacina COMUN
'clase\Locale\*.dbf','datemenu\*.dbf','datemenu\xold\*.dbf',
'Drepturi utilizatori\*\*.dbf','utile\GridExtras\gridextras.dbf',
'utile\ListProperty\lproperty.dbf','utile\hpdf\*.dbf','utile\hpdf\ReportOutput\*.dbf'),
# clase FFC/third-party cu #INCLUDE: roundtrip izolat = fals-negativ; editare doar in IDE, fara write-back
[string[]]$RoundtripExempt = @('COMUN\clase\accessibility.vcx','COMUN\clase\oinventar.vcx','COMUN\clase\_gdiplus.vcx','COMUN\clase\_reportlistener.vcx','COMUN\utile\foxcharts\foxcharts.vcx','COMUN\utile\web\_webview.vcx'),
[string]$SubDir = '',
[int]$TimeoutSeconds = 60,
[int]$MaxDb2Mb = 5,
[switch]$Force,
[switch]$NoOrphanCleanup
[switch]$NoOrphanCleanup,
[switch]$OrphanCleanup
)
$ErrorActionPreference = 'Stop'
@@ -283,7 +292,7 @@ if (-not $SubDir) {
}
if ($isOrphan) {
$orphansDeleted += (Get-RelPath $t.FullName)
if (-not $NoOrphanCleanup) { Remove-Item -LiteralPath $t.FullName -Force -ErrorAction SilentlyContinue }
if ($OrphanCleanup -and -not $NoOrphanCleanup) { Remove-Item -LiteralPath $t.FullName -Force -ErrorAction SilentlyContinue }
}
}
}
@@ -295,7 +304,7 @@ Write-Host ''
Write-Host "--- Sumar git_sync ---"
Write-Host "Convertite: $ok Sarite(la zi): $up Esuate: $($failures.Count)"
if ($orphansDeleted.Count -gt 0) {
$verb = if ($NoOrphanCleanup) { 'raportate (nesterse)' } else { 'sterse' }
$verb = if ($OrphanCleanup -and -not $NoOrphanCleanup) { 'sterse' } else { 'raportate (nesterse)' }
Write-Host "Orfani ${verb}: $($orphansDeleted.Count)"
$orphansDeleted | ForEach-Object { Write-Host " orfan: $_" }
}