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