---
title: Wie der Glob-Musterfilter funktioniert
description: Wie Code2Prompt entscheidet, welche Dateien mit Include- (-i) und Exclude- (-e) Glob-Mustern beibehalten oder verworfen werden.
---

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.

---

## 1. Mengen und Symbole

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

| Symbol                            | Bedeutung                                                        |
| --------------------------------- | ---------------------------------------------------------------- |
| $A$                               | Menge der Dateien, die **mindestens ein** Include-Muster treffen |
| $B$                               | Menge der Dateien, die **mindestens ein** Exclude-Muster treffen |
| $\Omega$                          | der gesamte Projektbaum (das _Universum_)                        |
| $C = A \cap B$                    | Dateien, die beide Listen treffen (die _Überschneidung_)         |
| $D = \Omega \setminus (A \cup B)$ | Dateien, die keine Liste treffen                                 |

---

## 2. Vier Situationen

### Übersicht der vier Situationen

| Include-Liste | Exclude-Liste | Behaltene 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`).

---

## 3. Mehr über die Überschneidung

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?                                                               |
| -------------- | -------------- | ------------------------------------------------------------------------- |
| Nein           | Nein           | Standardverhalten (`A \ B`)                                               |
| Ja             | Nein           | Gleiches Verhalten wie Fall 3 (`A`)                                       |
| Nein           | Ja             | überraschend ("verwerfe was ich angefordert habe `C`, behalte was nicht") |
| Ja             | Ja             | Gleiches 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).

## 4. Schnelle Referenztabelle

| Behalten möchten…                              | Verwenden            |
| ---------------------------------------------- | -------------------- |
| alles                                          | kein `-i`, kein `-e` |
| alles _außer_ bestimmten Mustern               | nur `-e`             |
| _nur_ was den Mustern entspricht               | nur `-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
