git calls in the tree/file-browser crash with ENOBUFS on large repos
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- git, node.js, typescript
Línea de trabajo
Empieza en dist/index.js, en las llamadas a git que usan getTreeEntries, getTreeFingerprint, git status --porcelain -u y git rev-parse --show-toplevel. Reproduce el problema con un repositorio cuyos paths rastreados superen 1 MB usando git ls-files | wc -c y, después, prueba diffity tree o /api/tree. Se considera terminado cuando los repositorios grandes ya no producen ENOBUFS ni una respuesta 500.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happens
Open diffity tree (or any tour view) on a large repo and the whole UI goes down with:
Something went wrong
Failed to get tree: Error: spawnSync git ENOBUFS
/api/tree returns a 500. Since the SPA surfaces that at the top level, views that don't even need the file tree (a code tour) go down with it too.
What I found
The git calls behind the file browser run through execFileSync("git", [...], { encoding: "utf-8" }) with no maxBuffer, so they get Node's 1 MB default. Once git ls-files prints more than 1 MB of paths, the call throws ENOBUFS. In 0.9.5's dist/index.js it's the git ls-files calls in getTreeEntries and getTreeFingerprint, the git status --porcelain -u, and the git rev-parse --show-toplevel calls.
How to reproduce
Any repo whose tracked paths exceed ~1 MB of text. Mine is a monorepo that vendors a few external repos as git subtrees, so git ls-files is ~14,300 files / 1.24 MB, just over the line. A large public repo would do the same.
git ls-files | wc -c # > 1048576 reproduces it
Environment
- diffity 0.9.5
- node (system), macOS arm64
- Lenguaje dominante
- TypeScript
- Estrellas
- 775
- Forks
- 57
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de nilbuild/diffity
-
Local Storage for state Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
-
suggestion: diffity-server Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
-
LSP for typescript Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Todos los issues de nilbuild/diffity
Issues similares
-
bug(cli): hapi doctor inline-media prints a fabricated B:\ helper-script path in packaged installs Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Crush Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
catppuccin/catppuccin#3125 ·
-
Add a SECURITY.md Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
ElementsProject/cln-application#167 · 1 comentario · 1 reacción ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Quantco/pnpm-licenses#17 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100