From 5de25c4e36e5c4c733dcf9340be510fa4962acd1 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Thu, 20 Aug 2026 18:28:05 +0300 Subject: [PATCH] sync SVN r18025 --- docs/fluxul_svn_git.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/fluxul_svn_git.md b/docs/fluxul_svn_git.md index b6ff114..f937eff 100644 --- a/docs/fluxul_svn_git.md +++ b/docs/fluxul_svn_git.md @@ -52,6 +52,29 @@ write-back = modificarea nu există. Abia apoi antet / test / diff. **Ai terminat branch-ul** → în repo-ul proiectului: merge în `main`, normal. În `COMUN`: **nu face merge**. După `svn commit`, conținutul ajunge pe `main` ca `sync SVN rN`; branch-ul se șterge. +**Ești pe branch în `COMUN` și te bate gândul la `roa_sync`** → **nu.** `roa_sync` se rulează în +exact două momente: la **intrarea** în proiect și **imediat după `svn commit`**. Ce te încurcă e +`svn update` de la pasul 1, nu git-ul: + +- **branch cu modificări necomise** → `svn update` rulează necondiționat și aduce fișierele altor + proiecte peste ce ai pe disc; la binare dă conflict și `roa_sync` se oprește cu eroare. Git, în + schimb, e cuminte: vede tree murdar pe branch și sare peste, nu-ți atinge branch-ul. +- **branch cu tree curat** → `roa_sync` face `checkout main` **fără să întrebe**. Textele de pe disc + revin la `main`, binarele nu (git nu le urmărește) → rămâi cu text de pe `main` peste binare de pe + branch. Munca e în commit, dar nu mai e pe disc, iar VFP ar compila altceva. +- **curățenia de la pasul 5** șterge doar branch-urile `claude/*` al căror `git diff main..branch` e + gol, adică cele a căror muncă a intrat deja prin SVN. Ce n-a intrat rămâne, raportat „activ". + +Dacă chiar trebuie să aduci ceva de la alții în mijlocul lucrului: termină write-back-ul, dă +`svn commit` dacă lucrarea e gata, și abia apoi `roa_sync`. + +**Vrei să aduci ce au făcut alții** → `roa_sync.bat`. **Niciodată `git pull`**: git poartă doar +textele, nu și binarele. Un `pull` ți-ar da `.sc2`-ul nou peste un `.scx/.sct` vechi — VFP compilează +binarul, deci modificarea n-ar exista în aplicație, iar următorul `git_sync` ar regenera textul din +binarul vechi și ar șterge-o. În plus, fișierele scrise de git peste un working copy rămas la o +revizie veche apar în `svn status` ca și cum ar fi munca ta. `roa_sync` face ordinea corectă: +`svn update` (binare + surse) → regenerare text → git prin fast-forward. + **Vrei `svn update`** → doar din stare curată. Niciodată în mijlocul lucrului: aduce binare noi peste ce ai pe disc. Dacă ai text `.??2` editat fără write-back, fă întâi write-back-ul. @@ -77,6 +100,7 @@ periculoasă. ## Interzis - `git commit` / `git push` / `git merge` pe `main` în `COMUN` +- `git pull` în `COMUN` — aduce textele fără binare; se folosește `roa_sync.bat` - copierea unui fișier dintr-o copie de `COMUN` în alta — `svn update` îl duce; copierea = intrare dublă - write-back pe `.fr2` / `.mn2` / `.lb2` / `.pj2` — nu e suportat; acolo textul se citește, modificarea se face în IDE