[{"data":1,"prerenderedAt":2149},["ShallowReactive",2],{"/fr-fr/blog/git-clone-override-policy":3,"navigation-fr-fr":1396,"banner-fr-fr":1832,"footer-fr-fr":1839,"blog-post-authors-fr-fr-Darwin Sanoy":2088,"blog-related-posts-fr-fr-git-clone-override-policy":2105,"blog-share-wrapper-fr-fr":2130,"next-steps-fr-fr":2140},{"id":4,"title":5,"authors":6,"body":8,"category":1376,"date":1377,"description":1378,"extension":1379,"externalUrl":1380,"faq":1380,"featured":715,"heroImage":1381,"meta":1382,"navigation":715,"path":1383,"seo":1384,"slug":1389,"stem":1390,"tags":1391,"template":1394,"updatedDate":1380,"__hash__":1395},"blogPosts/fr-fr/blog/git-clone-override-policy.md","Évitez les coûts associés au clonage complet par défaut de l'historique",[7],"Darwin Sanoy",{"type":9,"value":10,"toc":1364},"minimark",[11,20,31,42,57,60,63,68,71,138,142,145,175,178,182,185,193,196,255,260,368,375,422,427,446,461,464,469,492,495,500,615,618,623,637,644,648,651,657,661,668,674,690,693,696,1101,1105,1114,1147,1150,1154,1228,1241,1245,1248,1301,1313,1317,1328,1332,1335,1350,1360],[12,13,14,15,19],"p",{},"Il est tentant de considérer ",[16,17,18],"code",{},"git clone"," comme une opération côté client, mais les paramètres de cette opération ont un impact sur le serveur et sur tous les réseaux intermédiaires. Lorsque vous effectuez un clonage complet par défaut de l'historique, le serveur doit parcourir l'intégralité de l'historique, générer un fichier d'empaquetage (c'est ce que fait réellement le message « counting objects »), puis le transmettre par le réseau. Le client décompresse ensuite l'ensemble et extrait un arbre de travail complet. Chaque couche (CPU client, réseau, puissance de calcul du serveur Git pour la création du fichier d'empaquetage et disque) subit les conséquences de la taille de cette requête. Il vous suffit de réduire la taille de la requête pour alléger immédiatement les coûts liés à la pile, et pas seulement ceux de votre ordinateur portable.",[12,21,22,23,30],{},"L'",[24,25,29],"a",{"href":26,"rel":27,"title":28},"https://about.gitlab.com/fr-fr/topics/agentic-ai/",[],"Qu'est-ce que l'IA agentique ?","IA agentique"," accentue cette pression d'une manière que les workflows habituels des équipes de développement ne permettent pas. Un agent effectuant des opérations sur un dépôt peut effectuer des clonages bien plus fréquemment, et de façon bien moins prévisible, qu'un être humain. Si le comportement par défaut est un clonage complet de l'historique, vous payez désormais ce coût à l'échelle de l'agent.",[12,32,33,34,37,38,41],{},"GitLab travaille activement sur le backend pour accélérer le traitement des grands dépôts. Mais vous pouvez également modifier vos requêtes. Des options telles que les clonages superficiels (",[16,35,36],{},"--depth=1","), les clonages sur une seule branche et les clonages partiels (",[16,39,40],{},"--filter=blob:none",") vous permettent de ne récupérer que ce dont un job a réellement besoin. Une requête plus précise réduit immédiatement les pics de charge, l'instabilité, le temps d'attente et les coûts. Et chaque amélioration future du backend vient s'ajouter à ces requêtes allégées.",[12,43,44,45,50,51,56],{},"Dans un article dédié à ",[24,46,49],{"href":47,"rel":48},"https://about.gitlab.com/fr-fr/blog/supercharge-your-git-workflows/",[],"l'optimisation des workflows Git",", nous avons expliqué comment ",[24,52,55],{"href":53,"rel":54},"https://gitlab.com/gitlab-accelerates-embedded/git-clone-perf/git-much-faster",[],"Git Much Faster"," évalue les paramètres qui permettent de réduire les temps de clonage jusqu'à 93 % et l'utilisation du disque jusqu'à 98 % : désactivation de la compression, augmentation de la taille du tampon HTTP, clonages superficiels et partiels, et extraction clairsemée (sparse checkout) qui ignore les binaires. Ces résultats sont impressionnants, mais il y a toutefois un bémol : chaque endroit qui clone le dépôt doit être méticuleusement mis à jour avec de nombreuses lignes de code d'optimisation. L'ordinateur portable d'un développeur, un job CI, un agent démarrant un environnement sandbox : autant d'occasions d'oublier cette mise à jour.",[12,58,59],{},"Ce n'est pas de l'automatisation : c'est un pari sur la bonne volonté de chacun.",[12,61,62],{},"Dans cet article, vous apprendrez comment mettre en œuvre Git Clone Override Policy pour appliquer automatiquement les optimisations de clonage du dépôt et minimiser les coûts.",[64,65,67],"h2",{"id":66},"les-domaines-où-le-coût-du-clonage-explose","Les domaines où le coût du clonage explose",[12,69,70],{},"L'IA agentique exerce une pression qui ne cesse d'augmenter. Cependant, il ne s'agit pas du seul domaine où le clonage par défaut de l'historique complet coûte cher à l'industrie du développement logiciel :",[72,73,74,82,88,101,113,126,132],"ul",{},[75,76,77,81],"li",{},[78,79,80],"strong",{},"Monorepos :"," le regroupement de nombreux projets dans un seul dépôt signifie que chaque clonage récupère bien plus de données que ce dont une équipe a réellement besoin.",[75,83,84,87],{},[78,85,86],{},"Historique Git complexe et de longue durée :"," des années de commits alourdissent la taille totale du dépôt, même lorsque l'arbre actuel est modeste.",[75,89,90,93,94,100],{},[78,91,92],{},"Fichiers multimédias, binaires et projets intégrés :"," les images de micrologiciel, les kits de développement logiciel (SDK) fournisseurs et les ressources graphiques stockées directement dans le système de ",[24,95,99],{"href":96,"rel":97,"title":98},"https://about.gitlab.com/fr-fr/topics/version-control/",[],"Qu'est-ce que le contrôle de version ?","contrôle de version"," font gonfler un dépôt d'une manière que le code source seul ne pourrait jamais faire.",[75,102,103,112],{},[78,104,105,111],{},[24,106,110],{"href":107,"rel":108,"title":109},"https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/",[],"Qu'est-ce qu'un pipeline CI/CD ?","Pipelines CI/CD"," :"," un clonage complet à chaque job, exécuté des milliers de fois par jour, transforme une petite inefficacité par clonage en une inefficacité récurrente importante.",[75,114,115,118,119,125],{},[78,116,117],{},"Jeux de données pour la science des données et le machine learning :"," les fichiers de données volumineux suivis dans ",[24,120,124],{"href":121,"rel":122,"title":123},"https://about.gitlab.com/fr-fr/blog/what-is-git/",[],"Qu'est-ce que Git ?","Git"," doivent faire face au même problème de taille que n'importe quel autre blob surdimensionné.",[75,127,128,131],{},[78,129,130],{},"Environnements de développement à distance :"," les environnements de développement hébergés dans le cloud ou éphémères nécessitent un démarrage rapide et léger, mais reproduisent par défaut l'intégralité du dépôt.",[75,133,134,137],{},[78,135,136],{},"IA agentique :"," les requêtes de clonage sont beaucoup plus nombreuses, mais bien moins prévisibles que les workflows pilotés par un humain.",[64,139,141],{"id":140},"quand-loptimisation-est-impossible-à-ignorer","Quand l'optimisation est impossible à ignorer",[12,143,144],{},"La solution n'est pas de rédiger un meilleur fichier README indiquant quelles options utiliser, mais la suppression du processus de décision : il s'agit d'intégrer la politique dans le dépôt lui-même, sous forme de code, et de laisser un petit programme l'appliquer.",[12,146,147,148,153,154,157,158,162,163,166,167,170,171,174],{},"C'est exactement ce que fait ",[24,149,152],{"href":150,"rel":151},"https://gitlab.com/gitlab-accelerates-embedded/git-clone-perf/git-clone-override-policy",[],"Git Clone Override Policy",". Il vous suffit de déposer un fichier ",[16,155,156],{},".afullhistorycloneoverridepolicy.toml"," dans un dépôt, et un binaire Go léger intercepte ",[159,160,161],"em",{},"uniquement"," un ",[16,164,165],{},"git clone URL"," « nu », soit la requête simple, par défaut, avec l'historique complet. Dès que vous ajoutez vous-même une option (",[16,168,169],{},"--depth 1",", ",[16,172,173],{},"--filter",", ou autre), le binaire considère que vous procédez déjà à une optimisation et transmet votre commande telle quelle, sans la modifier. Aucun fichier de politique dans le dépôt ? Même processus : vous passez directement à un clonage normal. Le seul cas où le binaire intervient est celui que tout le monde s'accorde à considérer comme une erreur : la requête par défaut non qualifiée.",[12,176,177],{},"Lorsqu'il intervient, le binaire récupère le fichier de politique, puis exécute un processus fixe en 13 étapes qui effectue un clonage superficiel et partiel du dépôt, configure l'extraction clairsemée pour ignorer les fichiers binaires (images, archives, fichiers multimédias, polices, etc.) et applique la même configuration Git optimisée que celle décrite dans Git Much Faster, avant qu'une seule ligne de code source n'apparaisse sur le disque.",[64,179,181],{"id":180},"aperçu-dune-optimisation-maximale","Aperçu d'une optimisation maximale",[12,183,184],{},"Examinons les commandes nécessaires pour optimiser au maximum un clonage Git.",[12,186,187],{},[78,188,189,190,192],{},"1. Construisez vous-même le shell du dépôt, au lieu d'utiliser ",[16,191,18],{},".",[12,194,195],{},"Vous pourrez ainsi définir un large éventail de paramètres de configuration Git qui déterminent la portée des fichiers lors de la première requête de clonage.",[197,198,203],"pre",{"className":199,"code":200,"language":201,"meta":202,"style":202},"language-shell shiki shiki-themes github-light","mkdir my-repo && cd my-repo\ngit init\ngit remote add origin https://example.com/group/my-repo.git\n","shell","",[16,204,205,229,238],{"__ignoreMap":202},[206,207,210,214,218,222,226],"span",{"class":208,"line":209},"line",1,[206,211,213],{"class":212},"s7eDp","mkdir",[206,215,217],{"class":216},"sYBdl"," my-repo",[206,219,221],{"class":220},"sgsFI"," && ",[206,223,225],{"class":224},"sYu0t","cd",[206,227,228],{"class":216}," my-repo\n",[206,230,232,235],{"class":208,"line":231},2,[206,233,234],{"class":212},"git",[206,236,237],{"class":216}," init\n",[206,239,241,243,246,249,252],{"class":208,"line":240},3,[206,242,234],{"class":212},[206,244,245],{"class":216}," remote",[206,247,248],{"class":216}," add",[206,250,251],{"class":216}," origin",[206,253,254],{"class":216}," https://example.com/group/my-repo.git\n",[12,256,257],{},[78,258,259],{},"2. Ajustez la configuration Git pour les transferts volumineux, limitée à ce dépôt.",[197,261,263],{"className":199,"code":262,"language":201,"meta":202,"style":202},"git config --local core.compression 0\ngit config --local http.postBuffer 1024M\ngit config --local http.lowSpeedLimit 1000\ngit config --local http.lowSpeedTime 300\ngit config --local pack.windowMemory 256m\ngit config --local pack.packSizeLimit 256m\ngit config --local pack.threads 4\n",[16,264,265,281,295,309,324,339,353],{"__ignoreMap":202},[206,266,267,269,272,275,278],{"class":208,"line":209},[206,268,234],{"class":212},[206,270,271],{"class":216}," config",[206,273,274],{"class":224}," --local",[206,276,277],{"class":216}," core.compression",[206,279,280],{"class":224}," 0\n",[206,282,283,285,287,289,292],{"class":208,"line":231},[206,284,234],{"class":212},[206,286,271],{"class":216},[206,288,274],{"class":224},[206,290,291],{"class":216}," http.postBuffer",[206,293,294],{"class":216}," 1024M\n",[206,296,297,299,301,303,306],{"class":208,"line":240},[206,298,234],{"class":212},[206,300,271],{"class":216},[206,302,274],{"class":224},[206,304,305],{"class":216}," http.lowSpeedLimit",[206,307,308],{"class":224}," 1000\n",[206,310,312,314,316,318,321],{"class":208,"line":311},4,[206,313,234],{"class":212},[206,315,271],{"class":216},[206,317,274],{"class":224},[206,319,320],{"class":216}," http.lowSpeedTime",[206,322,323],{"class":224}," 300\n",[206,325,327,329,331,333,336],{"class":208,"line":326},5,[206,328,234],{"class":212},[206,330,271],{"class":216},[206,332,274],{"class":224},[206,334,335],{"class":216}," pack.windowMemory",[206,337,338],{"class":216}," 256m\n",[206,340,342,344,346,348,351],{"class":208,"line":341},6,[206,343,234],{"class":212},[206,345,271],{"class":216},[206,347,274],{"class":224},[206,349,350],{"class":216}," pack.packSizeLimit",[206,352,338],{"class":216},[206,354,356,358,360,362,365],{"class":208,"line":355},7,[206,357,234],{"class":212},[206,359,271],{"class":216},[206,361,274],{"class":224},[206,363,364],{"class":216}," pack.threads",[206,366,367],{"class":224}," 4\n",[12,369,370],{},[78,371,372,373,192],{},"3. Activez le clonage partiel, puisque vous vous apprêtez à effectuer une récupération avec ",[16,374,173],{},[197,376,378],{"className":199,"code":377,"language":201,"meta":202,"style":202},"git config --local extensions.partialClone origin\ngit config --local remote.origin.promisor true\ngit config --local remote.origin.partialclonefilter blob:none\n",[16,379,380,394,408],{"__ignoreMap":202},[206,381,382,384,386,388,391],{"class":208,"line":209},[206,383,234],{"class":212},[206,385,271],{"class":216},[206,387,274],{"class":224},[206,389,390],{"class":216}," extensions.partialClone",[206,392,393],{"class":216}," origin\n",[206,395,396,398,400,402,405],{"class":208,"line":231},[206,397,234],{"class":212},[206,399,271],{"class":216},[206,401,274],{"class":224},[206,403,404],{"class":216}," remote.origin.promisor",[206,406,407],{"class":224}," true\n",[206,409,410,412,414,416,419],{"class":208,"line":240},[206,411,234],{"class":212},[206,413,271],{"class":216},[206,415,274],{"class":224},[206,417,418],{"class":216}," remote.origin.partialclonefilter",[206,420,421],{"class":216}," blob:none\n",[12,423,424],{},[78,425,426],{},"4. Limitez la spécification de référence de récupération à la seule référence dont vous avez besoin, au lieu de toutes les branches du dépôt distant.",[197,428,430],{"className":199,"code":429,"language":201,"meta":202,"style":202},"git config --local remote.origin.fetch \"+refs/heads/main:refs/remotes/origin/main\"\n",[16,431,432],{"__ignoreMap":202},[206,433,434,436,438,440,443],{"class":208,"line":209},[206,435,234],{"class":212},[206,437,271],{"class":216},[206,439,274],{"class":224},[206,441,442],{"class":216}," remote.origin.fetch",[206,444,445],{"class":216}," \"+refs/heads/main:refs/remotes/origin/main\"\n",[12,447,448,449,452,453,456,457,460],{},"Sans cette mise à jour, ",[16,450,451],{},"remote.origin.fetch"," est automatiquement défini sur ",[16,454,455],{},"+refs/heads/*:refs/remotes/origin/*",", ce qui signifie que chaque opération de récupération (ainsi que le clonage initial) récupère les pointeurs de référence de toutes les branches du dépôt distant. Cette modification nous permet de restreindre les opérations de récupération à la seule branche ",[16,458,459],{},"main",", de sorte que Git ne suivra plus ni ne mettra à jour les références des autres branches du dépôt distant.",[12,462,463],{},"Il y a moins de références à traiter et à mettre à jour, ce qui réduit la surcharge par opération de récupération, en particulier sur les dépôts comportant des centaines de branches.",[12,465,466],{},[78,467,468],{},"5. Effectuez une récupération superficielle, avec le contenu des blobs différé.",[197,470,472],{"className":199,"code":471,"language":201,"meta":202,"style":202},"git fetch --depth=1 --filter=blob:none origin main\n",[16,473,474],{"__ignoreMap":202},[206,475,476,478,481,484,487,489],{"class":208,"line":209},[206,477,234],{"class":212},[206,479,480],{"class":216}," fetch",[206,482,483],{"class":224}," --depth=1",[206,485,486],{"class":224}," --filter=blob:none",[206,488,251],{"class":216},[206,490,491],{"class":216}," main\n",[12,493,494],{},"Cette combinaison de profondeur et de filtre vous permet d'obtenir le transfert initial le plus petit possible : la structure de l'arborescence correspondant à un seul commit, sans aucune donnée de blob jusqu'à l'extraction des fichiers. Ce scénario est particulièrement utile lorsque vous travaillez sur des dépôts contenant des fichiers volumineux ou un historique important.",[12,496,497],{},[78,498,499],{},"6. Activez l'extraction clairsemée et excluez tous les types de fichiers binaires dont vous n'avez pas besoin pour votre travail.",[197,501,503],{"className":199,"code":502,"language":201,"meta":202,"style":202},"git sparse-checkout init --cone\ncat >> .git/info/sparse-checkout \u003C\u003C'EOF'\n/*\n!*.png\n!*.PNG\n!*.jpg\n!*.JPG\n!*.pdf\n!*.PDF\n!*.zip\n!*.ZIP\n!*.mp4\n!*.MP4\n!*.exe\n!*.EXE\nEOF\n",[16,504,505,518,536,541,546,551,556,561,567,573,579,585,591,597,603,609],{"__ignoreMap":202},[206,506,507,509,512,515],{"class":208,"line":209},[206,508,234],{"class":212},[206,510,511],{"class":216}," sparse-checkout",[206,513,514],{"class":216}," init",[206,516,517],{"class":224}," --cone\n",[206,519,520,523,527,530,533],{"class":208,"line":231},[206,521,522],{"class":212},"cat",[206,524,526],{"class":525},"sD7c4"," >>",[206,528,529],{"class":216}," .git/info/sparse-checkout",[206,531,532],{"class":525}," \u003C\u003C",[206,534,535],{"class":216},"'EOF'\n",[206,537,538],{"class":208,"line":240},[206,539,540],{"class":216},"/*\n",[206,542,543],{"class":208,"line":311},[206,544,545],{"class":216},"!*.png\n",[206,547,548],{"class":208,"line":326},[206,549,550],{"class":216},"!*.PNG\n",[206,552,553],{"class":208,"line":341},[206,554,555],{"class":216},"!*.jpg\n",[206,557,558],{"class":208,"line":355},[206,559,560],{"class":216},"!*.JPG\n",[206,562,564],{"class":208,"line":563},8,[206,565,566],{"class":216},"!*.pdf\n",[206,568,570],{"class":208,"line":569},9,[206,571,572],{"class":216},"!*.PDF\n",[206,574,576],{"class":208,"line":575},10,[206,577,578],{"class":216},"!*.zip\n",[206,580,582],{"class":208,"line":581},11,[206,583,584],{"class":216},"!*.ZIP\n",[206,586,588],{"class":208,"line":587},12,[206,589,590],{"class":216},"!*.mp4\n",[206,592,594],{"class":208,"line":593},13,[206,595,596],{"class":216},"!*.MP4\n",[206,598,600],{"class":208,"line":599},14,[206,601,602],{"class":216},"!*.exe\n",[206,604,606],{"class":208,"line":605},15,[206,607,608],{"class":216},"!*.EXE\n",[206,610,612],{"class":208,"line":611},16,[206,613,614],{"class":216},"EOF\n",[12,616,617],{},"La politique réelle exclut plus de 30 extensions couvrant les images, les documents, les archives, les fichiers multimédias, les binaires compilés et les fichiers de conception, dans les deux cas. Il ne s'agit ici que d'un échantillon représentatif.",[12,619,620],{},[78,621,622],{},"7. Consultez la référence.",[197,624,626],{"className":199,"code":625,"language":201,"meta":202,"style":202},"git checkout main\n",[16,627,628],{"__ignoreMap":202},[206,629,630,632,635],{"class":208,"line":209},[206,631,234],{"class":212},[206,633,634],{"class":216}," checkout",[206,636,491],{"class":216},[12,638,639,640,643],{},"Si vous suivez ces sept étapes, dans cet ordre exact, sur ",[16,641,642],{},"www.gitlab.com",", vous obtiendrez 110 Mo au lieu de 9,5 Go. Si vous ne suivez pas l'ordre indiqué (et effectuez la récupération avant de restreindre la spécification de référence, ainsi que l'extraction clairsemée après l'extraction des fichiers plutôt qu'avant), vous aurez au mieux gaspillé l'optimisation ; au pire, vous aurez récupéré exactement ce que vous cherchiez à éviter. Cette précision, qui doit être répétée correctement à chaque clonage, par chaque personne et chaque pipeline, est exactement le problème de discipline évoqué dans l'introduction de cet article. Git Clone Override Policy n'invente pas de nouvelle technique. Elle garantit simplement que ces sept étapes s'exécutent, dans l'ordre et à chaque fois, sans que personne n'ait besoin de s'en souvenir.",[64,645,647],{"id":646},"lautomatisation-à-la-rescousse","L'automatisation à la rescousse",[12,649,650],{},"L'utilisation du client Git est à la fois très répandue et distribuée. Propager un ensemble précis et spécifique de commandes d'optimisation de clonage pour qu'elles soient exécutées par des humains ou codées en dur dans chaque job CI et environnement sandbox d'agent nécessite une automatisation pour garantir sa fiabilité.",[12,652,653,654,656],{},"Et si nous pouvions appliquer ce workflow à l'aide de politiques automatisées, plutôt que de parier sur le fait que chaque développeur se souvienne des sept étapes ? Il s'avère qu'il existe déjà une solution minimale viable fonctionnelle répondant exactement à ce besoin : un fichier de politique TOML qui réside dans le dépôt aux côtés du code, ainsi qu'un client capable d'intercepter chaque appel ",[16,655,18],{}," avant qu'il n'atteigne le réseau. Il vous suffit d'enregistrer la politique une seule fois, et chaque clonage (humain, job CI ou agent) obtient automatiquement la séquence optimisée, sans avoir à la demander. L'utilisation d'un fichier de paramètres de politique permet également d'effectuer les ajustements qui seront nécessaires selon les usages. La configuration par défaut ci-dessus est destinée à compter des lignes de code, nous avons donc simplement besoin d'une copie fiable de tous les fichiers texte existants. La construction du même logiciel pourrait nécessiter davantage de fichiers, car certains éléments graphiques sont intégrés dans l'interface utilisateur de l'application, ou certains builds pourraient nécessiter davantage d'informations sur l'historique Git pour localiser les messages de commit dans les notes de release.",[64,658,660],{"id":659},"un-petit-binaire-go-portable-et-un-fichier-de-configuration-de-politique-stocké-dans-le-dépôt","Un petit binaire Go portable et un fichier de configuration de politique stocké dans le dépôt",[12,662,663,664,667],{},"L'intercepteur lui-même est un binaire Go autonome, et non un script shell maintenu à grand renfort de ",[16,665,666],{},"sed",". Ce choix offre plusieurs avantages notables.",[12,669,670],{},[671,672],"img",{"alt":660,"src":673},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1787080260/bhz0beczhkffzdweghma.png",[12,675,676,677,683,684,686,687,192],{},"Il fonctionne sous Linux, macOS et Windows, aussi bien sur amd64 que sur arm64 : un seul code source au lieu d'une version bash et d'une version PowerShell séparées qui divergent. Il a été testé sur tous les shells que vous êtes susceptible de rencontrer, de CMD et PowerShell à ",[24,678,682],{"href":679,"rel":680,"title":681},"https://about.gitlab.com/fr-fr/blog/git-bash/",[],"Qu'est-ce que Git Bash ?","Git Bash"," et WSL. La seule dépendance d'exécution est un véritable binaire ",[16,685,234],{}," déjà présent dans le ",[16,688,689],{},"PATH",[12,691,692],{},"En interne, il est organisé en six petits modules qui peuvent être testés de manière indépendante (analyse syntaxique de la politique, interpréteur à séquence fixe, exécution des commandes Git, journalisation, détection multiplateforme et point d'entrée gérant les quatre modes d'invocation), plutôt qu'une seule grande fonction effectuant tout cela à la fois.",[12,694,695],{},"Cet exemple de fichier de configuration donne un aperçu des paramètres qui peuvent actuellement être ajustés.",[197,697,701],{"className":698,"code":699,"language":700,"meta":202,"style":202},"language-toml shiki shiki-themes github-light","schema_version = 2\n\n[policyinfo]\ndescription = \"The most optimal latest-code-only clone for AI agents (that do not need git history) or counting lines of code.\"\nOptimalForAIAgents = true\n\n[git_config]\n\"core.compression\"   = 0\n\"http.postBuffer\"    = \"1024M\"\n\"http.lowSpeedLimit\" = 1000\n\"http.lowSpeedTime\"  = 300\n\"pack.windowMemory\"  = \"256m\"\n\"pack.packSizeLimit\" = \"256m\"\n\"pack.threads\"       = 4\n\n[fetch]\nflags = [\"--depth=1\", \"--filter=blob:none\"]\n\n[sparse_checkout]\nenabled  = true\n# conemode 'auto' is processed by the solution code to be either 'cone' or 'no-cone' when passed to git\nconemode = \"auto\"\nincludes = [\"/*\"]\nexcludes = []\nexclude_extensions = [\n  \"png\", \"jpg\", \"jpeg\", \"gif\", \"svg\", \"ico\", \"webp\",\n  \"pdf\", \"doc\", \"docx\", \"xls\", \"xlsx\", \"ppt\", \"pptx\",\n  \"zip\", \"tar\", \"gz\", \"jar\",\n  \"mp4\", \"mp3\", \"mov\",\n  \"exe\", \"dll\", \"so\", \"woff\", \"woff2\",\n  \"ttf\", \"otf\", \"psd\", \"sketch\", \"fig\", \"dmg\", \"eps\",\n]\ncase_variants = \"both\"\n","toml",[16,702,703,711,717,728,736,744,748,757,765,773,781,789,797,804,812,816,825,841,846,856,864,871,880,891,897,903,942,980,1003,1021,1049,1087,1092],{"__ignoreMap":202},[206,704,705,708],{"class":208,"line":209},[206,706,707],{"class":220},"schema_version = ",[206,709,710],{"class":224},"2\n",[206,712,713],{"class":208,"line":231},[206,714,716],{"emptyLinePlaceholder":715},true,"\n",[206,718,719,722,725],{"class":208,"line":240},[206,720,721],{"class":220},"[",[206,723,724],{"class":212},"policyinfo",[206,726,727],{"class":220},"]\n",[206,729,730,733],{"class":208,"line":311},[206,731,732],{"class":220},"description = ",[206,734,735],{"class":216},"\"The most optimal latest-code-only clone for AI agents (that do not need git history) or counting lines of code.\"\n",[206,737,738,741],{"class":208,"line":326},[206,739,740],{"class":220},"OptimalForAIAgents = ",[206,742,743],{"class":224},"true\n",[206,745,746],{"class":208,"line":341},[206,747,716],{"emptyLinePlaceholder":715},[206,749,750,752,755],{"class":208,"line":355},[206,751,721],{"class":220},[206,753,754],{"class":212},"git_config",[206,756,727],{"class":220},[206,758,759,762],{"class":208,"line":563},[206,760,761],{"class":220},"\"core.compression\"   = ",[206,763,764],{"class":224},"0\n",[206,766,767,770],{"class":208,"line":569},[206,768,769],{"class":220},"\"http.postBuffer\"    = ",[206,771,772],{"class":216},"\"1024M\"\n",[206,774,775,778],{"class":208,"line":575},[206,776,777],{"class":220},"\"http.lowSpeedLimit\" = ",[206,779,780],{"class":224},"1000\n",[206,782,783,786],{"class":208,"line":581},[206,784,785],{"class":220},"\"http.lowSpeedTime\"  = ",[206,787,788],{"class":224},"300\n",[206,790,791,794],{"class":208,"line":587},[206,792,793],{"class":220},"\"pack.windowMemory\"  = ",[206,795,796],{"class":216},"\"256m\"\n",[206,798,799,802],{"class":208,"line":593},[206,800,801],{"class":220},"\"pack.packSizeLimit\" = ",[206,803,796],{"class":216},[206,805,806,809],{"class":208,"line":599},[206,807,808],{"class":220},"\"pack.threads\"       = ",[206,810,811],{"class":224},"4\n",[206,813,814],{"class":208,"line":605},[206,815,716],{"emptyLinePlaceholder":715},[206,817,818,820,823],{"class":208,"line":611},[206,819,721],{"class":220},[206,821,822],{"class":212},"fetch",[206,824,727],{"class":220},[206,826,828,831,834,836,839],{"class":208,"line":827},17,[206,829,830],{"class":220},"flags = [",[206,832,833],{"class":216},"\"--depth=1\"",[206,835,170],{"class":220},[206,837,838],{"class":216},"\"--filter=blob:none\"",[206,840,727],{"class":220},[206,842,844],{"class":208,"line":843},18,[206,845,716],{"emptyLinePlaceholder":715},[206,847,849,851,854],{"class":208,"line":848},19,[206,850,721],{"class":220},[206,852,853],{"class":212},"sparse_checkout",[206,855,727],{"class":220},[206,857,859,862],{"class":208,"line":858},20,[206,860,861],{"class":220},"enabled  = ",[206,863,743],{"class":224},[206,865,867],{"class":208,"line":866},21,[206,868,870],{"class":869},"sAwPA","# conemode 'auto' is processed by the solution code to be either 'cone' or 'no-cone' when passed to git\n",[206,872,874,877],{"class":208,"line":873},22,[206,875,876],{"class":220},"conemode = ",[206,878,879],{"class":216},"\"auto\"\n",[206,881,883,886,889],{"class":208,"line":882},23,[206,884,885],{"class":220},"includes = [",[206,887,888],{"class":216},"\"/*\"",[206,890,727],{"class":220},[206,892,894],{"class":208,"line":893},24,[206,895,896],{"class":220},"excludes = []\n",[206,898,900],{"class":208,"line":899},25,[206,901,902],{"class":220},"exclude_extensions = [\n",[206,904,906,909,911,914,916,919,921,924,926,929,931,934,936,939],{"class":208,"line":905},26,[206,907,908],{"class":216},"  \"png\"",[206,910,170],{"class":220},[206,912,913],{"class":216},"\"jpg\"",[206,915,170],{"class":220},[206,917,918],{"class":216},"\"jpeg\"",[206,920,170],{"class":220},[206,922,923],{"class":216},"\"gif\"",[206,925,170],{"class":220},[206,927,928],{"class":216},"\"svg\"",[206,930,170],{"class":220},[206,932,933],{"class":216},"\"ico\"",[206,935,170],{"class":220},[206,937,938],{"class":216},"\"webp\"",[206,940,941],{"class":220},",\n",[206,943,945,948,950,953,955,958,960,963,965,968,970,973,975,978],{"class":208,"line":944},27,[206,946,947],{"class":216},"  \"pdf\"",[206,949,170],{"class":220},[206,951,952],{"class":216},"\"doc\"",[206,954,170],{"class":220},[206,956,957],{"class":216},"\"docx\"",[206,959,170],{"class":220},[206,961,962],{"class":216},"\"xls\"",[206,964,170],{"class":220},[206,966,967],{"class":216},"\"xlsx\"",[206,969,170],{"class":220},[206,971,972],{"class":216},"\"ppt\"",[206,974,170],{"class":220},[206,976,977],{"class":216},"\"pptx\"",[206,979,941],{"class":220},[206,981,983,986,988,991,993,996,998,1001],{"class":208,"line":982},28,[206,984,985],{"class":216},"  \"zip\"",[206,987,170],{"class":220},[206,989,990],{"class":216},"\"tar\"",[206,992,170],{"class":220},[206,994,995],{"class":216},"\"gz\"",[206,997,170],{"class":220},[206,999,1000],{"class":216},"\"jar\"",[206,1002,941],{"class":220},[206,1004,1006,1009,1011,1014,1016,1019],{"class":208,"line":1005},29,[206,1007,1008],{"class":216},"  \"mp4\"",[206,1010,170],{"class":220},[206,1012,1013],{"class":216},"\"mp3\"",[206,1015,170],{"class":220},[206,1017,1018],{"class":216},"\"mov\"",[206,1020,941],{"class":220},[206,1022,1024,1027,1029,1032,1034,1037,1039,1042,1044,1047],{"class":208,"line":1023},30,[206,1025,1026],{"class":216},"  \"exe\"",[206,1028,170],{"class":220},[206,1030,1031],{"class":216},"\"dll\"",[206,1033,170],{"class":220},[206,1035,1036],{"class":216},"\"so\"",[206,1038,170],{"class":220},[206,1040,1041],{"class":216},"\"woff\"",[206,1043,170],{"class":220},[206,1045,1046],{"class":216},"\"woff2\"",[206,1048,941],{"class":220},[206,1050,1052,1055,1057,1060,1062,1065,1067,1070,1072,1075,1077,1080,1082,1085],{"class":208,"line":1051},31,[206,1053,1054],{"class":216},"  \"ttf\"",[206,1056,170],{"class":220},[206,1058,1059],{"class":216},"\"otf\"",[206,1061,170],{"class":220},[206,1063,1064],{"class":216},"\"psd\"",[206,1066,170],{"class":220},[206,1068,1069],{"class":216},"\"sketch\"",[206,1071,170],{"class":220},[206,1073,1074],{"class":216},"\"fig\"",[206,1076,170],{"class":220},[206,1078,1079],{"class":216},"\"dmg\"",[206,1081,170],{"class":220},[206,1083,1084],{"class":216},"\"eps\"",[206,1086,941],{"class":220},[206,1088,1090],{"class":208,"line":1089},32,[206,1091,727],{"class":220},[206,1093,1095,1098],{"class":208,"line":1094},33,[206,1096,1097],{"class":220},"case_variants = ",[206,1099,1100],{"class":216},"\"both\"\n",[64,1102,1104],{"id":1103},"la-configuration-déclarative-plutôt-que-le-code","La configuration déclarative plutôt que le code",[12,1106,22,1107,1113],{},[24,1108,1112],{"href":1109,"rel":1110,"title":1111},"https://about.gitlab.com/fr-fr/topics/gitops/infrastructure-as-code/",[],"Qu'est-ce que l'Infrastructure as Code ?","Infrastructure as Code"," permet de réduire efficacement la complexité et d'améliorer la standardisation ainsi que la sécurité en condensant ce qui est habituellement un ensemble disparate de code en un fichier de configuration déclaratif et un moteur qui le traite. Ce modèle très efficace est reproduit ici pour tous ses avantages, notamment :",[72,1115,1116,1119,1122,1125,1128,1138,1141,1144],{},[75,1117,1118],{},"La standardisation des processus peu répandus (commandes Git exceptionnellement détaillées)",[75,1120,1121],{},"La réduction de la complexité",[75,1123,1124],{},"L'adoption facile par le code de clonage spécialisé existant (par exemple, les « clonages » VS Code qui n'utilisent pas le binaire Git)",[75,1126,1127],{},"La réduction des bogues et des cas limites (par rapport à ce que chacun élabore de son côté)",[75,1129,1130,1131,1137],{},"La cohérence de l'implémentation selon les contextes (clonages CI, ",[24,1132,1136],{"href":1133,"rel":1134,"title":1135},"https://about.gitlab.com/fr-fr/blog/what-is-an-ide/",[],"Qu'est-ce qu'un IDE ?","IDE"," des équipes de développement, environnements sandbox d'IA)",[75,1139,1140],{},"L'amélioration de l'auditabilité",[75,1142,1143],{},"La génération et la manipulation de fichiers de configuration par d'autres automatisations",[75,1145,1146],{},"Le renforcement de la sécurité (en évitant de nombreux vecteurs d'injection de code)",[12,1148,1149],{},"L'interpréteur ne peut agir que sur la configuration : paires clé/valeur de configuration Git, indicateurs de récupération et d'extraction, listes d'inclusion/d'exclusion pour l'extraction clairsemée, et un petit ensemble de hooks post-clonage contrôlés par des prédicats simples. Tout ajout arbitraire à la configuration est inconnu du moteur et ignoré. Vous pouvez auditer exactement ce qu'une politique fera simplement en la lisant.",[64,1151,1153],{"id":1152},"trois-façons-dutiliser-git-clone-override-policy-de-la-moins-invasive-à-la-plus-invasive","Trois façons d'utiliser Git Clone Override Policy, de la moins invasive à la plus invasive",[1155,1156,1157,1177],"table",{},[1158,1159,1160],"thead",{},[1161,1162,1163,1168,1171,1174],"tr",{},[1164,1165,1167],"th",{"align":1166},"left","Mode",[1164,1169,1170],{"align":1166},"Commande",[1164,1172,1173],{"align":1166},"Droits admin requis",[1164,1175,1176],{"align":1166},"Idéal pour",[1178,1179,1180,1197,1212],"tbody",{},[1161,1181,1182,1186,1191,1194],{},[1183,1184,1185],"td",{"align":1166},"CLI sans empreinte",[1183,1187,1188],{"align":1166},[16,1189,1190],{},"./git-clone-override-policy clone URL",[1183,1192,1193],{"align":1166},"Non",[1183,1195,1196],{"align":1166},"Jobs CI, agents, machines ponctuelles",[1161,1198,1199,1202,1207,1209],{},[1183,1200,1201],{"align":1166},"Alias Git",[1183,1203,1204],{"align":1166},[16,1205,1206],{},"git cloneusingpolicy URL",[1183,1208,1193],{"align":1166},[1183,1210,1211],{"align":1166},"Développeurs (adoption individuelle)",[1161,1213,1214,1217,1222,1225],{},[1183,1215,1216],{"align":1166},"Alias OS",[1183,1218,1219,1221],{"align":1166},[16,1220,165],{}," (intercepte les appels au binaire Git)",[1183,1223,1224],{"align":1166},"Oui",[1183,1226,1227],{"align":1166},"Application à l'ensemble du parc sans que les équipes de développement s'en rendent compte",[12,1229,1230,1231,1234,1235,1237,1238,1240],{},"Le mode sans empreinte se résume au binaire compilé : téléchargez-le et exécutez-le. Pas d'installation, pas de modification du PATH, rien à nettoyer, exactement ce qu'il faut quand la machine entière est jetable. Le mode alias Git installe une commande ",[16,1232,1233],{},"git cloneusingpolicy"," pour un seul utilisateur, sans droits d'administration nécessaires. Le mode alias OS va plus loin : il s'installe en amont du véritable ",[16,1236,234],{}," dans le PATH du système, de sorte que chaque ",[16,1239,18],{}," sur cette machine respecte la politique, que la personne qui l'exécute connaisse ou non son existence.",[64,1242,1244],{"id":1243},"trois-exemples-de-résultats-issus-de-loptimisation-de-git-clone-override-policy","Trois exemples de résultats issus de l'optimisation de Git Clone Override Policy",[12,1246,1247],{},"Les résultats sont les mêmes que ceux présentés dans Git Much Faster. Ils s'appliquent désormais automatiquement, sans qu'il soit nécessaire d'en faire la demande :",[1155,1249,1250,1263],{},[1158,1251,1252],{},[1161,1253,1254,1257,1260],{},[1164,1255,1256],{"align":1166},"Dépôt",[1164,1258,1259],{"align":1166},"Clone de l'historique complet",[1164,1261,1262],{"align":1166},"Clone optimisé par la politique",[1178,1264,1265,1279,1290],{},[1161,1266,1267,1273,1276],{},[1183,1268,1269],{"align":1166},[24,1270,642],{"href":1271,"rel":1272},"http://www.gitlab.com",[],[1183,1274,1275],{"align":1166},"9,5 Go",[1183,1277,1278],{"align":1166},"110 Mo",[1161,1280,1281,1284,1287],{},[1183,1282,1283],{"align":1166},"Noyau Linux",[1183,1285,1286],{"align":1166},"7,5 Go",[1183,1288,1289],{"align":1166},"2 Go",[1161,1291,1292,1295,1298],{},[1183,1293,1294],{"align":1166},"Chromium",[1183,1296,1297],{"align":1166},"60 Go",[1183,1299,1300],{"align":1166},"5 Go",[12,1302,1303,1304,1306,1307,1309,1310,1312],{},"Le comportement de sécurité fonctionne parfaitement lors d'une démonstration en direct : installez l'alias OS, exécutez ",[16,1305,18],{}," sur un dépôt soumis à la politique, et vous obtenez la version de 110 Mo. Ajoutez ",[16,1308,169],{}," à cette même commande, et l'intercepteur l'ignore complètement : il laisse passer la commande, point final. Désinstallez l'alias, et ",[16,1311,18],{}," revient à un clonage standard, sans aucune trace.",[64,1314,1316],{"id":1315},"des-bénéfices-cumulés-avec-git-lfs","Des bénéfices cumulés avec Git LFS",[12,1318,1319,1320,1323,1324,1327],{},"Git LFS et cette politique résolvent deux aspects distincts d'un même problème : Git LFS modifie la façon dont les binaires sont stockés, en conservant leur historique hors du fichier d'empaquetage, tandis que la politique de clonage modifie ce que chaque clonage demande. Comme ils opèrent sur des couches différentes, ils se complètent plutôt qu'ils ne s'excluent. Sur un dépôt Git LFS, la profondeur réduite de la politique, la spécification de référence sur une seule branche et l'optimisation des transferts réduisent encore tout ce que Git LFS laisse intact. Et comme ",[16,1321,1322],{},"sparse-checkout"," exclut ces types de fichiers par leur nom, il ignore également le téléchargement smudge des binaires actuels. Vous profitez ainsi du comportement à la demande de la variable de configuration Git standard ",[16,1325,1326],{},"GIT_LFS_SKIP_SMUDGE"," sans aucune configuration côté client. Les résultats sont cumulés : Git LFS réduit la taille de l'historique, la politique réduit la taille de la requête, et un clonage de taille réduite sous Git LFS s'allège encore davantage.",[64,1329,1331],{"id":1330},"perspectives","Perspectives",[12,1333,1334],{},"Cet article nous ramène au point de départ : le problème n'est pas propre aux agents, mais ce sont eux qui mettent le plus vite en échec l'idée qu'il suffirait de communiquer les bons paramètres. Avec la politique en tant que code, ni les équipes ni les agents n'ont besoin de savoir qu'elle existe.",[12,1336,1337,1338,1343,1344,1349],{},"Pour aller plus loin, découvrez ",[24,1339,1342],{"href":1340,"rel":1341},"https://www.youtube.com/watch?v=Dyl8ICWj3AY",[],"l'architecture de Git Clone Override Policy"," pour comprendre comment le problème et la solution ont été conçus, ainsi qu'",[24,1345,1348],{"href":1346,"rel":1347},"https://www.youtube.com/watch?v=2u_z1nXae7U",[],"une démo"," pour voir les trois modes d'exécution en action.",[12,1351,1352,1356,1357,192],{},[24,1353,1355],{"href":150,"rel":1354},[],"Essayez Git Clone Override Policy"," sur votre propre dépôt volumineux. Et si vous souhaitez consulter les tests de performance à l'origine des paramètres par défaut, consultez ",[24,1358,55],{"href":53,"rel":1359},[],[1361,1362,1363],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":202,"searchDepth":231,"depth":231,"links":1365},[1366,1367,1368,1369,1370,1371,1372,1373,1374,1375],{"id":66,"depth":231,"text":67},{"id":140,"depth":231,"text":141},{"id":180,"depth":231,"text":181},{"id":646,"depth":231,"text":647},{"id":659,"depth":231,"text":660},{"id":1103,"depth":231,"text":1104},{"id":1152,"depth":231,"text":1153},{"id":1243,"depth":231,"text":1244},{"id":1315,"depth":231,"text":1316},{"id":1330,"depth":231,"text":1331},"engineering","2026-09-07","Découvrez comment Git Clone Override Policy automatise les optimisations de clonages superficiels et partiels via un fichier TOML stocké dans le dépôt afin de réduire la charge et les coûts.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1777380633/y3bigk0mmmxshmbofrkc.png",{},"/fr-fr/blog/git-clone-override-policy",{"title":1385,"description":1386,"config":1387},"Évitez les coûts associés au clonage","Git Clone Override Policy automatise les optimisations de clonages superficiels et partiels via un fichier TOML stocké dans le dépôt.",{"noIndex":1388},false,"git-clone-override-policy","fr-fr/blog/git-clone-override-policy",[1392,1393,234],"tutorial","DevSecOps platform","BlogPost","xYu9CqMGY8PpkF9Cbf2TmWOPWxoZzwR-pUkFtdEDBmE",{"logo":1397,"freeTrial":1402,"sales":1407,"login":1412,"items":1417,"search":1748,"minimal":1783,"duo":1802,"switchNav":1811,"pricingDeployment":1822},{"config":1398},{"href":1399,"dataGaName":1400,"dataGaLocation":1401},"/fr-fr/","gitlab logo","header",{"text":1403,"config":1404},"Commencer un essai gratuit",{"href":1405,"dataGaName":1406,"dataGaLocation":1401},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":1408,"config":1409},"Demander une démo",{"href":1410,"dataGaName":1411,"dataGaLocation":1401},"/request-a-demo/","sales",{"text":1413,"config":1414},"Connexion",{"href":1415,"dataGaName":1416,"dataGaLocation":1401},"https://gitlab.com/users/sign_in/","sign in",[1418,1504,1592,1597,1672,1726],{"text":1419,"left":715,"config":1420,"menu":1422},"Plateforme",{"dataNavLevelOne":1421},"platform",{"type":1423,"link":1424,"columns":1428,"feature":1493},"lists",{"text":1425,"config":1426},"Explorer la plateforme",{"href":1427,"dataGaName":1421,"dataGaLocation":1401},"/fr-fr/platform/",[1429,1452,1475],{"title":1430,"items":1431},"Exécution et workflows",[1432,1437,1442,1447],{"text":1433,"config":1434},"CI/CD",{"href":1435,"dataGaLocation":1401,"dataGaName":1436},"/fr-fr/solutions/continuous-integration/","ci/cd",{"text":1438,"config":1439},"Gestion du code source",{"href":1440,"dataGaLocation":1401,"dataGaName":1441},"/fr-fr/solutions/source-code-management/","source code management",{"text":1443,"config":1444},"Méthode de livraison selon les principes Agile",{"href":1445,"dataGaLocation":1401,"dataGaName":1446},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":1448,"config":1449},"Gestion des artefacts",{"href":1450,"dataGaLocation":1401,"dataGaName":1451},"/fr-fr/artifact-central/","artifact management",{"title":1453,"items":1454},"Sécurité et gouvernance",[1455,1460,1465,1470],{"text":1456,"config":1457},"Test de sécurité des applications",{"href":1458,"dataGaLocation":1401,"dataGaName":1459},"/fr-fr/solutions/application-security-testing/","application security testing",{"text":1461,"config":1462},"Gouvernance et conformité",{"href":1463,"dataGaLocation":1401,"dataGaName":1464},"/fr-fr/solutions/software-compliance/","governance and compliance",{"text":1466,"config":1467},"Gestion des secrets",{"href":1468,"dataGaLocation":1401,"dataGaName":1469},"/fr-fr/gitlab-secrets-manager/","secrets management",{"text":1471,"config":1472},"Sécurité de la chaîne d'approvisionnement",{"href":1473,"dataGaLocation":1401,"dataGaName":1474},"/fr-fr/solutions/supply-chain/","supply chain security",{"title":1476,"items":1477},"Contexte et IA",[1478,1483,1488],{"text":1479,"config":1480},"Orchestration agentique",{"href":1481,"dataGaLocation":1401,"dataGaName":1482},"/fr-fr/gitlab-duo-agent-platform/","agentic orchestration",{"text":1484,"config":1485},"Graphe de contexte",{"href":1486,"dataGaLocation":1401,"dataGaName":1487},"/fr-fr/gitlab-orbit/","context graph",{"text":1489,"config":1490},"Visibilité et mesures",{"href":1491,"dataGaLocation":1401,"dataGaName":1492},"/fr-fr/solutions/visibility-measurement/","visibility and measurement",{"config":1494,"title":1497,"text":1498,"link":1499},{"background":1495,"textColor":1496},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Pourquoi utiliser GitLab","Une plateforme unique offrant une rapidité maîtrisée tout au long du cycle de développement logiciel.",{"text":1500,"config":1501},"En savoir plus",{"href":1502,"dataGaName":1503,"dataGaLocation":1401},"/fr-fr/why-gitlab/","why gitlab",{"text":1505,"left":715,"config":1506,"menu":1508},"Solutions",{"dataNavLevelOne":1507},"solutions",{"type":1423,"link":1509,"columns":1513,"feature":1583},{"text":1510,"config":1511},"Voir toutes les solutions",{"href":1512,"dataGaName":1507,"dataGaLocation":1401},"/fr-fr/solutions/",[1514,1532,1550],{"title":1515,"items":1516},"Résultats",[1517,1522,1527],{"text":1518,"config":1519},"Modernisation DevOps",{"href":1520,"dataGaLocation":1401,"dataGaName":1521},"/fr-fr/assessments/devops-modernization-assessment/","devops modernization",{"text":1523,"config":1524},"Modernisation de la sécurité",{"href":1525,"dataGaLocation":1401,"dataGaName":1526},"/fr-fr/assessments/security-modernization-assessment/","security modernization",{"text":1528,"config":1529},"Modernisation de l'IA",{"href":1530,"dataGaLocation":1401,"dataGaName":1531},"/fr-fr/assessments/ai-modernization-assessment/","ai modernization",{"title":1533,"items":1534},"Par taille",[1535,1540,1545],{"text":1536,"config":1537},"Entreprises",{"href":1538,"dataGaLocation":1401,"dataGaName":1539},"/fr-fr/enterprise/","enterprise",{"text":1541,"config":1542},"PME",{"href":1543,"dataGaLocation":1401,"dataGaName":1544},"/fr-fr/small-business/","small business",{"text":1546,"config":1547},"Start-up",{"href":1548,"dataGaLocation":1401,"dataGaName":1549},"/fr-fr/solutions/startups/","startups",{"title":1551,"items":1552},"Secteurs",[1553,1558,1563,1568,1573,1578],{"text":1554,"config":1555},"Services financiers",{"href":1556,"dataGaLocation":1401,"dataGaName":1557},"/fr-fr/solutions/finance/","financial services",{"text":1559,"config":1560},"Secteur public",{"href":1561,"dataGaLocation":1401,"dataGaName":1562},"/fr-fr/solutions/public-sector/","public sector",{"text":1564,"config":1565},"Télécommunications",{"href":1566,"dataGaLocation":1401,"dataGaName":1567},"/fr-fr/solutions/telecommunications/","telecommunications",{"text":1569,"config":1570},"Automobile",{"href":1571,"dataGaLocation":1401,"dataGaName":1572},"/fr-fr/solutions/automotive/","automotive",{"text":1574,"config":1575},"Éducation",{"href":1576,"dataGaLocation":1401,"dataGaName":1577},"/fr-fr/solutions/education/","education",{"text":1579,"config":1580},"Aérospatiale",{"href":1581,"dataGaLocation":1401,"dataGaName":1582},"/fr-fr/solutions/aerospace/","aerospace",{"config":1584,"title":1585,"text":1586,"link":1587},{"background":1495,"textColor":1496},"GitLab Security Standard","Découvrez comment renforcer votre usine logicielle et permettre aux agents d'IA de gagner en autonomie sans sacrifier la sécurité.",{"text":1588,"config":1589},"Découvrir GitLab Security Standard",{"href":1590,"dataGaName":1591,"dataGaLocation":1401},"/fr-fr/gitlab-security-standard/","gitlab security standard",{"text":1593,"config":1594},"Tarifs",{"href":1595,"dataGaName":1596,"dataGaLocation":1401,"dataNavLevelOne":1596},"/fr-fr/pricing/","pricing",{"text":1598,"config":1599,"menu":1601},"Ressources",{"dataNavLevelOne":1600},"resources",{"type":1423,"link":1602,"columns":1606,"feature":1663},{"text":1603,"config":1604},"Afficher toutes les ressources",{"href":1605,"dataGaName":1600,"dataGaLocation":1401},"/fr-fr/resources/",[1607,1635],{"title":1608,"items":1609},"Découvrir",[1610,1615,1620,1625,1630],{"text":1611,"config":1612},"Documentation",{"href":1613,"dataGaName":1614,"dataGaLocation":1401},"https://docs.gitlab.com/","docs",{"text":1616,"config":1617},"GitLab University",{"href":1618,"dataGaName":1619,"dataGaLocation":1401},"https://university.gitlab.com/","university",{"text":1621,"config":1622},"Démos",{"href":1623,"dataGaName":1624,"dataGaLocation":1401},"/fr-fr/gitlab-technical-demo-series/","demo series",{"text":1626,"config":1627},"Centre de démos",{"href":1628,"dataGaName":1629,"dataGaLocation":1401},"/fr-fr/demo-hub/","demo hub",{"text":1631,"config":1632},"Services",{"href":1633,"dataGaName":1634,"dataGaLocation":1401},"/fr-fr/services/","services",{"title":1636,"items":1637},"Connecter",[1638,1643,1648,1653,1658],{"text":1639,"config":1640},"Blog",{"href":1641,"dataGaName":1642,"dataGaLocation":1401},"/fr-fr/blog/","blog",{"text":1644,"config":1645},"Communauté",{"href":1646,"dataGaName":1647,"dataGaLocation":1401},"/community/","community",{"text":1649,"config":1650},"Clients",{"href":1651,"dataGaName":1652,"dataGaLocation":1401},"/fr-fr/customers/","customers",{"text":1654,"config":1655},"Partenaires",{"href":1656,"dataGaName":1657,"dataGaLocation":1401},"/fr-fr/partners/","partners",{"text":1659,"config":1660},"Événements",{"href":1661,"dataGaName":1662,"dataGaLocation":1401},"/events/","events",{"config":1664,"title":1665,"text":1666,"link":1667},{"background":1495,"textColor":1496},"Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":1668,"config":1669},"Lire les articles les plus récents",{"href":1670,"dataGaName":1671,"dataGaLocation":1401},"/fr-fr/whats-new/","whats new",{"text":1673,"config":1674,"menu":1676},"Société",{"dataNavLevelOne":1675},"company",{"type":1423,"columns":1677},[1678],{"items":1679},[1680,1685,1691,1696,1701,1706,1711,1716,1721],{"text":1681,"config":1682},"À propos",{"href":1683,"dataGaName":1684,"dataGaLocation":1401},"/fr-fr/company/","about",{"text":1686,"config":1687,"footerGa":1690},"Carrières",{"href":1688,"dataGaName":1689,"dataGaLocation":1401},"/jobs/","jobs",{"dataGaName":1689},{"text":1692,"config":1693},"Presse",{"href":1694,"dataGaName":1695,"dataGaLocation":1401},"/press/","press",{"text":1697,"config":1698},"Manuel",{"href":1699,"dataGaName":1700,"dataGaLocation":1401},"https://handbook.gitlab.com/","handbook",{"text":1702,"config":1703},"Leadership",{"href":1704,"dataGaName":1705,"dataGaLocation":1401},"/company/team/e-group/","leadership",{"text":1707,"config":1708},"Relations avec les investisseurs",{"href":1709,"dataGaName":1710,"dataGaLocation":1401},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1712,"config":1713},"Trust Center",{"href":1714,"dataGaName":1715,"dataGaLocation":1401},"/fr-fr/security/","trust center",{"text":1717,"config":1718},"Centre pour la transparence de l'IA",{"href":1719,"dataGaName":1720,"dataGaLocation":1401},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1722,"config":1723},"Newsletter",{"href":1724,"dataGaName":1725,"dataGaLocation":1401},"/company/contact/#contact-forms","newsletter",{"text":1727,"config":1728,"menu":1729},"Nous contacter",{"dataNavLevelOne":1675},{"type":1423,"columns":1730},[1731],{"items":1732},[1733,1738,1743],{"text":1734,"config":1735},"Contacter l'équipe commerciale",{"href":1736,"dataGaName":1737,"dataGaLocation":1401},"/fr-fr/sales/","talk to sales",{"text":1739,"config":1740},"Assistance GitLab",{"href":1741,"dataGaName":1742,"dataGaLocation":1401},"https://support.gitlab.com/hc/en-us","support portal",{"text":1744,"config":1745},"Portail clients GitLab",{"href":1746,"dataGaName":1747,"dataGaLocation":1401},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1749,"login":1750,"suggestions":1757},"Fermer",{"text":1751,"link":1752},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":1753,"config":1754},"GitLab.com",{"href":1415,"dataGaName":1755,"dataGaLocation":1756},"search login","search",{"text":1758,"default":1759},"Suggestions",[1760,1764,1768,1770,1775,1780],{"text":1761,"config":1762},"GitLab Duo Agent Platform",{"href":1481,"dataGaName":1763,"dataGaLocation":1756},"GitLab Duo Agent Platform",{"text":1765,"config":1766},"Suggestions de code (IA)",{"href":1481,"dataGaName":1767,"dataGaLocation":1756},"Code Suggestions (AI)",{"text":1433,"config":1769},{"href":1435,"dataGaName":1433,"dataGaLocation":1756},{"text":1771,"config":1772},"GitLab sur AWS",{"href":1773,"dataGaName":1774,"dataGaLocation":1756},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1776,"config":1777},"GitLab sur Google Cloud",{"href":1778,"dataGaName":1779,"dataGaLocation":1756},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1497,"config":1781},{"href":1502,"dataGaName":1782,"dataGaLocation":1756},"Why GitLab?",{"freeTrial":1784,"mobileIcon":1789,"desktopIcon":1794,"secondaryButton":1797},{"text":1785,"config":1786},"Commencer votre essai gratuit",{"href":1787,"dataGaName":1406,"dataGaLocation":1788},"https://gitlab.com/-/trials/new/","nav",{"altText":1790,"config":1791},"Icône GitLab",{"src":1792,"dataGaName":1793,"dataGaLocation":1788},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1790,"config":1795},{"src":1796,"dataGaName":1793,"dataGaLocation":1788},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1798,"config":1799},"Commencer",{"href":1800,"dataGaName":1801,"dataGaLocation":1788},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1803,"mobileIcon":1807,"desktopIcon":1809},{"text":1804,"config":1805},"En savoir plus sur GitLab Duo",{"href":1481,"dataGaName":1806,"dataGaLocation":1788},"gitlab duo",{"altText":1790,"config":1808},{"src":1792,"dataGaName":1793,"dataGaLocation":1788},{"altText":1790,"config":1810},{"src":1796,"dataGaName":1793,"dataGaLocation":1788},{"button":1812,"mobileIcon":1817,"desktopIcon":1819},{"text":1813,"config":1814},"/switch",{"href":1815,"dataGaName":1816,"dataGaLocation":1788},"#contact","switch",{"altText":1790,"config":1818},{"src":1792,"dataGaName":1793,"dataGaLocation":1788},{"altText":1790,"config":1820},{"src":1821,"dataGaName":1793,"dataGaLocation":1788},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1823,"mobileIcon":1828,"desktopIcon":1830},{"text":1824,"config":1825},"Retour aux tarifs",{"href":1595,"dataGaName":1826,"dataGaLocation":1788,"icon":1827},"back to pricing","GoBack",{"altText":1790,"config":1829},{"src":1792,"dataGaName":1793,"dataGaLocation":1788},{"altText":1790,"config":1831},{"src":1796,"dataGaName":1793,"dataGaLocation":1788},{"title":1833,"button":1834,"config":1837},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":1500,"config":1835},{"href":1486,"dataGaName":1836,"dataGaLocation":1401},"orbit",{"layout":1838,"disabled":1388},"release",{"data":1840},{"text":1841,"source":1842,"edit":1848,"contribute":1853,"config":1858,"items":1863,"minimal":2080},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1843,"config":1844},"Afficher le code source de la page",{"href":1845,"dataGaName":1846,"dataGaLocation":1847},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1849,"config":1850},"Modifier cette page",{"href":1851,"dataGaName":1852,"dataGaLocation":1847},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1854,"config":1855},"Contribuer",{"href":1856,"dataGaName":1857,"dataGaLocation":1847},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1859,"facebook":1860,"youtube":1861,"linkedin":1862},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1864,1909,1965,2006,2047],{"title":1593,"links":1865,"subMenu":1880},[1866,1870,1875],{"text":1867,"config":1868},"Voir les forfaits",{"href":1595,"dataGaName":1869,"dataGaLocation":1847},"view plans",{"text":1871,"config":1872},"GitLab Premium",{"href":1873,"dataGaName":1874,"dataGaLocation":1847},"/fr-fr/pricing/premium/","why premium",{"text":1876,"config":1877},"GitLab Ultimate",{"href":1878,"dataGaName":1879,"dataGaLocation":1847},"/fr-fr/pricing/ultimate/","why ultimate",[1881],{"title":1727,"links":1882},[1883,1885,1887,1889,1894,1899,1904],{"text":1734,"config":1884},{"href":1736,"dataGaName":1411,"dataGaLocation":1847},{"text":1739,"config":1886},{"href":1741,"dataGaName":1742,"dataGaLocation":1847},{"text":1744,"config":1888},{"href":1746,"dataGaName":1747,"dataGaLocation":1847},{"text":1890,"config":1891},"Statut",{"href":1892,"dataGaName":1893,"dataGaLocation":1847},"https://status.gitlab.com/","status",{"text":1895,"config":1896},"Conditions d'utilisation",{"href":1897,"dataGaName":1898,"dataGaLocation":1847},"/terms/","terms of use",{"text":1900,"config":1901},"Politique de confidentialité",{"href":1902,"dataGaName":1903,"dataGaLocation":1847},"/fr-fr/privacy/","privacy statement",{"text":1905,"config":1906},"Gestion des cookies",{"dataGaName":1907,"dataGaLocation":1847,"id":1908,"isOneTrustButton":715},"cookie preferences","ot-sdk-btn",{"title":1419,"links":1910,"subMenu":1923},[1911,1913,1915,1917,1919,1921],{"text":1425,"config":1912},{"href":1427,"dataGaName":1421,"dataGaLocation":1847},{"text":1479,"config":1914},{"href":1481,"dataGaName":1482,"dataGaLocation":1847},{"text":1433,"config":1916},{"href":1435,"dataGaName":1436,"dataGaLocation":1847},{"text":1484,"config":1918},{"href":1486,"dataGaName":1487,"dataGaLocation":1847},{"text":1466,"config":1920},{"href":1468,"dataGaName":1469,"dataGaLocation":1847},{"text":1497,"config":1922},{"href":1502,"dataGaName":1503,"dataGaLocation":1847},[1924],{"title":1925,"links":1926},"Thèmes",[1927,1931,1936,1941,1946,1951,1956,1961],{"text":1433,"config":1928},{"href":1929,"dataGaName":1930,"dataGaLocation":1847},"/fr-fr/topics/ci-cd/","cicd",{"text":1932,"config":1933},"GitOps",{"href":1934,"dataGaName":1935,"dataGaLocation":1847},"/fr-fr/topics/gitops/","gitops",{"text":1937,"config":1938},"DevOps",{"href":1939,"dataGaName":1940,"dataGaLocation":1847},"/fr-fr/topics/devops/","devops",{"text":1942,"config":1943},"Contrôle de version",{"href":1944,"dataGaName":1945,"dataGaLocation":1847},"/fr-fr/topics/version-control/","version control",{"text":1947,"config":1948},"DevSecOps",{"href":1949,"dataGaName":1950,"dataGaLocation":1847},"/fr-fr/topics/devsecops/","devsecops",{"text":1952,"config":1953},"Cloud-native",{"href":1954,"dataGaName":1955,"dataGaLocation":1847},"/fr-fr/topics/cloud-native/","cloud native",{"text":1957,"config":1958},"IA pour la programmation",{"href":1959,"dataGaName":1960,"dataGaLocation":1847},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":29,"config":1962},{"href":1963,"dataGaName":1964,"dataGaLocation":1847},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1505,"links":1966},[1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1994,1998,2002],{"text":1518,"config":1968},{"href":1520,"dataGaName":1521,"dataGaLocation":1847},{"text":1523,"config":1970},{"href":1525,"dataGaName":1526,"dataGaLocation":1847},{"text":1528,"config":1972},{"href":1530,"dataGaName":1531,"dataGaLocation":1847},{"text":1554,"config":1974},{"href":1556,"dataGaName":1557,"dataGaLocation":1847},{"text":1559,"config":1976},{"href":1561,"dataGaName":1562,"dataGaLocation":1847},{"text":1564,"config":1978},{"href":1566,"dataGaName":1567,"dataGaLocation":1847},{"text":1569,"config":1980},{"href":1571,"dataGaName":1572,"dataGaLocation":1847},{"text":1574,"config":1982},{"href":1576,"dataGaName":1577,"dataGaLocation":1847},{"text":1579,"config":1984},{"href":1581,"dataGaName":1582,"dataGaLocation":1847},{"text":1536,"config":1986},{"href":1538,"dataGaName":1539,"dataGaLocation":1847},{"text":1541,"config":1988},{"href":1543,"dataGaName":1544,"dataGaLocation":1847},{"text":1546,"config":1990},{"href":1548,"dataGaName":1549,"dataGaLocation":1847},{"text":1932,"config":1992},{"href":1993,"dataGaName":1935,"dataGaLocation":1847},"/fr-fr/solutions/gitops/",{"text":1995,"config":1996},"Analyse de la composition logicielle",{"href":1473,"dataGaName":1997,"dataGaLocation":1847},"software composition analysis",{"text":1999,"config":2000},"Gestion de la chaîne de valeur",{"href":1491,"dataGaName":2001,"dataGaLocation":1847},"value stream management",{"text":2003,"config":2004},"Toutes les solutions",{"href":1512,"dataGaName":2005,"dataGaLocation":1847},"all solutions",{"title":1598,"links":2007},[2008,2013,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2043],{"text":2009,"config":2010},"Installation",{"href":2011,"dataGaName":2012,"dataGaLocation":1847},"/fr-fr/install/","install",{"text":2014,"config":2015},"Guides de démarrage",{"href":2016,"dataGaName":2017,"dataGaLocation":1847},"/fr-fr/get-started/","quick setup checklists",{"text":1611,"config":2019},{"href":1613,"dataGaName":1614,"dataGaLocation":1847},{"text":1616,"config":2021},{"href":1618,"dataGaName":1619,"dataGaLocation":1847},{"text":1621,"config":2023},{"href":1623,"dataGaName":1624,"dataGaLocation":1847},{"text":1626,"config":2025},{"href":1628,"dataGaName":1629,"dataGaLocation":1847},{"text":1631,"config":2027},{"href":1633,"dataGaName":1634,"dataGaLocation":1847},{"text":1639,"config":2029},{"href":1641,"dataGaName":1642,"dataGaLocation":1847},{"text":1644,"config":2031},{"href":1646,"dataGaName":1647,"dataGaLocation":1847},{"text":1649,"config":2033},{"href":1651,"dataGaName":1652,"dataGaLocation":1847},{"text":1654,"config":2035},{"href":1656,"dataGaName":1657,"dataGaLocation":1847},{"text":1659,"config":2037},{"href":1661,"dataGaName":1662,"dataGaLocation":1847},{"text":1722,"config":2039},{"href":1724,"dataGaName":1725,"dataGaLocation":1847},{"text":2041,"config":2042},"Nouveautés",{"href":1670,"dataGaName":1671,"dataGaLocation":1847},{"text":2044,"config":2045},"Toutes les ressources",{"href":1605,"dataGaName":2046,"dataGaLocation":1847},"all resources",{"title":1673,"links":2048},[2049,2051,2053,2055,2057,2059,2061,2063,2065,2070,2075],{"text":1681,"config":2050},{"href":1683,"dataGaName":1675,"dataGaLocation":1847},{"text":1686,"config":2052},{"href":1688,"dataGaName":1689,"dataGaLocation":1847},{"text":1692,"config":2054},{"href":1694,"dataGaName":1695,"dataGaLocation":1847},{"text":1697,"config":2056},{"href":1699,"dataGaName":1700,"dataGaLocation":1847},{"text":1702,"config":2058},{"href":1704,"dataGaName":1705,"dataGaLocation":1847},{"text":1707,"config":2060},{"href":1709,"dataGaName":1710,"dataGaLocation":1847},{"text":1712,"config":2062},{"href":1714,"dataGaName":1715,"dataGaLocation":1847},{"text":1717,"config":2064},{"href":1719,"dataGaName":1720,"dataGaLocation":1847},{"text":2066,"config":2067},"Développement durable",{"href":2068,"dataGaName":2069,"dataGaLocation":1847},"/sustainability/","Sustainability",{"text":2071,"config":2072},"Diversité, inclusion et appartenance (DIB)",{"href":2073,"dataGaName":2074,"dataGaLocation":1847},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":2076,"config":2077},"Déclaration de transparence sur l'esclavage moderne",{"href":2078,"dataGaName":2079,"dataGaLocation":1847},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2081},[2082,2084,2086],{"text":1895,"config":2083},{"href":1897,"dataGaName":1898,"dataGaLocation":1847},{"text":1905,"config":2085},{"dataGaName":1907,"dataGaLocation":1847,"id":1908,"isOneTrustButton":715},{"text":1900,"config":2087},{"href":1902,"dataGaName":1903,"dataGaLocation":1847},[2089],{"id":2090,"title":7,"body":1380,"config":2091,"content":2093,"description":1380,"extension":2099,"meta":2100,"navigation":715,"path":2101,"seo":2102,"stem":2103,"__hash__":2104},"blogAuthors/en-us/blog/authors/darwin-sanoy.yml",{"template":2092},"BlogAuthor",{"role":2094,"name":7,"config":2095},"Field Chief Cloud Architect",{"headshot":2096,"linkedin":2097,"ctfId":2098},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659751/Blog/Author%20Headshots/Darwin-Sanoy-headshot-395-square-gitlab-teampage-avatar.png","https://linkedin.com/in/darwinsanoy","DarwinJS","yml",{},"/en-us/blog/authors/darwin-sanoy",{},"en-us/blog/authors/darwin-sanoy","UkMMwmU5o2e6Y-wBltA9E_z96LvHuB-bG6VW9DsLzIY",[2106,2115,2123],{"title":2107,"description":2108,"heroImage":2109,"category":1376,"date":2110,"authors":2111,"slug":2114,"externalUrl":1380},"Git a été pensé pour les humains, il est temps de l'adapter aux agents","Découvrez comment la gestion du code source de nouvelle génération de GitLab s'adapte aux agents, et pourquoi un nouveau backend doit répondre aux défis liés à la traçabilité et au cycle de vie.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773856365/gsx2c0vqlswox3ldmq88.jpg","2026-10-05",[2112,2113],"Kranthi Erusu","Jessica Taylor","gitlab-next-gen-scm",{"title":2116,"description":2117,"heroImage":2118,"category":1376,"date":2119,"authors":2120,"slug":2122,"externalUrl":1380},"Programme Co-Create : développer GitLab avec nos utilisateurs","Comment nous avons collaboré avec les utilisateurs de GitLab pour développer des améliorations produit au cours du premier semestre de l'année 2026.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-09-29",[2121],"Isa Huerga","co-create-h1-2026",{"title":2124,"description":2125,"heroImage":2118,"category":1376,"date":2126,"authors":2127,"slug":2129,"externalUrl":1380},"Du chaos au contexte : comment construire un workflow de développement assisté par l'IA","Découvrez un retour d'expérience de l'itération sur les directives d'IA, la création d'un système de mémoire et ce que l'IA ne peut toujours pas remplacer dans le développement logiciel.","2026-09-14",[2128],"Gregory Havenga","building-an-ai-dev-workflow",{"header":2131,"text":2132,"button":2136,"disclaimer":2139},"Commencez votre essai gratuit\n\nde 30 jours\n",[2133,2134,2135],"Accédez à GitLab Duo Agent Platform","Essayez nos fonctionnalités les plus avancées","Automatisez les tâches complexes avec l'IA",{"text":1403,"config":2137},{"href":2138,"dataGaName":1406,"dataGaLocation":1642},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/blog/","Aucune carte de crédit requise.",{"header":2141,"blurb":2142,"button":2143,"secondaryButton":2147},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":1403,"config":2144},{"href":2145,"dataGaName":1406,"dataGaLocation":2146},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1734,"config":2148},{"href":1736,"dataGaName":1411,"dataGaLocation":2146},1791952282451]