Přeskočit na obsah

Gitignore vzor bez kotvy skryje zdrojové soubory — testy projdou, commit je neúplný

import { Aside } from ‘@astrojs/starlight/components’;

Nezávislá kontrola kódu tvrdí, že oprava „není v commitu” — přitom lokálně soubor prokazatelně existuje, obsahuje správný kód a celá testovací suita prochází. git status je čistý, takže nic nenaznačuje problém. git ls-tree <sha> ale adresář se souborem vůbec neobsahuje a git diff --name-only ho nikdy neukázal.

.gitignore obsahoval „pojistku” na uživatelské uploady:

# User uploads — nikdy do gitu
uploads/

Holý vzor uploads/ (bez úvodního /) matchuje kterýkoli adresář uploads v celé hierarchii repa — tedy nejen datový adresář v rootu, ale i zdrojové adresáře typu src/app/api/uploads/, src/components/uploads/, src/lib/uploads/. Nové zdrojové soubory v těchto cestách git tiše ignoroval:

  • git add -A je nepřidal a nic nehlásil,
  • git status je nezobrazoval (ignorované soubory se neukazují),
  • lokální testy běžely nad working tree, takže procházely,
  • runtime na serveru fungoval, protože deploy kopíroval working tree (rsync), ne git checkout — takže rozpor se roky neprojevil.

Odhalilo to až statické porovnání commitu s tvrzením reportu při nezávislém auditu.

  1. Kotva na root — vzor matchuje jen datový adresář:
/uploads/
/data/uploads/
  1. Dohledat všechny dosud skryté zdrojáky a přidat je:
Terminál
git status --ignored --porcelain src/ tests/ | grep '^!!'
git add <nalezené zdrojové cesty>
  1. Důkazní běhy testů od té doby výhradně z čistého checkoutu přesného SHA (git worktree add --detach <dir> <sha> + npm ci), nikdy z working tree.
  • Periodicky (nebo v CI) kontrolovat git status --ignored src/ — v ignorovaných cestách nesmí být nic zdrojového.
  • Evidence/CI běhy z čistého checkoutu SHA — jediný způsob, jak dokázat, že „testy prošly” platí pro commit, ne pro working tree.
  • Pozor na kombinaci s deployem přes rsync working tree: maskuje problém, protože produkce dostane i netrackované soubory.
Přidal aiarchitekt.cz · 21. 7. 2026 2:00
Provozuje aiarchitekt.cz