Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

`-T rust -t rust` still excludes Rust files instead of honoring the later type selection

Abierto
#196 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
rust
Área
cli, search

Línea de trabajo

Read tgrep-core/src/filetypes.rs around line 167 and tgrep-cli/src/search.rs around line 2233 to trace how selected and excluded type lists reach the filter. Reproduce the argument-order cases from the issue, then check content search and --files in scanned and indexed modes. Done means a later -t selection overrides an earlier -T exclusion for the same type, with both argument orders covered by regression tests.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

For conflicting -t and -T selections of the same file type, tgrep always gives exclusion precedence. ripgrep honors the later selection. Consequently, -T rust -t rust silently omits Rust files that ripgrep admits.

The same difference is visible in --files, which exits 0 even though its output is incomplete.

Reproduce

mkdir repro-type-order && cd repro-type-order
mkdir data
printf 'needle\n' > data/a.rs
printf 'needle\n' > data/a.txt

tgrep --no-index -T rust -t rust -l -- needle data
rg               -T rust -t rust -l -- needle data

tgrep --no-index --files -T rust -t rust data
rg               --files -T rust -t rust data

# Reverse-order control: both tools exclude Rust files
tgrep --no-index -t rust -T rust -l -- needle data
rg               -t rust -T rust -l -- needle data
Case Actual: tgrep 1.2.0 Expected: rg 15.1.0
-T rust -t rust content search No stdout, exit 1 data/a.rs, exit 0
--files -T rust -t rust No stdout, exit 0 data/a.rs, exit 0
Control: -t rust -T rust content search No stdout, exit 1 No stdout, exit 1

The content-search cases reproduce with --no-index, an on-disk index, and tgrep serve --no-watch.

To repeat the indexed cases, run tgrep index data, remove --no-index, and keep the directory path data. For the server cases, start tgrep serve --no-watch data in another terminal and repeat those directory searches. --stats was used in the Windows harness to verify the selected backend, including (via server).

--files was separately verified in scan and local-index modes.

Environment

  • tgrep 1.2.0, official Windows x86_64 release.
  • Source inspected at release commit 3ba6ee02537281b68ee1366bb40df9f8b7cc54f0.
  • Windows; test harness run with PowerShell 7.
  • ripgrep 15.1.0 (af60c2de9d).
  • Verified on 2026-10-12. The shell examples describe the same fixture bytes and arguments tested on Windows.

Cause

tgrep-core/src/filetypes.rs:167 checks the exclusion matcher first and returns false immediately when it matches. tgrep-cli/src/search.rs:2233 receives separate selected/excluded type lists, so it cannot resolve the conflicting selections using their original interleaving.

Possible fix

Preserve the ordering of -t and -T operations when constructing the filter. A later selection of a type should supersede an earlier exclusion of that same type, as in ripgrep.

A regression could cover both argument orders in content search and --files, across indexed and scanned paths.

Lenguaje dominante
Rust
Estrellas
3.4k
Forks
137
Merge medio
15 h 57 min
PR fusionados (30 d)
23

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.