diff --git a/docs/onboarding/inrolare-calculator-nou.md b/docs/onboarding/inrolare-calculator-nou.md new file mode 100644 index 0000000..e4c266e --- /dev/null +++ b/docs/onboarding/inrolare-calculator-nou.md @@ -0,0 +1,126 @@ +# Înrolarea unui calculator nou pentru programare ROA + +Scop: un calculator nou care are (sau va avea) working copy SVN pentru unul sau mai multe +proiecte ROA, dar nu are încă acces SSH la gitea, nu are utilitarul `foxbin2prg`, și nu are +clonele git ale proiectelor. Diferă de `inrolare-proiect-git-text.md` (acela e pentru +înrolarea unui PROIECT NOU în fluxul git-text, prima dată, când repo-ul gitea încă nu există). +Aici repo-urile gitea EXISTĂ deja (roacont, comun, foxbin2prg etc.) și trebuie doar clonate +pe mașina nouă. + +## Reguli + +- PowerShell exclusiv — `bash.exe` crapă pe mașinile astea și lasă stackdump-uri + (vezi `COMUN\docs\bash.exe.stackdump`). +- Niciun `svn commit`, nicio modificare de binare VFP în acest flux. +- Nu forța (`--force`, `reset --hard`) fără să arăți întâi ce s-ar pierde. + +## Precondiții pe calculatorul nou + +- VFP9 IDE instalat (pentru `.frx`/`.mnx`/`.lbx`/`.pjx`/`.dbc`, care nu au write-back text). +- Client SVN (linie de comandă `svn` sau TortoiseSVN) spre `http://svnroa:3001/svn/ROA`. +- Git for Windows instalat (aduce și `git`, `ssh`, `ssh-keygen` în PATH). +- PowerShell 5.1+ (vine cu Windows). + +## Pasul 1 — cheie SSH pentru Gitea + +Generare (ed25519): +```powershell +ssh-keygen -t ed25519 -C "@" +# accepta locatia implicita: C:\Users\\.ssh\id_ed25519 +# passphrase optional, dar recomandat +``` + +Pornește agentul și adaugă cheia: +```powershell +Get-Service ssh-agent | Set-Service -StartupType Automatic +Start-Service ssh-agent +ssh-add "$env:USERPROFILE\.ssh\id_ed25519" +``` + +Copiază cheia publică: +```powershell +Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | Set-Clipboard +``` + +Înregistreaz-o în Gitea: profil → Settings → SSH / GPG Keys → Add Key → lipește conținutul, +dă-i un nume care identifică mașina (ex. `laptop-marius-birou2`). + +Verificare: +```powershell +ssh -T git@gitea.romfast.ro +``` +Trebuie să răspundă cu autentificare reușită (nu "Permission denied"). + +## Pasul 2 — SVN global-ignores + +În `%APPDATA%\Subversion\config`, secțiunea `[miscellany]`, adaugă (pe lângă ce există deja): +``` +global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__ + *.rej *~ #*# .#* .*.swp .DS_Store [Tt]humbs.db + *.vc2 *.sc2 *.fr2 *.mn2 *.lb2 *.pj2 *.dc2 *.db2 *.dbf.cfg +``` +Fără asta, versiunile text FoxBin2Prg apar ca `?` în `svn status` și riscă `svn add` accidental. + +Verificare: `svn status D:\ROA\` nu mai arată `.vc2`/`.sc2`/... ca necunoscute. + +## Pasul 3 — utilitarul foxbin2prg + +```powershell +git clone git@gitea.romfast.ro:romfast/foxbin2prg.git D:\ROA\UTIL\foxbin2prg +cd D:\ROA\UTIL\foxbin2prg +git checkout romfast # daca nu e deja branch-ul implicit dupa clone +``` +Verificare: `git remote -v` arată originul de mai sus (nu upstream-ul github +`fdbozzo/foxbin2prg`); `git log --oneline -3` arată istoricul fork-ului romfast. + +## Pasul 4 — clonarea proiectelor existente (per proiect ROA) + +Presupune că working copy SVN există deja la `D:\ROA\` (dacă nu, `svn checkout` întâi). +Pentru fiecare proiect deja înrolat (vezi lista din `inrolare-proiect-git-text.md`: ROACONT, +ROAGEST, ROAAUTO, ROAIMOB, ROAACNPRO, ROAFACTURARE): + +```powershell +cd D:\ROA\ +git init +git remote add origin git@gitea.romfast.ro:romfast/.git +git fetch origin +git checkout -b main --track origin/main +``` + +Dacă `checkout -b` refuză pentru că fișiere locale (venite din SVN) ar fi suprascrise, +OPREȘTE-TE și arată lista exactă de conflicte — nu forța cu `reset --hard` fără să confirmi cu +utilizatorul că diferențele nu sunt de fapt lucru necomis. + +## Pasul 5 — COMUN (repo separat, în fiecare proiect) + +`COMUN\` din interiorul fiecărui proiect e alt repo git, comun tuturor produselor: +```powershell +cd D:\ROA\\COMUN +git init +git remote add origin git@gitea.romfast.ro:romfast/comun.git +git fetch origin +git checkout -b main --track origin/main +``` +(Aceleași precauții ca la pasul 4 dacă apar conflicte de checkout.) + +## Pasul 6 — sincronizare inițială text FoxBin2Prg + +```powershell +powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\git_sync.ps1 -ProjectRoot D:\ROA\ +``` +Regenerează `.??2` peste starea curentă a binarelor SVN de pe mașina asta. Rulează-l la +începutul fiecărei sesiuni de lucru și înainte de orice commit (vezi `roa_sync.bat` din +rădăcina proiectului, dacă există, care automatizează svn update → git_sync → commit sync). + +## Pasul 7 — verificare finală + +- `git -C D:\ROA\ status` și `git -C D:\ROA\\COMUN status`: curat sau doar + diferențe așteptate față de ultimul "sync SVN" (dacă SVN local e pe altă revizie). +- `ssh -T git@gitea.romfast.ro` încă reușește. +- Nu comite nimic din acest flux fără să arăți diff-ul utilizatorului. + +## Referințe + +- `inrolare-proiect-git-text.md` — înrolarea unui proiect NOU (repo gitea inexistent) în flux. +- `../fluxul_svn_git.md` — modelul de branch-uri main/claude și igiena git. +- `../flux-editare-vfp-text.md` — editarea text `.vc2`/`.sc2` + write-back.