Zum Inhalt springen

Wie der Glob-Musterfilter funktioniert

Code2Prompt verwendet Glob-Muster, um Dateien und Verzeichnisse einzuschließen oder auszuschließen, ähnlich wie Tools wie tree oder grep. Es ermöglicht Ihnen, zwei unabhängige Listen von Glob-Mustern zu übergeben:

  • Include-Liste (--include oder -i) - “Diese Muster erlauben Dateien”
  • Exclude-Liste (--exclude oder -e) - “Diese Muster verbieten Dateien”

Code2prompt muss für jede Datei im Projekt entscheiden, ob sie beibehalten oder verworfen wird. Diese Seite erklärt die Regeln und die dahinter stehenden Design-Entscheidungen.


Während der Erklärung verwenden wir die übliche Mengennotation

SymbolBedeutung
Menge der Dateien, die mindestens ein Include-Muster treffen
Menge der Dateien, die mindestens ein Exclude-Muster treffen
der gesamte Projektbaum (das Universum)
Dateien, die beide Listen treffen (die Überschneidung)
Dateien, die keine Liste treffen

Include-ListeExclude-ListeBehaltene Dateien
A = ∅B = ∅Ω
A = ∅B ≠ ∅¬B
A ≠ ∅B = ∅A
A ≠ ∅B ≠ ∅A \ B
  1. Keine Include-Liste, keine Exclude-Liste

    Wenn keine Muster angegeben sind, werden alle Dateien beibehalten (Ω).

  2. Nur Exclude-Liste

    In diesem Fall fungiert Code2Prompt als Blacklist und entfernt Dateien, die den ausgeschlossenen Mustern entsprechen ( Ω \ B = ¬B).

  3. Nur Include-Liste

    Wenn nur eine Include-Liste angegeben ist, fungiert Code2Prompt als Whitelist und behält nur Dateien, die den eingeschlossenen Mustern entsprechen (A).

  4. Include- und Exclude-Listen

    Wenn beide Listen angegeben sind, behält Code2Prompt Dateien, die den Include-Mustern entsprechen, entfernt aber diejenigen, die den Exclude-Mustern entsprechen (A \ B).


Mit beiden Listen vorhanden (A ≠ ∅, B ≠ ∅) haben Sie vier logische Möglichkeiten für die Überschneidung C und den Rest D.

C gewünscht?D gewünscht?Vernünftig?
NeinNeinStandardverhalten (A \ B)
JaNeinGleiches Verhalten wie Fall 3 (A)
NeinJaüberraschend (“verwerfe was ich angefordert habe C, behalte was nicht”)
JaJaGleiches Verhalten wie Fall 1 (Ω)

Aus diesem Grund wurde die Option --include-priority entfernt. Denn es wäre das gleiche Ergebnis, als hätten Sie nur eine Include-Liste (Fall 3).

Behalten möchten…Verwenden
alleskein -i, kein -e
alles außer bestimmten Musternnur -e
nur was den Mustern entsprichtnur -i
was -i entspricht, minus was -e entspricht-i und -e

Dieses Design hält das mentale Modell einfach:

  • Die Include-Liste ist eine Whitelist, sobald sie existiert.
  • Die Exclude-Liste ist eine darüber gelegte Blacklist.
  • Die Überschneidung wird standardmäßig verworfen