From 97e792d98b0e569d03399dc33463e6da10dc0fbb Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Wed, 15 Jul 2026 15:41:38 +0300 Subject: [PATCH] docs: nota despre modificari fantoma git dupa svn update (CRLF/mtime) Co-Authored-By: Claude Sonnet 5 --- docs/README.md | 1 + docs/git-svn-crlf.md | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 docs/git-svn-crlf.md diff --git a/docs/README.md b/docs/README.md index 8139677..a3cd93a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,6 +7,7 @@ Notite concise despre structura interna a proiectului (fluxuri, pachete, tabele) - [CLAUDE.md](CLAUDE.md) — modul de lucru Claude ↔ Marius (propuneri de cod pentru VFP IDE, acces Oracle direct). - [flux-achizitie-import.md](flux-achizitie-import.md) — lantul achizitie import: gestiuni.vcx → achizitie_import → import_nota → import_nir → PACK_CONTAFIN; capcane (ptva bruta vs proc_tva, import_nota_original mort, 4427/401). - [flux-editare-vfp-text.md](flux-editare-vfp-text.md) — parametri ROAGEST pentru editarea pe cache text; fluxul comun (pasi per runda, capcane) e in `COMUN\docs\flux-editare-vfp-text.md`. +- [git-svn-crlf.md](git-svn-crlf.md) — modificari fantoma in git dupa svn update (CRLF/mtime); fix cu `.gitattributes` (`* -text`) la radacina fiecarui repo. - [testare-vfp-mcp.md](testare-vfp-mcp.md) — testare vizuala automata: lansare `vfp9.exe DO roagest.prg` (fara rebuild) + interactiune prin `windows-mcp`; capcana focus furat de terminal. - `local/` — notite neversionate (credentiale Oracle etc., in .gitignore). diff --git a/docs/git-svn-crlf.md b/docs/git-svn-crlf.md new file mode 100644 index 0000000..241e222 --- /dev/null +++ b/docs/git-svn-crlf.md @@ -0,0 +1,26 @@ +# Modificari fantoma git dupa svn update (CRLF) + +Simptom: `git status` arata fisiere ca `modified` (de obicei `.md` in `COMUN/docs/`, +uneori `roagest.pjx`/`.PJT`) dupa un ciclu `svn update`/`svn commit`, desi `git diff` +nu arata nicio linie schimbata. + +Cauza: SVN scrie fisierele cu CRLF nativ pe Windows si le atinge mtime-ul la fiecare +update, chiar daca continutul nu s-a schimbat. Cu `core.autocrlf=true` (setare globala +uzuala), git recompara/converteste EOL-urile la fiecare verificare de stat, si uneori +ramane cu index-ul in stare "needs update" desi hash-ul blob-ului e identic cu HEAD +(verificabil cu `git hash-object ` vs `git ls-files -s `). + +Fix aplicat (2026-07-15): `.gitattributes` cu `* -text` la radacina fiecarui repo +(`ROAGEST/.gitattributes`, `COMUN/.gitattributes`, si replicat in `ROAAUTO`, `ROACONT`) +— dezactiveaza complet normalizarea CRLF/LF facuta de git, SVN ramane singura autoritate +pentru line endings. Fix independent de `core.autocrlf` local al fiecarui calculator/user. + +Daca reapare pe un repo nou (alta aplicatie ROA cu acelasi tipar svn+git in paralel), +copiaza acelasi `.gitattributes` (`* -text`) la radacina. + +Diagnostic rapid daca `git status` minte ca un fisier e curat/murdar: +``` +git hash-object +git ls-files -s # compara al doilea camp (blob sha) cu output-ul de mai sus +git update-index --refresh # sau git add daca hash-urile sunt identice +```