- leaga_skills.ps1: expune skill-urile in ~/.claude/skills prin symlink (citit si de Claude Code, si de opencode), fara copiere - rutare zona->skill in reguli_lucru pct. 7, README, AGENTS.md; skill-ul devine proprietarul procedurii, docurile raman referinta conditionata - rec_skills.md: decizia, inventarul si cum se adauga un skill nou
6.2 KiB
6.2 KiB
name: roa-git-svn-commit
description: Fluxul de commit si sincronizare pentru biblioteca partajata COMUN (SVN = sursa de adevar, git = oglinda), cu arbore de decizie pentru roa_sync, write-back, aprobare explicita si svn commit tintit, ca sa nu pierzi munca necomisa. Foloseste-l OBLIGATORIU cand utilizatorul spune "am terminat, dau commit", "vreau sa comit in COMUN", "comit ce am lucrat", "sincronizeaza cu SVN", "adu ce au facut altii", "ruleaza roa_sync", "de ce nu merge git pull in COMUN" sau cere orice commit/sincronizare care atinge COMUN. Regula centrala: pe main din COMUN scrie DOAR roa_sync, commit-urile se fac tintit pe fisierele aprobate (niciodata pe tot COMUN), iar git pull in COMUN este interzis. Nu improviza ordinea pasilor si nu rula roa_sync pe un tree murdar: distruge munca necomisa.
Commit si sincronizare in COMUN (SVN + git)
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.
Cand se foloseste
- "am terminat, dau commit", "vreau sa comit in COMUN", "comit ce am lucrat";
- "sincronizeaza cu SVN", "adu ce au facut altii", "ruleaza roa_sync", "de ce am conflicte";
- intrarea intr-o sesiune de lucru in proiect (sync de inceput).
Nu se aplica altui repo decat COMUN + proiectul care il contine. Pentru editarea codului VFP
(.vcx/.scx prin .vc2/.sc2) vezi skill-ul roa-vfp-text-edit.
Pasi
Arbore de decizie - opreste-te la primul caz care se potriveste.
- Intri in proiect -> rulezi
roa_sync.bat, fara sa intrebi, DOAR dacasvn statussigit statussunt curate. Daca nu sunt, intrebi intai (pot fi modificari nefinalizate ale altcuiva). - Ai editat
.prg/.md/.ps1/.sql(proiect sau COMUN) -> antetul la zi, testul rulat, diff-ul scris ca fisier indocs\. - Ai editat
.vc2/.sc2->txt2vcx.ps1IMEDIAT, apoi verifici pe binar (reconversie intr-un cache temporar + comparatie; mtime nu dovedeste nimic). Text fara write-back = modificarea nu exista. Abia apoi antet / test / diff. - 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.
- A zis "da" -> rulezi tu
svn committintit, doar fisierele aprobate:.prgsau.scx+.sct, niciodata.sc2. Niciodata tot COMUN (intra zgomotul de compilare VFP). - Imediat dupa ->
roa_sync.bat. Raportezi revizia SVN si ce a intrat pemain. - 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.
Cazuri
- Vrei sa-ti tii munca in git -> branch. In repo-ul proiectului: liber. In COMUN:
claude/<subiect>, commit doar acolo, niciodata pemain. - Ai terminat branch-ul -> proiect: merge in
main, normal. COMUN: fara merge; dupasvn commitcontinutul ajunge pemaincasync SVN rN, iar branch-ul se sterge (doar dacagit diff main..branche gol). - Esti pe branch in COMUN si te bate gandul la
roa_sync-> nu.roa_syncse ruleaza in exact doua momente: la intrarea in proiect si imediat dupasvn commit. Pe branch cu tree curat facecheckout mainfara sa intrebe (binarele raman de pe branch); pe branch murdar sare peste, darsvn updatede la pasul 1 ruleaza oricum si poate aduce binare peste ce ai pe disc. - Vrei
svn update-> doar din stare curata, niciodata in mijlocul lucrului. Daca ai text.??2editat fara write-back, fa intai write-back-ul. svn updatea dat conflict -> opreste-te si raporteaza; binarele nu se rezolva manual.- Dupa
svn updategit arata fisiere modificate -> e oglinda ramasa in urma, nu munca ta; nu le comite de mana, le iaroa_syncintr-unsync SVN rN. - Vrei sa aduci ce au facut altii ->
roa_sync.bat. Niciodatagit pull: git poarta doar textele, nu binarele; un pull da.sc2nou peste.scx/.sctvechi, VFP compileaza binarul, iar urmatorulgit_syncsterge modificarea. - Copie de COMUN ramasa in urma -> se aliniaza singura la primul
roa_sync.batrulat acolo. - Predai contextul -> raporteaza explicit daca ai lasat text
.??2editat fara write-back (stare periculoasa).
Interzis
git commit/git push/git mergepemainin COMUN.git pullin COMUN - aduce textele fara binare; se folosesteroa_sync.bat.git commitpe tot COMUN sau pe.sc2- doar tintit, pe fisierele aprobate.- Copierea unui fisier dintr-o copie de COMUN in alta -
svn updateil duce; copierea = intrare dubla. - Write-back pe
.fr2/.mn2/.lb2/.pj2- nesuportat; acolo se modifica in IDE. - Commit fara un "da" explicit de la utilizator.
Criterii de acceptare si dovada
Fara dovada da/nu de mai jos, commit-ul/sincronizarea NU se raporteaza ca terminata. "Arata bine" nu e dovada.
- Inainte de commit:
git status --porcelaincontine EXACT fisierele aprobate; nimic neasteptat stagiat. - Dupa
svn commit:svn statuscurat pe fisierele tintite, iar revizia SVN este raportata. - Dupa commit:
roa_sync.bata rulat si raporteaza succes (exit 0, commitsync SVN rNpemainin COMUN, fara avertismente de conflict). git statuscurat pe fisierele tintite in COMUN; branch-urileclaude/*terminate sunt inchise, cele active raportate.- Verificarea se face inainte de
svn commit: fara "da" explicit, commit-ul nu are loc (skill-ul nu comite din proprie initiativa). - Daca utilizatorul a zis "nu": dovada e absenta oricarei urme de commit sau sync in log.
Scripturi
D:\ROA\ROAFACTURARE\roa_sync.bat(sauroa_sync.batdin radacina proiectului).D:\ROA\ROAFACTURARE\COMUN\scripts\roa_sync.ps1--ProjectRoot <root>, iar-GitOnlysare peste SVN si regenerarea textelor.D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1sigit_sync.ps1- doar daca ai atins binare.
Referinta (doar la nevoie)
- Doar daca ai nevoie de contextul complet, citeste
COMUN\docs\fluxul_svn_git.md(cazuri, interdictii) pentru fluxul SVN + git.