[{"data":1,"prerenderedAt":704},["ShallowReactive",2],{"/fr-fr/blog/exact-code-search-find-code-faster-across-repositories/":3,"navigation-fr-fr":32,"banner-fr-fr":452,"footer-fr-fr":464,"Dmitry Gruzd":676,"next-steps-fr-fr":689},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"config":22,"_id":25,"_type":26,"title":27,"_source":28,"_file":29,"_stem":30,"_extension":31},"/fr-fr/blog/exact-code-search-find-code-faster-across-repositories","blog",false,"",{"noIndex":6,"title":9,"description":10},"Recherche de code exacte : ne fouillez plus dans vos dépôts","Découvrez comment trouver des correspondances exactes, utiliser des motifs regex et afficher des résultats contextuels dans des téraoctets de codes sources.",{"title":9,"description":10,"authors":12,"heroImage":14,"date":15,"body":16,"category":17,"tags":18},[13],"Dmitry Gruzd","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675154/Blog/Hero%20Images/blog-image-template-1800x945__8_.png","2025-06-25","**TL;DR :** Imaginez pouvoir cibler n'importe quelle ligne de code parmi 48 To de dépôts en quelques millisecondes ! C'est maintenant possible avec la nouvelle fonctionnalité de [recherche de code exacte](https://docs.gitlab.com/ee/user/search/exact_code_search.html) de GitLab qui fournit une précision extrême, une prise en charge avancée des expressions régulières (regex) et des résultats contextuels sur plusieurs lignes. En présence de dépôts de code volumineux, elle facilite considérablement le travail des équipes.\n## Pourquoi la recherche de code classique est-elle problématique ?\n\nTout développeur connaît la frustration qui peut naître de devoir fouiller du code dans plusieurs dépôts. Qu'il s'agisse de déboguer un problème, d'examiner des fichiers de configuration, de traquer une vulnérabilité, de mettre à jour la documentation ou de vérifier la mise en œuvre d'un processus, vous savez exactement ce que vous cherchez, mais les outils de recherche traditionnels vous font régulièrement défaut.\n\nTrop souvent, ils renvoient une avalanche de faux positifs, manquent cruellement de contexte pour comprendre les résultats obtenus et sont de plus en plus lents à mesure que le volume de code source augmente. Par conséquent, vous perdez un temps précieux à chercher du code spécifique dans des téraoctets de données au lieu de compiler, de sécuriser ou d'améliorer votre logiciel.\n\nLa fonctionnalité de recherche de code de GitLab était jusqu'ici optimisée par Elasticsearch ou OpenSearch. Bien qu'excellents pour rechercher des tickets, des merge requests, des commentaires et d'autres données contenant du langage naturel, ces outils n'ont tout simplement pas été spécifiquement conçus pour le code. Après [avoir évalué de nombreuses options](https://gitlab.com/groups/gitlab-org/-/epics/7404), nous avons développé une meilleure solution.\n\n## Qu'est-ce que la recherche de code exacte ?\n\nLa **[recherche de code exacte](https://docs.gitlab.com/ee/user/search/exact_code_search.html)** de GitLab est actuellement en phase de test bêta et optimisée par [Zoekt](https://github.com/sourcegraph/zoekt) (prononcé « zookt », qui signifie « recherche » en néerlandais). Zoekt est un moteur de recherche de code open source initialement développé par Google et aujourd'hui maintenu par Sourcegraph. Conçu spécifiquement pour une recherche de code à la fois rapide et précise à grande échelle, nous l'avons enrichi avec des intégrations propres à GitLab, des améliorations avancées et une intégration facilitée du système d'autorisations.\n\nCette fonctionnalité révolutionne la recherche de code et sa compréhension grâce à trois innovations clés :\n\n**1. Mode de recherche par correspondance exacte : aucun faux positif**\n\nLorsque vous basculez en **mode de recherche par correspondance exacte**, le moteur de recherche ne renvoie que les résultats qui correspondent exactement à votre requête. Il ne retourne aucun faux positif. Cette précision est inestimable dans les cas de figure suivants :\n\n* Vous recherchez des messages d'erreur spécifiques.\n* Vous recherchez des signatures de fonctions précises.\n* Vous recherchez des instances de noms de variables spécifiques.\n\n**2. Mode de recherche par expression régulière : puissante mise en correspondance de motifs**\n\nPour les besoins de recherche complexes, ce mode vous permet de créer des motifs de recherche sophistiqués :\n\n* Trouvez des fonctions en suivant des motifs de nommage spécifiques.\n* Déterminez l’emplacement des variables qui respectent certains critères précis.\n* Identifiez les failles de sécurité potentielles à l'aide de la correspondance de motifs.\n\n**3. Correspondances sur plusieurs lignes : affichage du code en contexte**\n\n![Recherche de code exacte](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750704179/ttjuilkt3v7gtyywnchx.png)\n\nEn plus de la ligne contenant le code recherché, vous avez accès au contexte environnant qui est indispensable pour bien comprendre le code. Vous n'avez donc plus besoin d'accéder aux fichiers dans le seul but d'obtenir un contexte plus clair, ce qui accélère considérablement votre workflow.\n\n## Des fonctionnalités aux workflows, quels sont les cas d'utilisation réels et l'impact associé ?\n\nExaminons maintenant comment ces nouvelles capacités se traduisent dans la réalité du quotidien des équipes de développement  :\n\n### Débogage en quelques secondes\n\nVoici un exemple de workflow tel qu'il pouvait être envisagé avant que la recherche de code exacte ne soit disponible :\nvous deviez copier un message d'erreur, lancer une recherche, parcourir une longue liste de correspondances partielles mêlant commentaires, documentation et fragments de code, cliquer sur plusieurs fichiers... avant de trouver enfin la ligne de code que vous recherchiez.\n\nAvec la recherche de code exacte, le scénario est bien plus rapide :\n\n1. Vous copiez le message d'erreur tel quel.\n2. Vous le collez dans la fonctionnalité de recherche de code exacte en activant le mode de recherche par correspondance exacte.\n3. Vous trouvez instantanément l'emplacement précis où l'erreur est présente, avec le contexte environnant nécessaire à sa compréhension.\n\n**Impact :** vous réduisez ainsi le temps de débogage de plusieurs minutes à quelques secondes, sans frustration ni faux positifs.\n\n### Exploration rapide de codes sources inconnus\n\nAvant la mise à disposition de la recherche de code exacte, voici un exemple de workflow classique :\n\n vous deviez parcourir les répertoires, deviner l'emplacement probable des fichiers, ouvrir des dizaines de fichiers et élaborer peu à peu une compréhension globale du code source.\n\n\nAvec la recherche de code exacte, le processus est simple :\n\n* Vous recherchez directement les méthodes ou classes principales en mode de recherche par correspondance exacte.\n* Vous examinez plusieurs correspondances de lignes pour comprendre les détails de leur mise en œuvre.\n* Vous utilisez le mode de recherche par expression régulière pour identifier des motifs similaires dans l'ensemble du code source.\n\n**Impact :** vous bénéficiez d'une vision claire de l'architecture du code en quelques minutes plutôt qu'en quelques heures, ce qui accélère considérablement l'intégration de nouveaux membres au sein de l'équipe ainsi que la collaboration transversale.\n\n### Refactorisation sécurisée\n\nAvant que GitLab n'intègre la recherche de code exacte, voici un exemple de workflow courant :\nvous deviez essayer de localiser toutes les instances d'une méthode, mais certaines passaient inaperçues, et vous introduisiez des bogues en raison d'une refactorisation incomplète.\n\nAvec la recherche de code exacte :\n\n* Vous utilisez le mode de recherche par correspondance exacte pour identifier toutes les occurrences de méthodes ou variables.\n* Vous analysez le contexte pour comprendre les motifs d'utilisation.\n* Vous planifiez votre refactorisation avec des informations complètes sur son impact.\n\n\n **Impact :** vous éliminez les bogues liés aux « instances manquées » qui entravent souvent les efforts de refactorisation, vous améliorez la qualité du code et vous réduisez les ajustements nécessaires.\n\n\n### Audit de sécurité optimisé\n\nLes équipes de sécurité peuvent :\n\n* Créer des motifs regex ciblant les portions de code présentant des vulnérabilités connues\n* Effectuer une recherche dans tous les dépôts d'un espace de nommage\n* Identifier rapidement les failles de sécurité potentielles avec un contexte riche facilitant l'évaluation des risques\n\n**Impact :** vous transformez vos audits de sécurité, souvent manuels et sujets aux erreurs, en revues de code systématiques et exhaustives.\n\n### Informations recoupées entre plusieurs dépôts\n\nVos équipes peuvent effectuer une recherche dans l'ensemble de votre espace de nommage ou de votre instance pour :\n\n* Identifier des implémentations similaires dans différents projets\n* Identifier des opportunités de création de bibliothèques partagées ou de standardisation du code\n\n**Impact :** vous éliminez les silos entre les projets et identifiez les opportunités de réutilisation et de standardisation du code.\n\n## Zoekt : rapidité et précision au service du code\n\nAvant de détailler nos réalisations à grande échelle, explorons ce qui distingue Zoekt des moteurs de recherche classiques, et pourquoi il peut trouver des correspondances exactes avec une rapidité aussi incroyable.\n\n### Trigrammes positionnels : le secret d'une correspondance exacte ultra-rapide\n\nLa rapidité de Zoekt provient de son utilisation de **trigrammes positionnels**, une technique qui indexe chaque séquence de trois caractères en conservant leur position exacte dans les fichiers. Cette approche résout l'un des plus grands défis que les développeurs rencontrent avec la recherche de code basée sur Elasticsearch : la prolifération de faux positifs.\n\nVoici le principe :\n\nLes **moteurs de recherche plein texte traditionnels** comme Elasticsearch segmentent le code en mots isolés et perdent ainsi les informations de position. Par exemple, lorsque vous recherchez `getUserId()`, ils peuvent renvoyer des résultats contenant les fragments **user**, **get** et **Id** dispersés dans un même fichier, ce qui génère des faux positifs, source de frustration pour les utilisateurs de GitLab.\n\nLes **trigrammes positionnels de Zoekt**, quant à eux, conservent les séquences de caractères exactes ainsi que leurs positions dans le code. Ainsi, lorsque vous recherchez `getUserId()`, Zoekt cible précisément les trigrammes exacts, comme **get**, **etU**, **tUs**, **Use**, **ser**, **erI**, **rId**, **Id(\", \"d()**, dans cette séquence précise et à ces positions exactes. Cette approche garantit que seules les correspondances exactes sont renvoyées.\n\nAinsi, des recherches qui renvoyaient auparavant des centaines de faux positifs ne renvoient désormais plus que les correspondances exactes souhaitées. Cette fonctionnalité était [l'une des plus demandées](https://gitlab.com/gitlab-org/gitlab/-/issues/325234) pour une bonne raison : les équipes de développement perdaient beaucoup trop de temps à passer au crible les faux positifs.\n\n### Performances des expressions régulières à grande échelle\n\nZoekt excelle dans la recherche de correspondances exactes, mais est également optimisé pour les recherches d'expressions régulières. Grâce à des algorithmes sophistiqués, il convertit les motifs regex en requêtes trigrammes efficaces lorsque cela est possible, garantissant ainsi une rapidité constante, même pour les recherches de motifs complexes portant sur plusieurs téraoctets de code.\n\n## Une fonctionnalité adaptée aux entreprises\n\nLa recherche de code exacte est puissante et conçue pour gérer de très grands volumes de code tout en offrant des temps de réponse remarquables. Il ne s'agit pas du simple ajout d'une nouvelle fonctionnalité à l'interface utilisateur, mais d'une architecture backend entièrement repensée.\n\n### Gestion de plusieurs téraoctets de code en toute simplicité\n\nRien que sur GitLab.com, notre infrastructure de recherche de code exacte indexe et interroge plus de **48 To** de données de code, tout en offrant des temps de réponse ultra-rapides. Cette volumétrie couvre des millions de dépôts répartis dans des milliers d'espaces de nommage, tous consultables en seulement quelques millisecondes, soit plus de code que l'ensemble des projets du noyau Linux, d'Android et de Chromium combinés. Et pourtant, la recherche de code exacte peut trouver une ligne spécifique dans ce vaste code source en quelques millisecondes seulement.\n\n### Architecture de nœuds à enregistrement automatique\n\nParmi nos améliorations techniques, voici quelques innovations clés : \n\n* **Enregistrement automatique des nœuds :** les nœuds Zoekt s'enregistrent automatiquement auprès de GitLab.\n* **Attribution dynamique des partitions :** le système répartit automatiquement les espaces de nommage entre les nœuds.\n* **Surveillance de l'état :** les nœuds qui ne s'enregistrent pas sont automatiquement signalés comme hors ligne.\n\nCette architecture à configuration automatique simplifie considérablement la montée en charge. Lorsque la capacité doit être augmentée, les administrateurs peuvent tout simplement ajouter de nouveaux nœuds, sans aucune reconfiguration complexe.\n\n### Système distribué avec répartition de charge intelligente\n\nEn arrière-plan, la recherche de code exacte repose sur un système distribué avec les composants clés suivants :\n\n* **Nœuds de recherche spécialisés :** serveurs dédiés pour gérer l'indexation et la recherche\n* **Partitionnement intelligent :** le code est distribué entre les nœuds en fonction des espaces de nommage\n* **Équilibrage automatique de la charge :** le système répartit intelligemment le travail en fonction des capacités disponibles\n* **Haute disponibilité :** plusieurs réplicas assurent la continuité du service même en cas de défaillance d'un nœud\n\n*Remarque : la haute disponibilité fait partie intégrante de l'architecture, mais n'est pas encore entièrement déployée. Consultez le [ticket 514736](https://gitlab.com/gitlab-org/gitlab/-/issues/514736) pour vous tenir au courant des futures mises à jour.*\n\n### Intégration sans accroc de la sécurité\n\nLa recherche de code exacte s'intègre automatiquement au système d'autorisation de GitLab :\n\n* Les résultats de recherche sont filtrés en fonction des droits d'accès de chaque utilisateur.\n* Seul le code des projets auxquels l'utilisateur a accès est affiché.\n* La sécurité est intégrée à l'architecture de base, et non ajoutée ultérieurement.\n\n### Performances optimisées\n\n* **Indexation performante :** les dépôts volumineux sont indexés en quelques dizaines de secondes.\n* **Exécution rapide des requêtes :** la plupart des recherches renvoient des résultats en moins d'une seconde.\n* **Résultats en streaming :** la nouvelle recherche fédérée basée sur gRPC diffuse les résultats au fur et à mesure de leur découverte.\n* **Arrêt anticipé:** dès qu'un nombre suffisant de résultats a été collecté, le système interrompt la recherche.\n\n## De la bibliothèque au système distribué : notre réponse aux défis d'ingénierie\n\nBien que Zoekt soit très performant pour indexer et rechercher du code localement, son architecture de base n'était pas conçue à l'origine comme une bibliothèque minimale, destinée à la gestion des fichiers d'index `.zoekt`, ni à devenir une base de données distribuée ou un service capable de fonctionner à l'échelle d'une entreprise. Voici les principaux défis techniques que nous avons dû surmonter pour l'adapter pleinement à l'écosystème GitLab.\"\n\n### Défi 1 : création d'une couche d'orchestration\n\n**Le problème :** Zoekt a été conçu pour fonctionner avec des fichiers d'index locaux, non distribués sur plusieurs nœuds desservant de nombreux utilisateurs simultanés.\n\n**Notre solution :** nous avons développé une couche d'orchestration complète qui :\n\n* crée et gère des modèles de base de données pour suivre les nœuds, les index, les dépôts et les tâches.\n* met en œuvre une architecture de nœuds à enregistrement automatique (inspirée du fonctionnement de GitLab Runner).\n* gère l'attribution automatique des partitions et l'équilibrage de la charge entre les nœuds.\n* fournit une communication bidirectionnelle de l'API entre les nœuds GitLab Rails et Zoekt.\n\n### Défi 2 : mise à l'échelle du stockage et de l'indexation\n\n**Le problème :** comment gérer efficacement des téraoctets de données d'index répartis sur plusieurs nœuds tout en garantissant des mises à jour rapides ?\n\n**Notre solution :** Nous avons déployé les fonctionnalités innovantes suivantes  :\n\n* Partitionnement intelligent : les espaces de nommage sont distribués entre les nœuds en tenant compte de leur capacité et de leur charge.\n* Réplication indépendante : chaque nœud est indexé indépendamment à partir de [Gitaly](https://gitlab.com/gitlab-org/gitaly) (notre service de stockage Git), évitant ainsi toute synchronisation complexe.\n* Gestion avancée des filigranes : un système sophistiqué d'allocation de stockage empêche les nœuds de manquer d'espace.\n* Architecture binaire unifiée : un seul binaire `gitlab-zoekt ` peut fonctionner à la fois en mode indexeur et en mode serveur web.\n\n### Défi 3 : intégration des autorisations\n\n**Le problème :** Zoekt n'avait aucune notion du système d'autorisation complexe de GitLab : les utilisateurs ne doivent voir que les résultats des projets auxquels ils ont accès.\n\n**Notre solution :** nous avons intégré un filtrage des autorisations natif directement dans le flux de recherche :\n\n* Les requêtes de recherche incluent le contexte des autorisations de l'utilisateur.\n* Les résultats sont filtrés en temps réel pour ne retourner que les éléments auxquels l'utilisateur peut accéder, même dans le cas où les autorisations évoluent avant la fin de l'indexation.\n\n### Défi 4 : simplification opérationnelle\n\n**Le problème :** gérer un système de recherche distribué ne devrait pas nécessiter une équipe dédiée.\n\n**Notre solution :**\n\n* Mise à l'échelle automatique : l'ajout de capacité est aussi simple que le déploiement de nœuds supplémentaires. Ces derniers s'enregistrent automatiquement et gèrent immédiatement la charge de travail.\n* Auto-réparation : les nœuds qui ne s'enregistrent pas sont automatiquement signalés comme hors ligne, avec redistribution automatique de leurs tâches.\n* Partitionnement sans configuration : le système détermine automatiquement les affectations de partitions optimales.\n\n## Déploiement progressif : réduire les risques à grande échelle\n\nLe déploiement d'un tout nouveau backend de recherche pour des millions d'utilisateurs a nécessité une planification minutieuse. Voici comment nous avons limité l'impact sur les clients tout en garantissant la fiabilité :\n\n### Phase 1 : tests contrôlés (groupe gitlab-org)\n\nNous avons commencé par activer la recherche de code exacte uniquement pour le groupe `gitlab-org`, constitué de nos propres dépôts internes. Cette étape nous a permis de :\n\n* Tester le système avec des charges de travail réelles en environnement de production\n* Identifier et corriger les goulots d'étranglement liés aux performances\n* Rationaliser le processus de déploiement\n* Tirer des enseignements concrets sur les workflows grâce aux retours d'utilisateurs réels\n\n### Phase 2 : validation et optimisation des performances\n\nAvant d'étendre la fonctionnalité, nous nous sommes assurés que le système pouvait gérer la charge à l'échelle de GitLab.com. Pour cela, nous avons dû :\n\n* Mettre en œuvre une surveillance et une gestion des alertes complètes\n* Valider la gestion du stockage basée sur la croissance réelle des données en environnement de production\n\n### Phase 3 : expansion progressive auprès des clients\n\nNous avons progressivement ouvert l'accès à la recherche de code exacte aux clients désireux de l'essayer, afin de :\n\n* Collecter leurs retours sur les performances et l'expérience utilisateur\n* Affiner l'interface utilisateur de recherche en fonction des workflows réels des utilisateurs\n* Optimiser les performances d'indexation (par exemple, les grands dépôts comme `gitlab-org/gitlab` sont désormais indexés en environ 10 secondes)\n* Ajuster l'architecture en fonction des leçons tirées des premiers essais\n* Augmenter massivement le débit d'indexation et améliorer le cycle de vie des transitions d'état\n\n### Phase 4 : déploiement à grande échelle\n\nAujourd'hui, plus de 99 % des groupes disposant des licences Premium et Ultimate sur GitLab.com ont accès à la recherche de code exacte. Les utilisateurs peuvent :\n\n* Basculer facilement entre les modes de recherche par expression régulière et par correspondance exacte\n* Tirer parti des avantages sans modifier la configuration\n* Revenir à l'ancienne méthode de recherche si nécessaire (bien que peu d'entre eux optent pour cette possibilité)\n\nCe déploiement progressif a permis d'éviter toute interruption de service, baisse de performances ou perte de fonctionnalités pendant la transition. Les premiers retours sont très positifs, car les utilisateurs constatent que leurs résultats de recherche sont plus pertinents et qu'ils les obtiennent beaucoup plus rapidement.\n\n> **Analyse technique approfondie :** Vous souhaitez en savoir plus sur l'architecture et la mise en œuvre de la recherche de code exacte ? Consultez notre [document de conception](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/code_search_with_zoekt/) complet, qui offre une description technique détaillée de ce système de recherche distribué.\n\n## Premiers pas : comment lancer une recherche de code exacte\n\nLa prise en main de la recherche de code exacte est simple, car cette fonctionnalité est déjà activée par défaut pour les groupes Premium et Ultimate sur GitLab.com (accessibles aujourd'hui à plus de 99 % des groupes éligibles).\n\n### Guide de démarrage rapide\n\n1. Accédez à la recherche avancée depuis votre projet ou groupe GitLab.\n2. Saisissez votre terme de recherche dans l'onglet Code.\n3. Basculez entre les modes de recherche par correspondance exacte et par expression régulière.\n4. Utilisez des filtres pour affiner votre recherche.\n\n### Syntaxe de recherche de base\n\nQue vous utilisiez le mode de recherche par correspondance exacte ou par expression régulière, vous pouvez affiner votre recherche avec divers modificateurs :\n\n| Exemple de requête | Utilité                                             |\n| ------------- | -------------------------------------------------------- |\n| `file:js`     | Recherche uniquement dans les fichiers dont le nom contient « js »          |\n| `foo -bar`    | Recherche « foo », mais exclut les résultats contenant « bar »              |\n| `lang:ruby`   | Recherche uniquement dans les fichiers Ruby                              |\n| `sym:process` | Recherche « process » dans les symboles (méthodes, classes, variables) |\n\n> **Conseil de pro :** pour optimiser votre recherche, commencez par une requête précise, puis élargissez-la si besoin. L'utilisation des filtres `file:` et `lang:` augmente considérablement la pertinence des résultats.\n\n### Techniques de recherche avancées\n\nCombinez plusieurs filtres pour gagner en précision :\n\n```\nis_expected file:rb -file:spec\n```\n\nCette requête recherche « is_expected » dans les fichiers Ruby dont le nom ne contient pas « spec ».\n\nTirez parti des expressions régulières pour des motifs puissants :\n\n```\ntoken.*=.*[\\\"']\n```\n\n[Consultez cette recherche effectuée dans le dépôt GitLab Zoekt.](https://gitlab.com/search?search=token.*%3D.*%5B%5C%22'%5D&nav_source=navbar&project_id=46649240&group_id=9970&search_code=true&repository_ref=main&regex=true)\n\nElle permet de trouver des mots de passe codés en dur qui, s'ils ne sont pas détectés, peuvent constituer un risque de sécurité.\n\nPour approfondir la syntaxe, consultez la [documentation dédiée à la recherche de code exacte](https://docs.gitlab.com/user/search/exact_code_search/#syntax).\n\n## Disponibilité et déploiement\n\n### Disponibilité actuelle\n\nLa recherche de code exacte est actuellement disponible en version bêta pour les utilisateurs de GitLab.com disposant de licences Premium et Ultimate :\n\n* Elle est accessible à plus de 99 % des groupes éligibles sous licence.\n* La recherche dans l'interface utilisateur utilise automatiquement Zoekt lorsqu'il est disponible ; la recherche de code exacte via l'API de recherche est activée par le biais d'un feature flag.\n\n### Options de déploiement pour les instances Self-Managed\n\nPour les instances Self-Managed, nous proposons plusieurs méthodes de déploiement :\n\n* Kubernetes/Helm : notre méthode la mieux prise en charge, basée sur notre [Helm Chart `gitlab-zoekt`](https://gitlab.com/gitlab-org/cloud-native/charts/gitlab-zoekt).\n* Autres méthodes : nous travaillons actuellement sur la simplification du déploiement via Omnibus et d'autres options d'installation.\n\nLes exigences en configuration système varient selon la taille de votre code source, mais l'architecture est conçue pour évoluer horizontalement et/ou verticalement à mesure que vos besoins augmentent.\n\n## Prochaines étapes\n\nBien que la recherche de code exacte soit déjà puissante, nous l'améliorons continuellement avec :\n\n* **Des optimisations à grande échelle** pour gérer des instances comptant des centaines de milliers de dépôts\n* **Des options de déploiement renforcées pour les instances Self-Managed**, y compris la prise en charge simplifiée d'Omnibus\n* **Une prise en charge complète de la haute disponibilité** avec basculement automatique et équilibrage de la charge\n\nRestez à l'écoute pour suivre les prochaines mises à jour lorsque nous passerons de la version bêta à la disponibilité générale.\n\n## Transformez votre façon de rechercher des lignes de code\n\nAvec la recherche de code exacte, GitLab repense en profondeur la manière dont le code est exploré, en fournissant des correspondances exactes, une prise en charge avancée des expressions régulières et des résultats contextuels. Cette nouvelle fonctionnalité résout les aspects les plus frustrants de la recherche de code :\n\n* Ne perdez plus votre temps avec des résultats non pertinents.\n* Ne ratez plus aucune correspondance importante.\n* N'ouvrez plus plusieurs fichiers juste pour comprendre le contexte de base.\n* Ne subissez plus de problèmes de performances à mesure que la taille de vos dépôts de code augmente.\n\nL'impact s'étend même bien au-delà, à la productivité globale des équipes :\n\n* **Vos équipes collaborent plus efficacement** avec un référencement clair du code.\n* **Le partage des connaissances s'accélère** avec la détection facile des motifs.\n* **L'intégration des nouveaux membres d'équipe s'accélère** avec une compréhension rapide du code source.\n* **La sécurité est renforcée** avec un audit efficace des motifs.\n* **Une réduction de la dette technique** devient réellement envisageable.\n\nLa recherche de code exacte est plus qu'une simple fonctionnalité : elle vous permet de mieux comprendre et gérer le code. Alors, trouvez du code plus rapidement, sans frustration.\n\n**Nous serions ravis de connaître votre avis !** Partagez vos expériences, vos questions ou vos commentaires sur la recherche de code exacte dans notre [ticket dédié aux retours d'expérience](https://gitlab.com/gitlab-org/gitlab/-/issues/420920). Vos retours nous aident à hiérarchiser nos priorités d'améliorations et à enrichir nos futures fonctionnalités.\n\n#### Vous souhaitez tirer parti d'une recherche de code plus intelligente ? Pour en savoir plus, consultez notre [documentation](https://docs.gitlab.com/ee/user/search/exact_code_search.html) et essayez dès aujourd'hui notre nouvelle fonctionnalité en effectuant une recherche dans vos espaces de nommage ou vos projets disposant d'une licence Premium ou Ultimate. Vous n'utilisez pas encore GitLab ? Inscrivez-vous pour un [essai gratuit de 60 jours de GitLab Ultimate enrichi des capacités de GitLab Duo](https://about.gitlab.com/fr-fr/free-trial/?hosted=saas) !","product",[19,20,21],"produit","tutoriel","open source",{"featured":6,"template":23,"slug":24},"BlogPost","exact-code-search-find-code-faster-across-repositories","content:fr-fr:blog:exact-code-search-find-code-faster-across-repositories.yml","yaml","Exact Code Search Find Code Faster Across Repositories","content","fr-fr/blog/exact-code-search-find-code-faster-across-repositories.yml","fr-fr/blog/exact-code-search-find-code-faster-across-repositories","yml",{"_path":33,"_dir":34,"_draft":6,"_partial":6,"_locale":7,"data":35,"_id":448,"_type":26,"title":449,"_source":28,"_file":450,"_stem":451,"_extension":31},"/shared/fr-fr/main-navigation","fr-fr",{"logo":36,"freeTrial":41,"sales":46,"login":51,"items":56,"search":389,"minimal":425,"duo":439},{"config":37},{"href":38,"dataGaName":39,"dataGaLocation":40},"/fr-fr/","gitlab logo","header",{"text":42,"config":43},"Commencer un essai gratuit",{"href":44,"dataGaName":45,"dataGaLocation":40},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":47,"config":48},"Contacter l'équipe commerciale",{"href":49,"dataGaName":50,"dataGaLocation":40},"/fr-fr/sales/","sales",{"text":52,"config":53},"Connexion",{"href":54,"dataGaName":55,"dataGaLocation":40},"https://gitlab.com/users/sign_in/","sign in",[57,101,200,205,310,370],{"text":58,"config":59,"cards":61,"footer":84},"Plateforme",{"dataNavLevelOne":60},"platform",[62,68,76],{"title":58,"description":63,"link":64},"La plateforme DevSecOps alimentée par l'IA la plus complète",{"text":65,"config":66},"Découvrir notre plateforme",{"href":67,"dataGaName":60,"dataGaLocation":40},"/fr-fr/platform/",{"title":69,"description":70,"link":71},"GitLab Duo (IA)","Créez des logiciels plus rapidement en tirant parti de l'IA à chaque étape du développement",{"text":72,"config":73},"Découvrez GitLab Duo",{"href":74,"dataGaName":75,"dataGaLocation":40},"/fr-fr/gitlab-duo/","gitlab duo ai",{"title":77,"description":78,"link":79},"Choisir GitLab","10 raisons pour lesquelles les entreprises choisissent GitLab",{"text":80,"config":81},"En savoir plus",{"href":82,"dataGaName":83,"dataGaLocation":40},"/fr-fr/why-gitlab/","why gitlab",{"title":85,"items":86},"Démarrer avec",[87,92,97],{"text":88,"config":89},"Ingénierie de plateforme",{"href":90,"dataGaName":91,"dataGaLocation":40},"/fr-fr/solutions/platform-engineering/","platform engineering",{"text":93,"config":94},"Expérience développeur",{"href":95,"dataGaName":96,"dataGaLocation":40},"/fr-fr/developer-experience/","Developer experience",{"text":98,"config":99},"MLOps",{"href":100,"dataGaName":98,"dataGaLocation":40},"/fr-fr/topics/devops/the-role-of-ai-in-devops/",{"text":102,"left":103,"config":104,"link":106,"lists":110,"footer":182},"Produit",true,{"dataNavLevelOne":105},"solutions",{"text":107,"config":108},"Voir toutes les solutions",{"href":109,"dataGaName":105,"dataGaLocation":40},"/fr-fr/solutions/",[111,137,160],{"title":112,"description":113,"link":114,"items":119},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":115},{"icon":116,"href":117,"dataGaName":118,"dataGaLocation":40},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[120,124,128,133],{"text":121,"config":122},"CI/CD",{"href":123,"dataGaLocation":40,"dataGaName":121},"/fr-fr/solutions/continuous-integration/",{"text":125,"config":126},"Développement assisté par l'IA",{"href":74,"dataGaLocation":40,"dataGaName":127},"AI assisted development",{"text":129,"config":130},"Gestion du code source",{"href":131,"dataGaLocation":40,"dataGaName":132},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":134,"config":135},"Livraison de logiciels automatisée",{"href":117,"dataGaLocation":40,"dataGaName":136},"Automated software delivery",{"title":138,"description":139,"link":140,"items":145},"Securité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":141},{"href":142,"dataGaName":143,"dataGaLocation":40,"icon":144},"/fr-fr/solutions/security-compliance/","security and compliance","ShieldCheckLight",[146,150,155],{"text":147,"config":148},"Sécurité et conformité",{"href":142,"dataGaLocation":40,"dataGaName":149},"Security & Compliance",{"text":151,"config":152},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":153,"dataGaLocation":40,"dataGaName":154},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":156,"config":157},"Conformité et gouvernance",{"href":158,"dataGaLocation":40,"dataGaName":159},"/fr-fr/solutions/continuous-software-compliance/","Compliance and governance",{"title":161,"link":162,"items":167},"Mesures",{"config":163},{"icon":164,"href":165,"dataGaName":166,"dataGaLocation":40},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[168,172,177],{"text":169,"config":170},"Visibilité et mesures",{"href":165,"dataGaLocation":40,"dataGaName":171},"Visibility and Measurement",{"text":173,"config":174},"Gestion de la chaîne de valeur",{"href":175,"dataGaLocation":40,"dataGaName":176},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":178,"config":179},"Données d'analyse et informations clés",{"href":180,"dataGaLocation":40,"dataGaName":181},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":183,"items":184},"GitLab pour",[185,190,195],{"text":186,"config":187},"Entreprises",{"href":188,"dataGaLocation":40,"dataGaName":189},"/fr-fr/enterprise/","enterprise",{"text":191,"config":192},"PME",{"href":193,"dataGaLocation":40,"dataGaName":194},"/fr-fr/small-business/","small business",{"text":196,"config":197},"Secteur public",{"href":198,"dataGaLocation":40,"dataGaName":199},"/fr-fr/solutions/public-sector/","public sector",{"text":201,"config":202},"Tarifs",{"href":203,"dataGaName":204,"dataGaLocation":40,"dataNavLevelOne":204},"/fr-fr/pricing/","pricing",{"text":206,"config":207,"link":209,"lists":213,"feature":297},"Ressources",{"dataNavLevelOne":208},"resources",{"text":210,"config":211},"Afficher toutes les ressources",{"href":212,"dataGaName":208,"dataGaLocation":40},"/fr-fr/resources/",[214,247,269],{"title":215,"items":216},"Premiers pas",[217,222,227,232,237,242],{"text":218,"config":219},"Installation",{"href":220,"dataGaName":221,"dataGaLocation":40},"/fr-fr/install/","install",{"text":223,"config":224},"Guides de démarrage rapide",{"href":225,"dataGaName":226,"dataGaLocation":40},"/fr-fr/get-started/","quick setup checklists",{"text":228,"config":229},"Apprentissage",{"href":230,"dataGaLocation":40,"dataGaName":231},"https://university.gitlab.com/","learn",{"text":233,"config":234},"Documentation sur le produit",{"href":235,"dataGaName":236,"dataGaLocation":40},"https://docs.gitlab.com/","product documentation",{"text":238,"config":239},"Vidéos sur les bonnes pratiques",{"href":240,"dataGaName":241,"dataGaLocation":40},"/fr-fr/getting-started-videos/","best practice videos",{"text":243,"config":244},"Intégrations",{"href":245,"dataGaName":246,"dataGaLocation":40},"/fr-fr/integrations/","integrations",{"title":248,"items":249},"Découvrir",[250,255,259,264],{"text":251,"config":252},"Histoires de succès client",{"href":253,"dataGaName":254,"dataGaLocation":40},"/fr-fr/customers/","customer success stories",{"text":256,"config":257},"Blog",{"href":258,"dataGaName":5,"dataGaLocation":40},"/fr-fr/blog/",{"text":260,"config":261},"Travail à distance",{"href":262,"dataGaName":263,"dataGaLocation":40},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":265,"config":266},"TeamOps",{"href":267,"dataGaName":268,"dataGaLocation":40},"/fr-fr/teamops/","teamops",{"title":270,"items":271},"Connecter",[272,277,282,287,292],{"text":273,"config":274},"Services GitLab",{"href":275,"dataGaName":276,"dataGaLocation":40},"/fr-fr/services/","services",{"text":278,"config":279},"Communauté",{"href":280,"dataGaName":281,"dataGaLocation":40},"/community/","community",{"text":283,"config":284},"Forum",{"href":285,"dataGaName":286,"dataGaLocation":40},"https://forum.gitlab.com/","forum",{"text":288,"config":289},"Événements",{"href":290,"dataGaName":291,"dataGaLocation":40},"/events/","events",{"text":293,"config":294},"Partenaires",{"href":295,"dataGaName":296,"dataGaLocation":40},"/fr-fr/partners/","partners",{"backgroundColor":298,"textColor":299,"text":300,"image":301,"link":305},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":302,"config":303},"carte promo The Source",{"src":304},"/images/navigation/the-source-promo-card.svg",{"text":306,"config":307},"Lire les articles les plus récents",{"href":308,"dataGaName":309,"dataGaLocation":40},"/fr-fr/the-source/","the source",{"text":311,"config":312,"lists":314},"Société",{"dataNavLevelOne":313},"company",[315],{"items":316},[317,322,328,330,335,340,345,350,355,360,365],{"text":318,"config":319},"À propos",{"href":320,"dataGaName":321,"dataGaLocation":40},"/fr-fr/company/","about",{"text":323,"config":324,"footerGa":327},"Emplois",{"href":325,"dataGaName":326,"dataGaLocation":40},"/jobs/","jobs",{"dataGaName":326},{"text":288,"config":329},{"href":290,"dataGaName":291,"dataGaLocation":40},{"text":331,"config":332},"Leadership",{"href":333,"dataGaName":334,"dataGaLocation":40},"/company/team/e-group/","leadership",{"text":336,"config":337},"Équipe",{"href":338,"dataGaName":339,"dataGaLocation":40},"/company/team/","team",{"text":341,"config":342},"Manuel",{"href":343,"dataGaName":344,"dataGaLocation":40},"https://handbook.gitlab.com/","handbook",{"text":346,"config":347},"Relations avec les investisseurs",{"href":348,"dataGaName":349,"dataGaLocation":40},"https://ir.gitlab.com/","investor relations",{"text":351,"config":352},"Centre de confiance",{"href":353,"dataGaName":354,"dataGaLocation":40},"/fr-fr/security/","trust center",{"text":356,"config":357},"Centre pour la transparence de l'IA",{"href":358,"dataGaName":359,"dataGaLocation":40},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":361,"config":362},"Newsletter",{"href":363,"dataGaName":364,"dataGaLocation":40},"/company/contact/","newsletter",{"text":366,"config":367},"Presse",{"href":368,"dataGaName":369,"dataGaLocation":40},"/press/","press",{"text":371,"config":372,"lists":373},"Nous contacter",{"dataNavLevelOne":313},[374],{"items":375},[376,379,384],{"text":47,"config":377},{"href":49,"dataGaName":378,"dataGaLocation":40},"talk to sales",{"text":380,"config":381},"Aide",{"href":382,"dataGaName":383,"dataGaLocation":40},"/support/","get help",{"text":385,"config":386},"Portail clients GitLab",{"href":387,"dataGaName":388,"dataGaLocation":40},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":390,"login":391,"suggestions":398},"Fermer",{"text":392,"link":393},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":394,"config":395},"gitlab.com",{"href":54,"dataGaName":396,"dataGaLocation":397},"search login","search",{"text":399,"default":400},"Suggestions",[401,404,409,411,416,421],{"text":69,"config":402},{"href":74,"dataGaName":403,"dataGaLocation":397},"GitLab Duo (AI)",{"text":405,"config":406},"Suggestions de code (IA)",{"href":407,"dataGaName":408,"dataGaLocation":397},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":121,"config":410},{"href":123,"dataGaName":121,"dataGaLocation":397},{"text":412,"config":413},"GitLab sur AWS",{"href":414,"dataGaName":415,"dataGaLocation":397},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":417,"config":418},"GitLab sur Google Cloud ",{"href":419,"dataGaName":420,"dataGaLocation":397},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":422,"config":423},"Pourquoi utiliser GitLab ?",{"href":82,"dataGaName":424,"dataGaLocation":397},"Why GitLab?",{"freeTrial":426,"mobileIcon":431,"desktopIcon":436},{"text":427,"config":428},"Commencer votre essai gratuit",{"href":429,"dataGaName":45,"dataGaLocation":430},"https://gitlab.com/-/trials/new/","nav",{"altText":432,"config":433},"Icône GitLab",{"src":434,"dataGaName":435,"dataGaLocation":430},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":432,"config":437},{"src":438,"dataGaName":435,"dataGaLocation":430},"/images/brand/gitlab-logo-type.svg",{"freeTrial":440,"mobileIcon":444,"desktopIcon":446},{"text":441,"config":442},"En savoir plus sur GitLab Duo",{"href":74,"dataGaName":443,"dataGaLocation":430},"gitlab duo",{"altText":432,"config":445},{"src":434,"dataGaName":435,"dataGaLocation":430},{"altText":432,"config":447},{"src":438,"dataGaName":435,"dataGaLocation":430},"content:shared:fr-fr:main-navigation.yml","Main Navigation","shared/fr-fr/main-navigation.yml","shared/fr-fr/main-navigation",{"_path":453,"_dir":34,"_draft":6,"_partial":6,"_locale":7,"title":454,"titleMobile":454,"button":455,"config":459,"_id":461,"_type":26,"_source":28,"_file":462,"_stem":463,"_extension":31},"/shared/fr-fr/banner","La plateforme GitLab Duo Agent est maintenant en bêta publique !",{"text":80,"config":456},{"href":457,"dataGaName":458,"dataGaLocation":40},"/fr-fr/gitlab-duo/agent-platform/","duo banner",{"layout":460},"release","content:shared:fr-fr:banner.yml","shared/fr-fr/banner.yml","shared/fr-fr/banner",{"_path":465,"_dir":34,"_draft":6,"_partial":6,"_locale":7,"data":466,"_id":672,"_type":26,"title":673,"_source":28,"_file":674,"_stem":675,"_extension":31},"/shared/fr-fr/main-footer",{"text":467,"source":468,"edit":474,"contribute":479,"config":484,"items":489,"minimal":663},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":469,"config":470},"Afficher le code source de la page",{"href":471,"dataGaName":472,"dataGaLocation":473},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":475,"config":476},"Modifier cette page",{"href":477,"dataGaName":478,"dataGaLocation":473},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":480,"config":481},"Veuillez contribuer",{"href":482,"dataGaName":483,"dataGaLocation":473},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":485,"facebook":486,"youtube":487,"linkedin":488},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[490,513,567,600,634],{"title":58,"links":491,"subMenu":496},[492],{"text":493,"config":494},"Plateforme DevSecOps",{"href":67,"dataGaName":495,"dataGaLocation":473},"devsecops platform",[497],{"title":201,"links":498},[499,503,508],{"text":500,"config":501},"Voir les forfaits",{"href":203,"dataGaName":502,"dataGaLocation":473},"view plans",{"text":504,"config":505},"Pourquoi choisir GitLab Premium ?",{"href":506,"dataGaName":507,"dataGaLocation":473},"/fr-fr/pricing/premium/","why premium",{"text":509,"config":510},"Pourquoi choisir GitLab Ultimate ?",{"href":511,"dataGaName":512,"dataGaLocation":473},"/fr-fr/pricing/ultimate/","why ultimate",{"title":514,"links":515},"Solutions",[516,521,524,526,531,536,540,543,546,551,553,555,557,562],{"text":517,"config":518},"Transformation digitale",{"href":519,"dataGaName":520,"dataGaLocation":473},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":147,"config":522},{"href":142,"dataGaName":523,"dataGaLocation":473},"security & compliance",{"text":134,"config":525},{"href":117,"dataGaName":118,"dataGaLocation":473},{"text":527,"config":528},"Développement agile",{"href":529,"dataGaName":530,"dataGaLocation":473},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":532,"config":533},"Transformation cloud",{"href":534,"dataGaName":535,"dataGaLocation":473},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":537,"config":538},"SCM",{"href":131,"dataGaName":539,"dataGaLocation":473},"source code management",{"text":121,"config":541},{"href":123,"dataGaName":542,"dataGaLocation":473},"continuous integration & delivery",{"text":173,"config":544},{"href":175,"dataGaName":545,"dataGaLocation":473},"value stream management",{"text":547,"config":548},"GitOps",{"href":549,"dataGaName":550,"dataGaLocation":473},"/fr-fr/solutions/gitops/","gitops",{"text":186,"config":552},{"href":188,"dataGaName":189,"dataGaLocation":473},{"text":191,"config":554},{"href":193,"dataGaName":194,"dataGaLocation":473},{"text":196,"config":556},{"href":198,"dataGaName":199,"dataGaLocation":473},{"text":558,"config":559},"Formation",{"href":560,"dataGaName":561,"dataGaLocation":473},"/fr-fr/solutions/education/","education",{"text":563,"config":564},"Services financiers",{"href":565,"dataGaName":566,"dataGaLocation":473},"/fr-fr/solutions/finance/","financial services",{"title":206,"links":568},[569,571,573,575,578,580,584,586,588,590,592,594,596,598],{"text":218,"config":570},{"href":220,"dataGaName":221,"dataGaLocation":473},{"text":223,"config":572},{"href":225,"dataGaName":226,"dataGaLocation":473},{"text":228,"config":574},{"href":230,"dataGaName":231,"dataGaLocation":473},{"text":233,"config":576},{"href":235,"dataGaName":577,"dataGaLocation":473},"docs",{"text":256,"config":579},{"href":258,"dataGaName":5},{"text":581,"config":582},"Histoires de réussite client",{"href":583,"dataGaLocation":473},"/customers/",{"text":251,"config":585},{"href":253,"dataGaName":254,"dataGaLocation":473},{"text":260,"config":587},{"href":262,"dataGaName":263,"dataGaLocation":473},{"text":273,"config":589},{"href":275,"dataGaName":276,"dataGaLocation":473},{"text":265,"config":591},{"href":267,"dataGaName":268,"dataGaLocation":473},{"text":278,"config":593},{"href":280,"dataGaName":281,"dataGaLocation":473},{"text":283,"config":595},{"href":285,"dataGaName":286,"dataGaLocation":473},{"text":288,"config":597},{"href":290,"dataGaName":291,"dataGaLocation":473},{"text":293,"config":599},{"href":295,"dataGaName":296,"dataGaLocation":473},{"title":311,"links":601},[602,604,606,608,610,612,614,618,623,625,627,629],{"text":318,"config":603},{"href":320,"dataGaName":313,"dataGaLocation":473},{"text":323,"config":605},{"href":325,"dataGaName":326,"dataGaLocation":473},{"text":331,"config":607},{"href":333,"dataGaName":334,"dataGaLocation":473},{"text":336,"config":609},{"href":338,"dataGaName":339,"dataGaLocation":473},{"text":341,"config":611},{"href":343,"dataGaName":344,"dataGaLocation":473},{"text":346,"config":613},{"href":348,"dataGaName":349,"dataGaLocation":473},{"text":615,"config":616},"Sustainability",{"href":617,"dataGaName":615,"dataGaLocation":473},"/sustainability/",{"text":619,"config":620},"Diversité, inclusion et appartenance (DIB)",{"href":621,"dataGaName":622,"dataGaLocation":473},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":351,"config":624},{"href":353,"dataGaName":354,"dataGaLocation":473},{"text":361,"config":626},{"href":363,"dataGaName":364,"dataGaLocation":473},{"text":366,"config":628},{"href":368,"dataGaName":369,"dataGaLocation":473},{"text":630,"config":631},"Déclaration de transparence sur l'esclavage moderne",{"href":632,"dataGaName":633,"dataGaLocation":473},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":371,"links":635},[636,639,641,643,648,653,658],{"text":637,"config":638},"Échanger avec un expert",{"href":49,"dataGaName":50,"dataGaLocation":473},{"text":380,"config":640},{"href":382,"dataGaName":383,"dataGaLocation":473},{"text":385,"config":642},{"href":387,"dataGaName":388,"dataGaLocation":473},{"text":644,"config":645},"Statut",{"href":646,"dataGaName":647,"dataGaLocation":473},"https://status.gitlab.com/","status",{"text":649,"config":650},"Conditions d'utilisation",{"href":651,"dataGaName":652},"/terms/","terms of use",{"text":654,"config":655},"Déclaration de confidentialité",{"href":656,"dataGaName":657,"dataGaLocation":473},"/fr-fr/privacy/","privacy statement",{"text":659,"config":660},"Préférences en matière de cookies",{"dataGaName":661,"dataGaLocation":473,"id":662,"isOneTrustButton":103},"cookie preferences","ot-sdk-btn",{"items":664},[665,667,670],{"text":649,"config":666},{"href":651,"dataGaName":652,"dataGaLocation":473},{"text":668,"config":669},"Politique de confidentialité",{"href":656,"dataGaName":657,"dataGaLocation":473},{"text":659,"config":671},{"dataGaName":661,"dataGaLocation":473,"id":662,"isOneTrustButton":103},"content:shared:fr-fr:main-footer.yml","Main Footer","shared/fr-fr/main-footer.yml","shared/fr-fr/main-footer",[677],{"_path":678,"_dir":679,"_draft":6,"_partial":6,"_locale":7,"content":680,"config":684,"_id":686,"_type":26,"title":13,"_source":28,"_file":687,"_stem":688,"_extension":31},"/en-us/blog/authors/dmitry-gruzd","authors",{"name":13,"config":681},{"headshot":682,"ctfId":683},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682014/Blog/Author%20Headshots/dgruzd-headshot.jpg","dgruzd",{"template":685},"BlogAuthor","content:en-us:blog:authors:dmitry-gruzd.yml","en-us/blog/authors/dmitry-gruzd.yml","en-us/blog/authors/dmitry-gruzd",{"_path":690,"_dir":34,"_draft":6,"_partial":6,"_locale":7,"header":691,"eyebrow":692,"blurb":693,"button":694,"secondaryButton":698,"_id":700,"_type":26,"title":701,"_source":28,"_file":702,"_stem":703,"_extension":31},"/shared/fr-fr/next-steps","Commencez à livrer des logiciels de meilleurs qualité plus rapidement","Plus de 50 % des entreprises du classement Fortune 100 font confiance à GitLab","Découvrez comment la plateforme DevSecOps intelligente\n\n\npeut aider votre équipe.\n",{"text":42,"config":695},{"href":696,"dataGaName":45,"dataGaLocation":697},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":47,"config":699},{"href":49,"dataGaName":50,"dataGaLocation":697},"content:shared:fr-fr:next-steps.yml","Next Steps","shared/fr-fr/next-steps.yml","shared/fr-fr/next-steps",1753283793286]