diff --git a/skills/roa-git-svn-commit/SKILL.md b/skills/roa-git-svn-commit/SKILL.md index 0ec40bc..32b42fd 100644 --- a/skills/roa-git-svn-commit/SKILL.md +++ b/skills/roa-git-svn-commit/SKILL.md @@ -8,6 +8,36 @@ description: Fluxul de commit si sincronizare pentru biblioteca partajata COMUN SVN = sursa de adevar. git = oglinda. Pe `main` din COMUN scrie **doar** `roa_sync`. Comenzile le rulezi tu; utilizatorul doar aproba - dar nimic nu se comite fara un "da" explicit de la el. +## SVN sau git: decizia NU se face manual + +Regula de baza: **in proiectul ROA si in COMUN, fisierele sursa (`.prg`, `.md`, `.ps1`, `.sql`, +`.bat`, `AGENTS.md`, `.vcx/.scx`, `.vc2/.sc2`) sunt SVN-tracked.** `git commit` se foloseste doar +pentru fisiere care NU sunt in SVN (`.gitignore`, `.gitattributes`, fisiere generate). Nu ghici - +verifici inainte de orice commit, cu o singura comanda: + +```powershell +svn info "" >$null 2>&1 +if ($?) { 'SVN -> svn commit' } else { 'git -> git commit' } +``` + +Decizia pe `svn status `: +- `M` / `A` / `D` -> SVN -> `svn commit` (niciodata `git commit`). +- `?` (neversionat) -> daca e sursa care trebuie sa circule la clienti -> `svn add` apoi + `svn commit`; daca e local/transient (handoff, plan, `.patch`, `.gitignore`) -> NU se comite. + +Ce e de comis, descoperit cu comenzi (nu din memorie): + +```powershell +svn status # M/A/D = de comis in SVN; ? = neversionat +git -C status --short # doar oglinda; nu comiti aici fisierele SVN-tracked +``` + +Cazul care a muscat: `AGENTS.md` e SVN-tracked (`svn/ROA/ROAFACTURARE/Trunk/AGENTS.md`). Comis cu +`git commit`, creeaza un commit "non-sync" (nu l-a produs `roa_sync`) si lasa SVN-ul in urma -> +alt calculator nu primeste schimbarea prin `svn update`. Se repara: `git reset ` + +`svn commit AGENTS.md` + `roa_sync.bat` + `git push --force` (doar daca commit-ul non-sync era deja +impins). + ## Cand se foloseste - "am terminat, dau commit", "vreau sa comit in COMUN", "comit ce am lucrat"; @@ -31,8 +61,15 @@ Arbore de decizie - opreste-te la primul caz care se potriveste. modificarea nu exista. Abia apoi antet / test / diff. 4. **Ceri aprobarea, explicit si complet**: lista fisierelor de comis + mesajul propus. Nu presupune "da" din tacere si nu amana pentru "mai tarziu" - el nu tine minte pasul, tu il tii. -5. **A zis "da"** -> rulezi tu `svn commit` **tintit**, doar fisierele aprobate: `.prg` sau - `.scx` + `.sct`, niciodata `.sc2`. Niciodata tot COMUN (intra zgomotul de compilare VFP). +5. **A zis "da"** -> rulezi tu `svn commit` **tintit**, doar fisierele aprobate, cu comenzile + exacte (nu le alegi tu - le rulezi asa): + + ```powershell + # fisiere noi -> intai svn add + svn add + # commit tintit: .prg / .md / .ps1 / .sql / .scx + .sct - niciodata .sc2, niciodata tot COMUN + svn commit -m "" + ``` 6. **Imediat dupa** -> `roa_sync.bat`. Raportezi revizia SVN si ce a intrat pe `main`. 7. **A zis "nu" / cere modificari** -> nu comiti, nu insisti, nu rulezi `roa_sync`. Lucrarea ramane necomisa pe disc si o raportezi asa la predarea contextului.