GitLab Repo-zu-Text-Konverter

Konvertieren Sie ein GitLab-Projekt in eine einzelne Textdatei für ChatGPT, Claude oder Gemini. Wählen Sie die Dateien aus, die wichtig sind, und überspringen Sie den Lärm. Kostenlos und nichts zu installieren.

GitLab-Repo in Text umwandeln: eine Datei, die Ihr LLM wirklich lesen kann

Code Datei für Datei in ein Chatfenster zu kippen ist eine schlechte Art, einen Nachmittag zu verbringen. Das Modell beantwortet jede Frage durch ein Schlüsselloch, Sie schieben ständig nach „warte, hier ist noch die Datei, die es importiert", und bis der Kontext vollständig ist, hat sich das Gespräch längst verlaufen. Die Abhilfe ist unspektakulär und wirkt trotzdem: Geben Sie gleich zu Beginn die ganze relevante Scheibe des Repositories mit, in einem Block Text.

Genau das macht diese Seite. Es ist der kürzeste Weg von einem GitLab-Repository zu LLM-Kontext: Sie fügen eine Projekt-URL der Form https://gitlab.com/... ein, das Werkzeug liest den Repository-Baum über die GitLab-API, und Sie bekommen jede Datei als Liste mit Kontrollkästchen. Anhaken, was zählt, abwählen, was nicht, generieren. Heraus kommt eine Verzeichnisübersicht, gefolgt vom vollständigen Inhalt der ausgewählten Dateien, dazu eine Tokenzahl, damit Sie wissen, ob es passt. Kopieren, als Text herunterladen oder die ausgewählten Dateien als ZIP mitnehmen.

Fügen Sie die URL ein, die Sie ohnehin offen haben

Es gibt keine Projekt-ID nachzuschlagen und kein separates Feld für den Namespace. Kopieren Sie die URL aus der Adressleiste Ihres Browsers und fügen Sie sie ein. Verschachtelte Untergruppen funktionieren — GitLabs Angewohnheit, ein Projekt drei oder vier Ebenen tief unter company/platform/services/billing zu vergraben, ist abgedeckt, weil der Projektpfad URL-kodiert wird, bevor er die API erreicht.

Enthält die kopierte URL bereits einen Branch oder ein Tag, wird diese Ref verwendet. Ist es nur die nackte Projekt-URL, wird der Standard-Branch des Projekts automatisch aufgelöst — Sie müssen sich also nicht merken, ob dieses eine Repo sich auf main, master oder develop geeinigt hat. Der Baum wird rekursiv und über alle Seiten hinweg geholt, was mehr zählt, als es klingt: Etliche GitLab-Monorepos kommen auf Tausende Dateien, und eine einzelne Anfrage ohne Paginierung würde Ihnen stillschweigend ein abgeschnittenes Projekt liefern.

Private Projekte, und wohin Ihr Token genau geht

Öffentliche Projekte brauchen gar nichts. Für ein privates hinterlegen Sie ein GitLab Personal Access Token, das als Header PRIVATE-TOKEN an Anfragen gegen die GitLab-API angehängt wird. Vorsicht beim Einfügen eines Tokens in ein Webwerkzeug ist der richtige Reflex, deshalb die schlichte Fassung: Das Token liegt im localStorage Ihres Browsers und dient ausschließlich dazu, gitlab.com direkt aus Ihrem Browser aufzurufen. Es geht an keinen Server von uns, weil die Anfragen über keinen laufen.

Lesender Zugriff reicht vollkommen — read_api oder read_repository. Geben Sie ihm keine Schreibrechte, die es nie benutzen wird, und setzen Sie gleich im Token-Dialog ein Ablaufdatum. Auch bei öffentlichen Repos lohnt sich ein Token: Unauthentifizierte Aufrufe der GitLab-API werden gedrosselt. Wenn Sie also ein großes Projekt ziehen oder dieselbe Konvertierung ein paar Mal wiederholen, ist eine authentifizierte Anfrage der Unterschied zwischen einem glatten Durchlauf und einer Wand aus Fehlern.

