onboarding: nota de inrolare calculator nou (sync SVN r18054)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NuquEkEtfDqjJPjSYndCSw
This commit is contained in:
141
docs/onboarding/inrolare-calculator-nou.md
Normal file
141
docs/onboarding/inrolare-calculator-nou.md
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
# Î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 "<utilizator>@<nume-calculator>"
|
||||||
|
# accepta locatia implicita: C:\Users\<user>\.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").
|
||||||
|
|
||||||
|
### Config SSH (host, IP, port)
|
||||||
|
|
||||||
|
Gitea nu răspunde pe portul SSH implicit (22), ci pe **222**, și rezolvarea DNS a
|
||||||
|
`gitea.romfast.ro` poate lipsi pe mașina nouă — de-asta adaugă explicit un `Host` în
|
||||||
|
`C:\Users\<user>\.ssh\config` (creează fișierul dacă nu există):
|
||||||
|
```
|
||||||
|
Host gitea.romfast.ro
|
||||||
|
HostName 10.0.20.165
|
||||||
|
User git
|
||||||
|
Port 222
|
||||||
|
```
|
||||||
|
Fără asta, `ssh -T git@gitea.romfast.ro` sau `git clone`/`git fetch` pot eșua cu
|
||||||
|
"Connection refused" sau "Could not resolve hostname", chiar dacă cheia SSH e corect
|
||||||
|
înregistrată în Gitea.
|
||||||
|
|
||||||
|
## 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\<proiect>` 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\<PROIECT>` (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\<PROIECT>
|
||||||
|
git init
|
||||||
|
git remote add origin git@gitea.romfast.ro:romfast/<proiect-lowercase>.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\<PROIECT>\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\<PROIECT>
|
||||||
|
```
|
||||||
|
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\<PROIECT> status` și `git -C D:\ROA\<PROIECT>\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.
|
||||||
Reference in New Issue
Block a user