Veröffentlicht am: 25. Juni 2025
14 Minuten Lesezeit
So findet diese neue GitLab-Funktion exakte Treffer, nutzt Regex-Muster und zeigt kontextbezogene Ergebnisse in Terabyte-großen Codebasen an.

Kurz gesagt: Was wäre, wenn du jede Codezeile in 48 TB an Repositories in Millisekunden finden könntest? GitLabs neue Exact Code Search macht genau das möglich – mit präzisen Treffern, leistungsstarker Regex-Unterstützung und kontextbezogenen mehrzeiligen Ergebnissen, die die Arbeit mit großen Codebasen revolutionieren.
Jeder, der mit Code arbeitet, kennt die Frustration bei der Suche über Repositories hinweg. Egal ob du als Entwickler(in) einen Fehler debuggst, als DevOps-Ingenieur(in) Konfigurationen untersuchst, als Sicherheitsanalyst(in) nach Schwachstellen suchst, als technische(r) Redakteur(in) Dokumentationen aktualisierst oder als Manager(in) Implementierungen überprüfst – du weißt genau, was du brauchst, aber herkömmliche Suchwerkzeuge lassen dich oft im Stich. Diese konventionellen Tools liefern Dutzende von False Positives, bieten nicht den nötigen Kontext zum Verständnis der Ergebnisse und werden mit wachsenden Codebasen immer langsamer. Das Ergebnis? Wertvolle Zeit wird mit der Suche nach der Nadel im Heuhaufen verschwendet, anstatt Software zu entwickeln, zu sichern oder zu verbessern. GitLabs Code-Suchfunktion basierte bisher auf Elasticsearch oder OpenSearch. Diese eignen sich zwar hervorragend für die Suche in Issues, Merge Requests, Kommentaren und anderen Daten mit natürlicher Sprache, wurden aber nicht speziell für Code entwickelt. Nach der Evaluierung zahlreicher Optionen haben wir eine bessere Lösung entwickelt.
40 Stunden weniger Arbeit pro Woche: Cube nutzt GitLab Duo für mehr Effizienz. Codevorschläge, Testgenerierung und KI-Chat verhelfen zu einer besseren Arbeitsweise – schnell, sicher und effizient. Erfahre, wie Cube mit GitLab Duo den KI-Einsatz im SDLC perfektioniert. Erfolgsstory lesen
Mit GitLabs Exact Code Search, derzeit in der Beta-Phase und angetrieben von Zoekt (ausgesprochen "sukt", niederländisch für "sucht"). Zoekt ist eine Open-Source-Code-Suchmaschine, die ursprünglich von Google entwickelt und jetzt von Sourcegraph gepflegt wird – speziell konzipiert für schnelle, präzise Code-Suche im großen Maßstab. Wir haben sie mit GitLab-spezifischen Integrationen, Verbesserungen für Unternehmensmaßstäbe und nahtloser Integration des Berechtigungssystems erweitert. Diese Funktion revolutioniert, wie du Code findest und verstehst, mit drei Hauptfunktionen: 1. Exact Match-Modus: Null False Positives Im Exact Match-Modus liefert die Suchmaschine nur Ergebnisse, die exakt deiner Suchanfrage entsprechen, und eliminiert False Positives. Diese Präzision ist unbezahlbar beim:
Statt nur eine einzelne Zeile mit deinem Suchbegriff zu sehen, erhältst du den umgebenden Kontext, der für das Verständnis des Codes entscheidend ist. Das eliminiert die Notwendigkeit, für grundlegendes Verständnis in Dateien zu klicken, und beschleunigt deinen Workflow erheblich.Schauen wir uns an, wie diese Funktionen zu echten Produktivitätssteigerungen in alltäglichen Entwicklungsszenarien führen:
Vor Exact Code Search: Eine Fehlermeldung kopieren, suchen, durch Dutzende von Teiltreffern in Kommentaren und Dokumentation waten, durch mehrere Dateien klicken und schließlich den tatsächlichen Code finden. Mit Exact Code Search:
Vor Exact Code Search: Durch Verzeichnisse browsen, fundierte Vermutungen über Dateispeicherorte anstellen, Dutzende von Dateien öffnen und langsam eine mentale Karte der Codebasis aufbauen. Mit Exact Code Search:
Vor Exact Code Search: Versuchen, alle Instanzen einer Methode zu finden, einige Vorkommen übersehen und durch unvollständiges Refactoring Fehler einführen. Mit Exact Code Search:
Sicherheitsteams können:
Suche über deinen gesamten Namespace oder deine Instanz, um:
Bevor wir in unsere Skalierungserfolge eintauchen, lass uns erkunden, was Zoekt grundlegend von traditionellen Suchmaschinen unterscheidet – und warum es exakte Treffer so unglaublich schnell finden kann.
Zoekts Geschwindigkeit kommt von der Verwendung positionaler Trigramme – einer Technik, die jede Sequenz von drei Zeichen zusammen mit ihren exakten Positionen in Dateien indexiert. Dieser Ansatz löst einen der größten Schmerzpunkte, die Entwickler(innen) mit Elasticsearch-basierter Code-Suche hatten: False Positives.
So funktioniert es:
Traditionelle Volltextsuchmaschinen wie Elasticsearch tokenisieren Code in Wörter und verlieren Positionsinformationen. Wenn du nach getUserId() suchst, könnten sie Ergebnisse liefern, die user, get und Id über eine Datei verteilt enthalten – was zu diesen frustrierenden False Positives für GitLab-Nutzer(innen) führt.
Zoekts positionale Trigramme behalten exakte Zeichensequenzen und ihre Positionen bei. Wenn du nach getUserId() suchst, sucht Zoekt nach den exakten Trigrammen wie get, etU, tUs, Use, ser, erI, rId, Id(, d(), alle in der korrekten Reihenfolge und Position. Das stellt sicher, dass nur exakte Treffer zurückgegeben werden.
Das Ergebnis? Suchanfragen, die zuvor Hunderte irrelevanter Ergebnisse lieferten, liefern jetzt nur noch die präzisen Treffer, nach denen du suchst. Das war eine unserer meistgewünschten Funktionen aus gutem Grund – Entwickler(innen) verloren erhebliche Zeit beim Durchsuchen von False Positives.
Zoekt glänzt bei exakten Treffern und ist für Regular Expression-Suchen optimiert. Die Engine nutzt ausgefeilte Algorithmen, um Regex-Muster wenn möglich in effiziente Trigramm-Abfragen umzuwandeln und behält die Geschwindigkeit selbst bei komplexen Mustern über Terabytes von Code bei.
Exact Code Search ist leistungsstark und für massive Skalierung mit beeindruckender Performance gebaut. Das ist nicht nur eine neue UI-Funktion – sie wird von einer komplett neu konzipierten Backend-Architektur angetrieben.
Allein auf GitLab.com indexiert und durchsucht unsere Exact Code Search-Infrastruktur über 48 TB an Code-Daten bei gleichzeitig blitzschnellen Antwortzeiten. Diese Größenordnung repräsentiert Millionen von Repositories über Tausende von Namespaces, alle innerhalb von Millisekunden durchsuchbar. Um das in Perspektive zu setzen: Diese Größenordnung repräsentiert mehr Code als die gesamten Linux-Kernel-, Android- und Chromium-Projekte zusammen. Dennoch kann Exact Code Search eine spezifische Zeile in dieser massiven Codebasis in Millisekunden finden.
Unsere innovative Implementierung bietet:
Hinter den Kulissen arbeitet Exact Code Search als verteiltes System mit diesen Schlüsselkomponenten:
Exact Code Search integriert sich automatisch mit GitLabs Berechtigungssystem:
Während Zoekt die Kern-Suchtechnologie bereitstellte, war es ursprünglich als minimale Bibliothek zur Verwaltung von .zoekt-Indexdateien konzipiert – nicht als verteilte Datenbank oder Unternehmens-Service. Hier sind die wichtigsten technischen Herausforderungen, die wir überwunden haben, um es in GitLabs Maßstab zum Laufen zu bringen:
Das Problem: Zoekt war für die Arbeit mit lokalen Indexdateien konzipiert, nicht für die Verteilung über mehrere Nodes, die viele gleichzeitige Nutzer bedienen. Unsere Lösung: Wir haben eine umfassende Orchestrierungsschicht aufgebaut, die:
Das Problem: Wie verwaltet man effizient Terabytes von Indexdaten über mehrere Nodes bei gleichzeitig schnellen Updates? Unsere Lösung: Wir implementierten:
gitlab-zoekt-Binary, das sowohl im Indexer- als auch im Webserver-Modus arbeiten kannDas Problem: Zoekt hatte kein Konzept von GitLabs komplexem Berechtigungssystem – Nutzer sollten nur Ergebnisse aus Projekten sehen, auf die sie Zugriff haben. Unsere Lösung: Wir haben native Berechtigungsfilterung direkt in den Suchablauf integriert:
Das Problem: Die Verwaltung eines verteilten Suchsystems sollte kein dediziertes Team erfordern. Unsere Lösung:
Der Rollout eines komplett neuen Such-Backends für Millionen von Nutzern erforderte sorgfältige Planung. So haben wir die Auswirkungen auf Kunden minimiert und gleichzeitig Zuverlässigkeit sichergestellt:
Wir begannen damit, Exact Code Search nur für die gitlab-org-Gruppe zu aktivieren – unsere eigenen internen Repositories. Das ermöglichte uns:
Vor der Erweiterung konzentrierten wir uns darauf sicherzustellen, dass das System GitLab.coms Maßstab bewältigen konnte:
Wir erweiterten schrittweise auf Kunden, die daran interessiert waren, Exact Code Search zu testen:
gitlab-org/gitlab indexieren jetzt in ~10 Sekunden)Heute haben über 99 % der Premium- und Ultimate-lizenzierten Gruppen auf GitLab.com Zugriff auf Exact Code Search. Nutzer können:
Für technische Details: Interessiert an der detaillierten Architektur und Implementierung? Schau dir unser umfassendes Design-Dokument für ausführliche technische Details an, wie wir dieses verteilte Suchsystem gebaut haben.
Der Einstieg in Exact Code Search ist einfach, da es bereits standardmäßig für Premium- und Ultimate-Gruppen auf GitLab.com aktiviert ist (über 99 % der berechtigten Gruppen haben derzeit Zugriff).
Egal ob du den Exact Match- oder Regular Expression-Modus verwendest, du kannst deine Suche mit Modifikatoren verfeinern:
| Abfrage-Beispiel | Was es bewirkt |
|---|---|
file:js |
Sucht nur in Dateien, die "js" im Namen enthalten |
foo -bar |
Findet "foo", schließt aber Ergebnisse mit "bar" aus |
lang:ruby |
Sucht nur in Ruby-Dateien |
sym:process |
Findet "process" in Symbolen (Methoden, Klassen, Variablen) |
Profi-Tipp: Für die effizientesten Suchen beginne spezifisch und erweitere dann bei Bedarf. Die Verwendung von
file:- undlang:-Filtern erhöht die Relevanz dramatisch.
Stapele mehrere Filter für Präzision:
is_expected file:rb -file:spec
Das findet "is_expected" in Ruby-Dateien, die nicht "spec" im Namen haben. Nutze reguläre Ausdrücke für leistungsstarke Muster:
token.*=.*[\"']
Sieh dir diese Suche im GitLab Zoekt Repository an. Die Suche hilft, hartcodierte Passwörter zu finden, die, wenn nicht gefunden, ein Sicherheitsproblem darstellen können. Für detailliertere Syntax-Informationen, schau in die Exact Code Search-Dokumentation.
Exact Code Search befindet sich derzeit in der Beta-Phase für GitLab.com-Nutzer mit Premium- und Ultimate-Lizenzen:
Für Self-Managed-Instanzen bieten wir mehrere Bereitstellungsmethoden:
gitlab-zoekt Helm ChartWährend Exact Code Search bereits leistungsstark ist, verbessern wir sie kontinuierlich:
GitLabs Exact Code Search repräsentiert ein grundlegendes Umdenken bei der Code-Entdeckung. Durch die Bereitstellung exakter Treffer, leistungsstarker Regex-Unterstützung und kontextbezogener Ergebnisse löst sie die frustrierendsten Aspekte der Code-Suche:
Bereit für smartere Code-Suche? Erfahre mehr in unserer Dokumentation oder probiere es jetzt aus, indem du eine Suche in deinen Premium- oder Ultimate-lizenzierten Namespaces oder Projekten durchführst. Noch kein GitLab-Nutzer? Teste kostenlos GitLab Ultimate mit Duo!