Selbst gehostetes GitLab: die ehrliche Antwort

Dieses Werkzeug spricht mit gitlab.com und ausschließlich mit gitlab.com. Es gibt kein Feld für die URL einer eigenen Instanz, und gitlab.yourcompany.internal einzufügen funktioniert nicht. Wenn Sie auf einer selbst gehosteten oder selbst verwalteten Instanz sitzen, ist das ein klares Nein.

Die gute Nachricht: Bei einer selbst verwalteten Instanz war ein API-Aufruf ohnehin nie die bessere Antwort. Klonen Sie das Repo — die Zugangsdaten haben Sie ja — und richten Sie den Konverter für lokale Ordner darauf. Der liest Dateien über die Datei-APIs des Browsers, es wird also nichts hochgeladen und nichts verlässt Ihren Rechner. Bei einer privaten Instanz hinter einer Firmen-Firewall ist das die Variante, die Ihre Sicherheitsabteilung ohnehin verlangt hätte. Gleicher Auswahlbaum, gleiche Ausgabe, gleiche Tokenzahl. Er nimmt auch ein ZIP, falls Sie lieber ein Archiv exportieren als zu klonen.

Ein GitLab-Repository als Text: was rein muss und was draußen bleibt

Zunächst ist alles angehakt, und das ist bei so gut wie jedem echten Projekt die falsche Auswahl. Der Reflex ist, gleich alles mitzunehmen; widerstehen Sie ihm. Ein brauchbarer Repo-Dump ist ein kuratierter — das Token-Budget, das Sie für generiertes Rauschen ausgeben, fehlt dem Modell bei Ihrem eigentlichen Code. Wählen Sie zuerst das hier ab:

  • Mitversionierte und installierte Abhängigkeitennode_modules, vendor, .venv, alles, was aus einer Paketquelle stammt und mit eingecheckt wurde. Wie Express aussieht, weiß das Modell längst.
  • Lockfiles. package-lock.json, yarn.lock, poetry.lock, Gemfile.lock. Ein Lockfile kann zehntausende Tokens aus Hashes und festgenagelten Versionen sein, die keine Frage beantworten, die je jemand stellt. Behalten Sie das Manifest, lassen Sie das Lockfile weg.
  • Build-Ausgaben und minifizierte Assetsdist, build, .next, kompilierte Bundles, Source Maps. Das ist Ihr eigener Code, noch einmal erzählt in einer Form, über die sich nicht nachdenken lässt.
  • Snapshots und Fixtures. Große Test-Fixtures und Snapshot-Dateien sind von Natur aus repetitiv. Zwei repräsentative schlagen alle vierhundert.
  • Migrationen, meistens. Ein Schema-Verzeichnis mit sechs Jahren inkrementeller Migrationen lohnt sich nur, wenn die Frage der Migrationshistorie selbst gilt.

Behalten Sie, was die Absicht erklärt: Quelldateien, die README, das Manifest und .gitlab-ci.yml. Letzteres ist der spezifisch GitLab-gefärbte Hinweis — in der CI-Konfiguration stehen Build-Schritte, Testbefehle, Deploy-Ziele und Annahmen über die Umgebung an einer Stelle beisammen. Nehmen Sie sie mit, und das Modell kann „warum fällt das in der CI durch und lokal nicht" beantworten, statt zu raten.

Der Umschalter für die Verzeichnisansicht ist die andere Hälfte davon. Auf vollständig enthält die Ausgabe die komplette Repository-Struktur mit markierter Auswahl, das Modell sieht also, dass es ein Modul payments gibt, auch wenn Sie es nicht aufgenommen haben — nützlicher Kontext, in Tokens fast geschenkt. Auf gefiltert erscheint nur, was Sie ausgewählt haben. Vollständig ist meist die bessere Vorgabe, wenn Sie einen Dienst aus einem Monorepo herausgegriffen haben; gefiltert ist aufgeräumter, wenn Sie eine überschaubare, fokussierte Handvoll Dateien schicken.

