8.2 KiB
8.2 KiB
name, description
| name | description |
|---|---|
| roa-onboarding | Inroleaza un calculator nou sau un proiect nou ROA in fluxul SVN + git-text FoxBin2Prg - cheie SSH Gitea (+ host/port 222), global-ignores SVN, clone foxbin2prg, clone git per proiect si COMUN, conversie initiala, roa_sync.bat, expunerea skill-urilor (leaga_skills.ps1) si backstop-ul de rutare (scrie_backstop_skills.ps1). Foloseste-l cand utilizatorul spune "inroleaza proiectul", "adauga proiectul in fluxul git-text", "pregateste un calculator nou", "cloneaza proiectul pe masina asta", "expune skill-urile", "aplica backstop-ul", sau cand un proiect nu are inca .git / COMUN.git / roa_sync.bat. Nu acopera editarea de text VFP (skill roa-vfp-text-edit) si nu face commit-uri SVN. |
Inrolarea unui calculator nou sau a unui proiect nou ROA (SVN + git-text FoxBin2Prg)
Doar PowerShell (NU Bash - bash.exe crapa pe aceste masini si lasa stackdump-uri). Niciun
svn commit, nicio modificare de binare VFP in acest flux. Nu forta (--force, reset --hard)
fara sa arati intai utilizatorului ce s-ar pierde.
Cand se foloseste
- Calculator nou: nu are cheie SSH la Gitea, nu are
D:\ROA\UTIL\foxbin2prg, nu are clonele git ale proiectelor (repo-urile Gitea EXISTA deja si doar se cloneaza). - Proiect nou in fluxul git-text: repo-ul Gitea inca nu exista sau proiectul nu are
.git,COMUN\.git,roa_sync.bat(nu are inca fluxul in care git urmareste textele.??2). - "expune skill-urile pe masina asta" (
leaga_skills.ps1), "aplica backstop-ul de rutare" (scrie_backstop_skills.ps1).
Nu acopera: editarea .vc2/.sc2 (skill roa-vfp-text-edit), commit/sync curent (skill
roa-git-svn-commit).
Pasi
A. Preconditii pe masina
- VFP9 IDE instalat (pentru
.frx/.mnx/.lbx/.pjx/.dbc, care nu au write-back text). - Client SVN spre
http://svnroa:3001/svn/ROA; Git for Windows (aducegit,ssh,ssh-keygen); PowerShell 5.1+. - Cheie SSH + host Gitea:
ssh-keygen -t ed25519 -C "<user>@<masina>"; porneste agentul (Start-Service ssh-agent),ssh-addcheia; adauga cheia.pubin Gitea (profil -> Settings -> SSH Keys).%USERPROFILE%\.ssh\config: Gitea raspunde pe portul 222, iar DNS-ulgitea.romfast.ropoate lipsi, deci adauga explicit:Host gitea.romfast.ro HostName 10.0.20.165 User git Port 222- Verificare:
ssh -T git@gitea.romfast.roreuseste (nu "Permission denied").
%APPDATA%\Subversion\config,[miscellany]: adauga laglobal-ignores*.vc2 *.sc2 *.fr2 *.mn2 *.lb2 *.pj2 *.dc2 *.db2 *.dbf.cfg(altfel textele FoxBin2Prg apar ca?insvn statussi riscasvn addaccidental).- Utilitarul:
git clone git@gitea.romfast.ro:romfast/foxbin2prg.git D:\ROA\UTIL\foxbin2prg(branchromfast;git remote -vsa arate fork-ul romfast, nu upstream-ul github).
B. Proiect nou in fluxul git-text
- Inventar INAINTE de orice stergere: exista
.git? (git remote -v, branch). ExistaCOMUN\.git? Pe un repo vechi,git ls-files *.dbfarata tabelele urmarite ca binare - candidate la.db2. - Conversie completa:
& D:\ROA\UTIL\foxbin2prg\git_sync.ps1 -ProjectRoot D:\ROA\<PROIECT>. Esecurile se investigheaza fiecare: meniuri pre-VFP9 raman binare (exceptie!in.gitignore); clase FFC/third-party cu roundtrip fals-negativ ->-RoundtripExempt; un binar care nu poate fi nici macar CITIT (memo invalid) se repara (perechea.vcx+.vctvalida dintr-o alta clona COMUN). Nu se trece mai departe cu esecuri neexplicate (exit nenul). .gitignore(modelD:\ROA\ROACONT\.gitignore: fiecare.dbfcare are.db2se ignora INDIVIDUAL; nu se ignora*.??2) +.gitattributescu* -text(SVN ramane autoritatea EOL).- Repo proiect:
git init -b main;git remote add origin git@gitea.romfast.ro:romfast/<proiect-lowercase>.git;git add -A. VERIFICARE obligatorie inainte de commit: 0 binare convertibile urmarite (cu exceptiile!justificate), textele.??2prezente, 0 fisiere dinCOMUN/. CommitInitial: flux text FoxBin2Prg ...; apoigit push -u origin main. - COMUN:
git init -b mainin<PROIECT>\COMUN;git remote add origin git@gitea.romfast.ro:romfast/comun.git;git fetch origin;git reset origin/main(mixed, pastreaza discul);git checkout origin/main -- .gitignore. Diferentele ramase ingit status= revizii SVN diferite (normal). Nu comite incomun.gitdintr-o clona decalata. roa_sync.bat: copiazaD:\ROA\ROAFACTURARE\roa_sync.batin radacina proiectului (generic, foloseste%~dp0si cheamaCOMUN\scripts\roa_sync.ps1) si include-l in commit.- Verificari finale: acoperire (fiecare binar convertibil din arbore, inclusiv COMUN, are text
.??2langa el, mai putin exceptiile!);svn statusfara binare M si fara.??2adaugat;git ls-remote origin main= HEAD-ul local. Raport: numar texte per tip, esecuri/scutiri, commit hash, push status.
C. Skill-uri de agent pe masina
- Expune (o singura data per masina):
powershell -ExecutionPolicy Bypass -File D:\ROA\<PROIECT>\COMUN\utile\leaga_skills.ps1(intai-DryRun). Creeaza symlink-uri in%USERPROFILE%\.claude\skills\catreCOMUN\skills\<nume>- fara copiere, deci aceleasi fisiere sunt vazute si de Claude Code, si de opencode. Idempotent; nu sterge un director real cu acelasi nume. - Backstop per proiect:
COMUN\utile\scrie_backstop_skills.ps1 -Root D:\ROA -Proiecte <proiecte>(intai-DryRun; fara-Proiecte= toate proiectele detectate - NU rula asa fara acord). ScrieAGENTS.mdsi un bloc marcat intre<!-- roa-skills:start -->si<!-- roa-skills:end -->inCLAUDE.md. Idempotent. - Dupa orice
git pull/roa_syncinCOMUN\sau dupa modificarea skill-urilor, re-ruleaza pasii 13+14 (sunt idempotenti). NU copia manual fisiere de skill - se pierde legatura cu sursa.
Capcane
bash.execrapa pe aceste masini si lasa stackdump-uri - foloseste EXCLUSIV PowerShell.- Parametrii array (ex.
-DbfList,-RoundtripExempt) NU se pot pasa prinpowershell -File: invoca scriptul in-process cu&, altfel array-ul se colapseaza. - Gitea raspunde pe portul 222, nu 22; fara blocul
Hostdinssh\config-> "Connection refused" sau "Could not resolve hostname", chiar daca cheia e corecta. - Intr-o clona COMUN decalata NU se comite:
comun.gitse comite doar din clona in care s-a lucrat efectiv, dupasvn update. - Conversia
git_syncdureaza zeci de minute pe proiecte mari si e incrementala: la expirarea timeout-ului tool-ului se reia pana la capat; NU rula doua conversii in paralel pe acelasi arbore (FoxBin2Prg foloseste artefacte partajate in%TEMP%). - Fisierele doar-git (docs,
.bat,.gitignore) se comit INAINTE de sync-ulsync SVN rN, altfel nimeresc in commit-ul de sincronizare.
Criterii de acceptare si dovada
Fara dovada da/nu de mai jos, inrolarea NU se raporteaza ca terminata:
ssh -T git@gitea.romfast.roreuseste.svn status D:\ROA\<PROIECT>: niciun binar convertibil modificat si niciun text.??2adaugat in SVN.git -C <PROIECT> ls-remote origin main= HEAD-ul local; la fel pentru<PROIECT>\COMUN;git statuscurat sau doar diferente de revizie SVN.- Acoperire: fiecare binar convertibil din arbore (inclusiv COMUN) are text
.??2langa el, mai putin exceptiile!enumerate si justificate. leaga_skills.ps1 -DryRunraporteaza 0 de refacut;scrie_backstop_skills.ps1 -DryRunidempotent (0 modificari) dupa prima aplicare.- Niciun
svn commitfacut in acest flux (commit-ul il face utilizatorul, prin skillroa-git-svn-commit).
Scripturi
D:\ROA\UTIL\foxbin2prg\git_sync.ps1,vfp_filemap.ps1,txt2vcx.ps1,test_git_sync.ps1,test_roundtrip.ps1.<PROJ>\COMUN\scripts\roa_sync.ps1(+roa_sync.batin radacina proiectului).<PROJ>\COMUN\utile\leaga_skills.ps1,scrie_backstop_skills.ps1(+backstop_skills.txt).
Referinta (doar la nevoie)
COMUN\docs\onboarding\-inrolare-calculator-nou.md(masina noua) siinrolare-proiect-git-text.md(proiect nou): pasii detaliati, verificari complete si note operationale FoxBin2Prg.