Wofür sich das wirklich eignet

  • Ankommen in einem fremden Projekt. Wählen Sie das Quellverzeichnis, die README und die CI-Konfiguration und lassen Sie sich die Einstiegspunkte erklären und den Weg, den ein Request nach dem Eintreffen nimmt. Zwanzig Minuten Orientierung, zusammengefaltet in einen Prompt.
  • Einen Merge Request samt Umgebung reviewen. Ein Diff sagt Ihnen, was sich geändert hat; es sagt Ihnen nicht, wer die geänderte Funktion sonst noch aufruft. Exportieren Sie das betroffene Verzeichnis und seine Nachbarn, fügen Sie den Diff daneben ein, und Sie bekommen Review-Kommentare über Konsequenzen statt über Stil.
  • Die Dokumentation schreiben, die niemand geschrieben hat. Geben Sie ein Modul hinein und lassen Sie sich eine README, eine Architekturnotiz oder Docstrings erzeugen, die den vorhandenen Konventionen des Codes folgen, statt neue zu erfinden.
  • Tests generieren. Nehmen Sie das Modul plus zwei oder drei bestehende Testdateien mit hinein. Der zweite Teil ist das, was die Ausgabe brauchbar macht — das Modell übernimmt Ihre Fixtures, Ihre Benennung und Ihren Assertion-Stil, statt etwas zu produzieren, das nicht in die Suite passt.
  • Migrationen und Upgrades. Framework-Versionssprünge, eine Umschreibung in eine andere Sprache, ein ORM-Wechsel. Dafür braucht es Sicht auf die gesamte Codebasis, um jede Aufrufstelle zu erwischen — und genau das liefert ein einzelner Textexport.
  • Audits. Fragen Sie, wo Geheimnisse gelesen werden, welche Endpunkte die Authentifizierung überspringen oder was noch gegen eine veraltete interne API läuft. Solche breiten Fragen sind Datei für Datei nicht zu beantworten.

In den meisten dieser Fälle ist das Interessante ein einzelnes Dienstverzeichnis und nicht die ganze Gruppe. Wählen Sie diesen Teilbaum, lassen Sie den Rest liegen, und prüfen Sie vor dem Einfügen die Tokenzahl — sie wird mit der Bibliothek gpt-tokenizer berechnet und ist damit eine echte Zahl, die Sie mit dem Kontextfenster Ihres Modells vergleichen können, statt einer Schätzung. Es ist dieselbe Ausgabe, ob Sie GitLab-Code für einen KI-Review-Durchgang exportieren oder ein GitLab-Projekt in eine Textdatei für ChatGPT, Claude oder Gemini verwandeln — eine Datei, und Sie können sie lesen, bevor Sie sie abschicken.

Die Dateien, die neben Ihrem Code liegen

Ein Repository besteht nicht nur aus Quelldateien. Konfiguration, Schemata, Seed-Daten und Spezifikationen werden mit eingecheckt, und manches davon liest sich roh ausgekippt schlecht. Strukturierte Formate landen besser als Markdown: JSON zu Markdown für Konfiguration und API-Payloads, XML zu Markdown für die Maven-, Android- und alten SOAP-Dateien, die einfach nicht verschwinden wollen, CSV zu Markdown für Seed-Daten und Exporte, und HTML zu Markdown für Templates und generierte Dokumentation. Spezifikationen, die als PDF hereingekommen sind, lassen sich ebenfalls konvertieren, und ein ZIP-Archiv wird direkt zu Text flachgeklopft. File2Txt nimmt alles davon, wenn Sie sich keine Seite aussuchen wollen.

Häufige Fragen

Wie wandle ich ein GitLab-Repository in eine Textdatei um?

Fügen Sie oben die Projekt-URL ein, und der Dateibaum lädt als Liste mit Kontrollkästchen. Wählen Sie die gewünschten Dateien aus und exportieren Sie eine Textdatei: oben die Verzeichnisstruktur, darunter jede Datei unter einer Kopfzeile mit ihrem Pfad. Kostenlos, nichts zu installieren, keine Anmeldung.

Funktioniert das mit selbst gehostetem GitLab?

Selbst verwaltete Instanzen bieten dieselbe REST-API wie gitlab.com an, eine erreichbare Instanz verhält sich also gleich. Der Haken ist der Netzzugang — eine Instanz hinter einem Firmen-VPN oder in einem privaten Netz ist aus Ihrem Browser-Tab nicht erreichbar, und daran ändert auch kein Token etwas. Für diesen Fall klonen Sie das Projekt und nehmen den Konverter für lokale Ordner.

Wie konvertiere ich ein privates GitLab-Projekt?

Hinterlegen Sie ein Personal Access Token mit dem Scope read_repository. Erstellen Sie es unter Einstellungen → Access Tokens, geben Sie ihm die kürzeste Gültigkeit, die Ihre Sitzung abdeckt, und löschen Sie es danach. Lesezugriff genügt hier — ein Token mit Schreibrechten oder API-weitem Scope ist mehr Angriffsfläche, als die Aufgabe verlangt.

Warum das hier statt das Repo einfach zu klonen?

Ein Klon liefert Ihnen ein Arbeitsverzeichnis, und das hat die falsche Form für diese Aufgabe. Was ein Modell braucht, ist ein Dokument, in dem Struktur und Inhalt zusammenstehen und das Rauschen entfernt ist. Ein Klon zieht außerdem die vollständige Historie und jede Abhängigkeit mit — meist um ein Vielfaches mehr Bytes als der Quellcode, über den Sie tatsächlich nachdenken wollen.

Kommt es mit Untergruppen und verschachtelten Projektpfaden zurecht?

Ja. Durch GitLabs verschachtelte Gruppenstruktur laufen Projektpfade über mehrere Segmente, und identifiziert wird das Projekt über den vollständigen Pfad — fügen Sie also die komplette URL aus der Adressleiste ein, statt eine von Hand zusammenzubauen, dann löst die Suche korrekt auf.

Kann ich statt des ganzen Projekts nur einen Merge-Request-Diff konvertieren?

Von dieser Seite aus nicht — sie arbeitet auf dem Repository-Baum zu einer bestimmten Ref. Für Reviews ist das übliche Vorgehen, die vom Merge Request berührten Dateien zu konvertieren, das als Kontext einzufügen und den Diff selbst darunter zu setzen. Das Modell braucht den umgebenden Code, um eine Änderung zu beurteilen, und ein Diff allein liefert ihn selten mit.

Der Rest des Werkzeugkastens

Liegt der Code stattdessen auf GitHub? Der Konverter von GitHub-Repo zu Text arbeitet genauso. Nur auf Ihrem Rechner, oder auf einer selbst verwalteten Instanz, die Sie geklont haben? Dann nehmen Sie den Konverter für lokale Ordner. Sie brauchen die Dokumentationsseite statt des Quellcodes, der sie erzeugt? Web2Txt holt eine URL als Markdown.

Ausführlicher steht das alles im Blog: ein Leitfaden zum Einspeisen eines Repositories in ein KI-Modell, einer dazu, eine Codebasis in eine LLM-taugliche Datei zu verwandeln, die vollständige Anleitung zur Konvertierung von Repositories für LLMs und ein breiterer Text über das Vorbereiten von Dateien für KI-Werkzeuge.

Repo2Txt wird entwickelt und gepflegt von v12hero, einem unabhängigen Entwickler, der native und Web-Apps mit Fokus auf Datenschutz baut.