{"id":997,"date":"2026-11-02T11:11:06","date_gmt":"2026-11-02T10:11:06","guid":{"rendered":"https:\/\/jm.garreta.eu\/blog\/?p=997"},"modified":"2026-11-02T11:11:07","modified_gmt":"2026-11-02T10:11:07","slug":"trunk-based-development-la-fin-pull-requests","status":"publish","type":"post","link":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/","title":{"rendered":"Trunk-based development : la fin des pull requests"},"content":{"rendered":"<p><script type=\"application\/ld+json\"><br \/>\n{<br \/>\n  \"@context\": \"https:\/\/schema.org\",<br \/>\n  \"@type\": \"Article\",<br \/>\n  \"headline\": \"Trunk-based development : moins de pull requests ?\",<br \/>\n  \"description\": \"Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.\",<br \/>\n  \"keywords\": \"trunk-based development, pull requests, int\u00e9gration continue, intelligence artificielle\",<br \/>\n  \"inLanguage\": \"fr\"<br \/>\n}<br \/>\n<\/script><\/p>\n<p>Le <strong>trunk-based development<\/strong> revient dans les discussions d\u00e8s qu\u2019on parle de code produit avec l\u2019aide de l\u2019IA. Puisque les modifications arrivent plus vite, pourquoi attendre une pull request, une revue et une fusion pour les int\u00e9grer ? Mais supprimer une \u00e9tape ne supprime pas le travail qu\u2019elle accomplissait. Il faut d\u00e9cider o\u00f9 placer ce travail, et comment v\u00e9rifier qu\u2019il est bien fait.<\/p>\n<p><strong>Je pr\u00e9f\u00e8re une petite modification int\u00e9gr\u00e9e rapidement \u00e0 une grosse pull request qui attend plusieurs jours<\/strong>. Pour autant, je ne donnerais pas les cl\u00e9s de la branche principale \u00e0 toute l\u2019\u00e9quipe au seul motif qu\u2019un assistant IA aide \u00e0 \u00e9crire le code. La vitesse est utile si elle r\u00e9duit aussi le d\u00e9lai entre une erreur et sa d\u00e9tection.<\/p>\n<h2>Trunk-based development : ce qu\u2019on change vraiment<\/h2>\n<p>Le principe du trunk-based development consiste \u00e0 int\u00e9grer fr\u00e9quemment de petites modifications dans une branche principale commune. On \u00e9vite ainsi que chacun travaille trop longtemps dans son coin, avec une branche qui diverge progressivement du reste du projet. Ce n\u2019est pas forc\u00e9ment \u00ab plus de branches du tout \u00bb : des branches tr\u00e8s courtes peuvent garder leur place.<\/p>\n<p>La diff\u00e9rence importante se situe dans la taille et la dur\u00e9e de vie du travail isol\u00e9. Une branche ouverte pour quelques heures et une pull request relue rapidement restent compatibles avec cette logique. \u00c0 l\u2019inverse, une fonctionnalit\u00e9 compl\u00e8te d\u00e9velopp\u00e9e pendant des semaines avant fusion rend l\u2019int\u00e9gration plus risqu\u00e9e, m\u00eame si elle passe par une revue formelle.<\/p>\n<p>Le d\u00e9bat \u00ab pull requests ou trunk \u00bb devient trompeur quand il oppose deux boutons dans une interface Git. Une pull request est un moyen de discuter et de contr\u00f4ler une modification. Le trunk-based development est une mani\u00e8re d\u2019organiser le flux de travail.<\/p>\n<h2>Ce que l\u2019IA acc\u00e9l\u00e8re, et ce qu\u2019elle ne v\u00e9rifie pas<\/h2>\n<p>Un assistant peut proposer du code, des tests ou une premi\u00e8re explication d\u2019un changement. C\u2019est pratique pour avancer. Mais une proposition rapide n\u2019est pas automatiquement une modification pertinente. Il reste \u00e0 v\u00e9rifier qu\u2019elle r\u00e9pond au besoin, s\u2019int\u00e8gre au projet et ne d\u00e9grade pas un comportement moins visible.<\/p>\n<p>C\u2019est l\u00e0 que je serais prudent avec l\u2019id\u00e9e de rendre les pull requests obsol\u00e8tes. Si l\u2019IA augmente le volume de code produit, elle peut aussi augmenter le volume de code \u00e0 comprendre. D\u00e9placer ce volume directement sur la branche principale, sans ajuster les contr\u00f4les, ne me semble pas \u00eatre un progr\u00e8s.<\/p>\n<p>Avant d\u2019int\u00e9grer une modification, je garderais au minimum quelques questions en t\u00eate :<\/p>\n<ul>\n<li><strong>Le changement est-il assez petit<\/strong> pour \u00eatre compris et annul\u00e9 facilement ?<\/li>\n<li>Les tests v\u00e9rifient-ils le comportement qui compte, et pas seulement le chemin le plus \u00e9vident ?<\/li>\n<li>Une personne conna\u00eet-elle la raison du changement, m\u00eame si l\u2019IA a particip\u00e9 \u00e0 son \u00e9criture ?<\/li>\n<li>Que se passe-t-il si cette modification casse quelque chose apr\u00e8s l\u2019int\u00e9gration ?<\/li>\n<\/ul>\n<p>Ces questions ne r\u00e9clament pas n\u00e9cessairement une longue revue asynchrone. Elles r\u00e9clament en revanche une r\u00e9ponse. Selon les \u00e9quipes, elle peut prendre la forme d\u2019une revue courte, d\u2019un \u00e9change en bin\u00f4me, de contr\u00f4les automatis\u00e9s ou d\u2019une combinaison des trois.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/inline-997-0.png\" alt=\"Comparaison visuelle entre branche longue et int\u00e9grations fr\u00e9quentes sur le trunk\" \/><figcaption>Comparaison visuelle entre branche longue et int\u00e9grations fr\u00e9quentes sur le trunk<\/figcaption><\/figure>\n<h2>Des petits changements, pas des contr\u00f4les en moins<\/h2>\n<p>\u00c0 mes yeux, le principal int\u00e9r\u00eat du trunk-based development n\u2019est pas de gagner quelques clics dans Git. C\u2019est de rendre chaque changement assez limit\u00e9 pour qu\u2019on puisse le comprendre, le tester et, si besoin, revenir en arri\u00e8re. La taille des modifications devient alors un outil de ma\u00eetrise du risque.<\/p>\n<p>Prenons une fonctionnalit\u00e9 qui touche \u00e0 la base de donn\u00e9es, au traitement m\u00e9tier et \u00e0 l\u2019interface. Tout livrer d\u2019un coup complique la revue comme le diagnostic en cas de probl\u00e8me. La d\u00e9couper en \u00e9tapes coh\u00e9rentes permet de v\u00e9rifier chaque partie plus t\u00f4t. Mais il faut pr\u00e9parer ces \u00e9tapes : un changement interm\u00e9diaire ne doit pas casser le fonctionnement existant.<\/p>\n<p>Les <strong>feature flags<\/strong> peuvent aider \u00e0 s\u00e9parer l\u2019int\u00e9gration du code de l\u2019activation d\u2019une fonctionnalit\u00e9. Le code rejoint la branche principale, tandis que la nouveaut\u00e9 reste d\u00e9sactiv\u00e9e pour les utilisateurs concern\u00e9s jusqu\u2019\u00e0 ce qu\u2019elle soit pr\u00eate. Ce n\u2019est pas une solution magique : les \u00e9tats activ\u00e9 et d\u00e9sactiv\u00e9 doivent \u00eatre test\u00e9s, et les flags devenus inutiles doivent \u00eatre retir\u00e9s.<\/p>\n<p>Je retiens surtout une r\u00e8gle pratique : si une modification para\u00eet impossible \u00e0 int\u00e9grer sans tout terminer auparavant, il faut regarder si on peut la d\u00e9couper autrement. Ce n\u2019est pas toujours facile, notamment lorsqu\u2019une migration touche plusieurs composants. Mais cette difficult\u00e9 m\u00e9rite d\u2019\u00eatre trait\u00e9e comme un probl\u00e8me de conception, pas cach\u00e9e dans une branche de longue dur\u00e9e.<\/p>\n<h2>Ce qu\u2019il faut pr\u00e9parer avant de changer de m\u00e9thode<\/h2>\n<p>Int\u00e9grer plusieurs fois par jour suppose une branche principale sur laquelle l\u2019\u00e9quipe peut travailler sans appr\u00e9hension. Pour y parvenir, il faut plus qu\u2019une consigne du type \u00ab faites des petits commits \u00bb. Les tests doivent \u00eatre utiles, leur r\u00e9sultat doit arriver assez vite, et un \u00e9chec doit \u00eatre pris en charge rapidement.<\/p>\n<p>Je commencerais par observer le fonctionnement actuel plut\u00f4t que par interdire les pull requests. Combien de temps une modification attend-elle une revue ? Quelle taille font les changements difficiles \u00e0 relire ? Quels tests \u00e9chouent r\u00e9guli\u00e8rement sans signaler un vrai probl\u00e8me ? Ces questions montrent o\u00f9 le travail ralentit et o\u00f9 la confiance manque.<\/p>\n<p>Ensuite, je ferais \u00e9voluer les habitudes progressivement :<\/p>\n<ol>\n<li>D\u00e9couper une t\u00e2che en changements plus petits, chacun avec un objectif compr\u00e9hensible.<\/li>\n<li>Automatiser les v\u00e9rifications que l\u2019\u00e9quipe r\u00e9p\u00e8te d\u00e9j\u00e0 \u00e0 chaque revue.<\/li>\n<li>Conserver une intervention humaine cibl\u00e9e sur les choix de conception, les cas sensibles et les risques m\u00e9tier.<\/li>\n<li>Pr\u00e9voir comment d\u00e9sactiver une fonctionnalit\u00e9 ou revenir sur un changement probl\u00e9matique.<\/li>\n<li>V\u00e9rifier r\u00e9guli\u00e8rement si le d\u00e9lai d\u2019int\u00e9gration baisse sans multiplier les incidents.<\/li>\n<\/ol>\n<p>Ce dernier point est important. Une \u00e9quipe peut fusionner beaucoup plus vite tout en passant davantage de temps \u00e0 r\u00e9parer. Elle n\u2019a alors fait que d\u00e9placer l\u2019attente : elle n\u2019est plus devant la pull request, elle se retrouve apr\u00e8s la mise en production.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/inline-997-1.png\" alt=\"Flux de v\u00e9rification et d\u2019int\u00e9gration de petits changements de code\" \/><figcaption>Flux de v\u00e9rification et d\u2019int\u00e9gration de petits changements de code<\/figcaption><\/figure>\n<h2>Faut-il vraiment supprimer les pull requests ?<\/h2>\n<p>Je ne le ferais pas par principe. Dans une petite \u00e9quipe qui \u00e9change souvent, une revue rapide avant fusion peut rester l\u00e9g\u00e8re et utile. Dans un projet ouvert aux contributions ext\u00e9rieures, la pull request offre aussi un espace clair pour expliquer le changement et en discuter. Et certains changements sensibles justifient un contr\u00f4le explicite avant d\u2019atteindre la branche principale.<\/p>\n<p>En revanche, une pull request qui reste ouverte longtemps parce que personne n\u2019a le temps de la lire ne prot\u00e8ge pas grand-chose. Elle accumule les conflits, retarde les retours et finit parfois par \u00eatre valid\u00e9e dans l\u2019urgence. Dans ce cas, la bonne r\u00e9ponse n\u2019est pas n\u00e9cessairement de supprimer les revues : c\u2019est de r\u00e9duire leur taille et de leur r\u00e9server une vraie place dans le travail de l\u2019\u00e9quipe.<\/p>\n<p>L\u2019IA rend cette discipline encore plus importante. Si produire une modification prend moins de temps, comprendre pourquoi elle existe et v\u00e9rifier ses effets ne doit pas devenir une formalit\u00e9. <strong>La responsabilit\u00e9 du code reste humaine<\/strong>, qu\u2019il ait \u00e9t\u00e9 \u00e9crit \u00e0 la main ou sugg\u00e9r\u00e9 par un outil.<\/p>\n<p>Au fond, je ne choisirais pas entre \u00ab tout passe par une pull request \u00bb et \u00ab tout part directement sur le trunk \u00bb. Je chercherais le circuit le plus court qui permette encore de comprendre, tester et corriger chaque changement. C\u2019est moins spectaculaire qu\u2019une r\u00e9volution des m\u00e9thodes de d\u00e9veloppement, mais probablement plus utile au quotidien.<\/p>\n<p><em>Source : <a href=\"https:\/\/alm.developpez.com\/actu\/388617\/Des-developpeurs-estiment-que-les-Pull-Requests-sont-obsoletes-a-l-ere-de-l-IA-et-proposent-d-aller-au-Trunk-Based-Development-Tout-le-monde-integre-son-travail-sur-une-seule-branche-plusieurs-fois-par-jour\/\" target=\"_blank\" rel=\"noopener nofollow\">https:\/\/alm.developpez.com\/actu\/388617\/Des-developpeurs-estiment-que-les-Pull-Requests-sont-obsoletes-a-l-ere-de-l-IA-et-proposent-d-aller-au-Trunk-Based-Development-Tout-le-monde-integre-son-travail-sur-une-seule-branche-plusieurs-fois-par-jour\/<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.<\/p>\n","protected":false},"author":1,"featured_media":999,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"blog_gen_system_prompt":"Tu es un agent IA \u00e9ditorial expert en r\u00e9daction web SEO en fran\u00e7ais, adaptation de style \u00e0 partir d'un corpus, synth\u00e8se \u00e9ditoriale, et g\u00e9n\u00e9ration de prompts d'illustration. Tu agis comme un agent de production \u00e9ditoriale fiable, autonome, prudent et publiable.\r\n\r\nTYPES D'ARTICLES :\r\n- informatif : expliquer clairement un sujet, une notion, une actualit\u00e9.\r\n- synthese : condenser plusieurs id\u00e9es ou enseignements.\r\n- opinion : d\u00e9fendre un point de vue argument\u00e9, faits vs interpr\u00e9tation.\r\n- analyse : approfondir, mettre en perspective, comparer.\r\n- guide : aider le lecteur \u00e0 agir, m\u00e9thode, \u00e9tapes.\r\n- retour_experience : partager un v\u00e9cu, un apprentissage concret.\r\n- veille : commenter une source r\u00e9cente, une tendance.\r\n- comparatif : opposer options, outils, visions.\r\n- editorial : voix personnelle, incarn\u00e9e.\r\n\r\nR\u00c8GLES DE S\u00c9LECTION AUTO DU TYPE :\r\n1. URL seule : veille si r\u00e9cent, informatif si explication, analyse si profondeur, guide si recommandations.\r\n2. Th\u00e8me seul : informatif\/synthese par d\u00e9faut, opinion\/editorial si prise de position, guide si aide pratique.\r\n3. URL + th\u00e8me : type guid\u00e9 par le th\u00e8me, source comme base factuelle.\r\n\r\nR\u00c8GLES ABSOLUES :\r\n1. Ne jamais halluciner.\r\n2. URL fournie = base factuelle principale.\r\n3. Th\u00e8me fourni avec URL = angle \u00e9ditorial.\r\n4. Th\u00e8me seul = article fiable et prudent sans inventer de faits.\r\n5. Le corpus sert au ton, rythme, niveau de langue, structure, posture \u00e9ditoriale. Jamais copier.\r\n6. Information insuffisante = r\u00e9duire le niveau d'affirmation.\r\n7. Article ORIGINAL, pas de plagiat.\r\n8. NE PAS mentionner ni lister les URLs sources en fin d'article. Les liens sources seront ajout\u00e9s automatiquement par le syst\u00e8me.\r\n\r\nVOIX \u00c9DITORIALE \u2014 R\u00c8GLES IMP\u00c9RATIVES :\r\nTu es l'AUTEUR qui ma\u00eetrise le sujet et le transmet avec un point de vue assum\u00e9. Tu n'es PAS un journaliste qui r\u00e9sume un document externe. Tu \u00e9cris l'article, tu ne le commentes pas.\r\n\r\nLISTE NOIRE \u2014 ces tournures sont STRICTEMENT INTERDITES dans le champ \"content\" :\r\n- \"l'article\", \"l'article source\", \"dans l'article source\", \"selon l'article\", \"cet article traite de\", \"l'article parle de\", \"l'article indique que\"\r\n- \"le texte\", \"le texte relay\u00e9\", \"le texte indique\", \"selon le texte\"\r\n- \"la source\", \"la source indique\", \"selon la source\", \"d'apr\u00e8s la source\"\r\n- \"la publication mentionne\", \"la publication indique\"\r\n- \"d'apr\u00e8s les informations publi\u00e9es\"\r\n- \"les \u00e9l\u00e9ments mentionn\u00e9s\", \"parmi les \u00e9l\u00e9ments cit\u00e9s\", \"chiffre cit\u00e9 dans la source\", \"chiffre mentionn\u00e9\"\r\n- TOUTE mention d'un m\u00e9canisme interne ou d'une limite technique : \"tronqu\u00e9\", \"le contenu est tronqu\u00e9\", \"la source est partiellement tronqu\u00e9e\", \"le message fourni\", \"l'extrait\", \"dans le message\".\r\n\r\nR\u00c8GLE DE R\u00c9\u00c9CRITURE : au lieu de \"l'article indique que X fait Y\", \u00e9cris directement \"X fait Y\". Affirme l'information comme un fait ma\u00eetris\u00e9. Si une donn\u00e9e est incertaine, emploie un qualificatif neutre (\"il semble que\", \"selon toute vraisemblance\") SANS jamais r\u00e9f\u00e9rencer la source comme objet.\r\n\r\nPOUR opinion \/ editorial \/ analyse : prends un point de vue clairement affirm\u00e9 d\u00e8s le premier paragraphe. Emploie \"je\" ou \"nous\" selon le ton du corpus. Distingue tes opinions de tes constats, mais assume les deux.\r\n\r\nCLOISONNEMENT : le champ \"analyse.limites\" du JSON est le SEUL endroit o\u00f9 exprimer tes incertitudes ou les limites des sources. JAMAIS dans \"content\".\r\n\r\nANALYSE DE TON (si corpus fourni) :\r\nAnalyser ton dominant, formalit\u00e9, longueur phrases, densit\u00e9, structure, marqueurs de personnalit\u00e9, p\u00e9dagogie\/analyse\/opinion, introduction\/conclusion.\r\nReproduire une voix compatible sans plagiat ni caricature.\r\nSans corpus : style clair, expert, direct, cr\u00e9dible, fluide, lecture rapide.\r\n\r\nOPINION (si type le justifie) :\r\nDistinguer faits et interpr\u00e9tation. Ne jamais inventer d'arguments factuels. Posture affirm\u00e9e mais cr\u00e9dible.\r\n\r\nLONGUEUR : suivre la longueur cible indiqu\u00e9e dans le message utilisateur. Flexible si le sujet l'exige. Toujours privil\u00e9gier la densit\u00e9 utile.\r\n\r\nSEO OBLIGATOIRE :\r\n1. TITRE : mot-cl\u00e9 principal, < 60 caract\u00e8res, accrocheur.\r\n2. SLUG : d\u00e9riv\u00e9 du titre, minuscules, tirets, sans mots vides, < 75 car.\r\n3. META DESCRIPTION : 150-155 car, mot-cl\u00e9, incitation au clic.\r\n4. META TITLE SEO : peut diff\u00e9rer du H1, CTR, < 60 car.\r\n5. FOCUS KEYWORD.\r\n6. TAGS : 3 \u00e0 6, fran\u00e7ais, minuscules.\r\n7. CAT\u00c9GORIE : une cat\u00e9gorie principale.\r\n8. CONTENU HTML :\r\n   - PAS de H1 dans content.\r\n   - H2 > H3 hi\u00e9rarchie correcte.\r\n   - Mot-cl\u00e9 dans premier paragraphe et au moins un H2.\r\n   - Densit\u00e9 1-2% naturelle.\r\n   - Paragraphes courts (3-4 phrases).\r\n   - Au moins une liste \u00e0 puces ou num\u00e9rot\u00e9e.\r\n   - Introduction engageante.\r\n   - Conclusion concise avec ouverture.\r\n   - <strong> pour expressions importantes.\r\n9. JSON-LD Article schema.\r\n\r\nIMAGES :\r\n- 1 image mise en avant OBLIGATOIRE (featured_image).\r\n\r\nIMAGES INLINE (dans le corps de l'article) :\r\n- R\u00e8gle quantitative OBLIGATOIRE : 1 image inline par tranche de ~500 mots d\u00e8s lors que le sujet est visuel, technique ou proc\u00e9dural.\r\n    \u2022 < 500 mots -> 0 image inline\r\n    \u2022 500-900 mots -> ","blog_gen_user_prompt":"TYPE D'ARTICLE DEMAND\u00c9 : retour_experience\r\n\r\nLONGUEUR CIBLE : environ 1200 mots. Adapte la densit\u00e9 en cons\u00e9quence. Si le sujet exige l\u00e9g\u00e8rement plus ou moins, reste flexible, mais vise cette cible.\r\n\r\n---D\u00c9BUT CORPUS DE STYLE---\r\n# Articles du blog \u2014 jm.garreta.eu\r\n\r\n> Export\u00e9 le 08\/03\/2026  \r\n> 116 articles au total\r\n\r\n---\r\n\r\n## Le RGPD j&rsquo;y comprends rien\r\n\r\n**Date :** 24 May 2018\r\n**Cat\u00e9gories :** Informatique\r\n**Tags :** rgpd\r\n\r\nVous entendez parler du RGPD ou r\u00e8glement g\u00e9n\u00e9ral sur la protection des donn\u00e9es personnelles qui entre en vigueur demain 25 mai 2018 et vous n'y comprenez rien ?\r\nEh bien franceinfo a publi\u00e9 un\r\ntr\u00e8s bon article\r\nqui r\u00e9sume ce qu'il faut savoir : la collecte des donn\u00e9es, une politique de confidentialit\u00e9 plus claire (j'esp\u00e8re que celle\r\nici\r\nl'est), un acc\u00e8s et une suppression plus facile de vos donn\u00e9es.\r\nA lire car Internet sera plus clair et on sent bien d\u00e9sormais que tous les acteurs ont bien pris conscience de la r\u00e8glementation et s'efforce de l'appliquer.\r\n\r\n---\r\n\r\n## Le bon respect de l&rsquo;ethic-ette\r\n\r\n**Date :** 25 May 2018\r\n**Cat\u00e9gories :** Informatique\r\n**Tags :** crack, faille, hack, s\u00e9curit\u00e9, vuln\u00e9rabilit\u00e9\r\n\r\nLe hacking l\u00e9gal existe, il est possible soit en s'entra\u00eenant par le biais de machines virtuelles mises \u00e0 disposition pour cibler une particularit\u00e9 comme\r\nhttps:\/\/www.vulnhub.com\/\r\n, ou des sites qui mettent en place des challenges comme\r\nhttps:\/\/www.root-me.org\/\r\n, ou soit par des plateformes de recherche de failles dites bug bounty que des entreprises peuvent utiliser pour v\u00e9rifier leur s\u00e9curit\u00e9 contre r\u00e9mun\u00e9ration, la plus connue en France\r\nhttps:\/\/bountyfactory.io\/\r\n.\r\nSi la s\u00e9curit\u00e9 informatique vous int\u00e9resse, il est obligatoire de passer par l\u00e0, vous vous amuserez \u00e0 mieux comprendre comment cela fonctionne, et pas de risque de voir monsieur le gendarme sonner chez vous \u00e0 6h du matin.\r\nEt impossible de parler s\u00e9curit\u00e9 sans faire un peu de pub pour la communaut\u00e9\r\nZenK-Security\r\n.\r\nSource\r\n\r\n---\r\n\r\n## V\u00e9rifiez la s\u00e9curit\u00e9 de votre mot de passe\r\n\r\n**Date :** 25 May 2018\r\n**Cat\u00e9gories :** Informatique\r\n**Tags :** crack, hack, passphrase, password\r\n\r\nEn regardant une intervention de Damien Bancal de\r\nZATAZ\r\n, celui-ci a parl\u00e9 du site\r\nhttps:\/\/howsecureismypassword.net\/\r\nque je ne connaissais pas et qui permet de v\u00e9rifier la solidit\u00e9 de votre mot de passe. Est-il solide ? Dans un dictionnaire ? Combien de temps un hacker mettra-t-il pour le trouver ?\r\n\r\n---\r\n\r\n## T&rsquo;es pas d\u00e9veloppeur tant que t&rsquo;as pas d\u00e9velopp\u00e9 longtemps, tr\u00e8s longtemps\r\n\r\n**Date :** 25 May 2018\r\n**Cat\u00e9gories :** Informatique\r\n**Tags :** d\u00e9veloppement, programmation\r\n\r\nVoil\u00e0 bien une vision que je partage, celle de Peter Norvig de chez Google. Selon lui l'apprentissage de la programmation prend 10 ans, car non on n'apprendra jamais \u00e0 programmer en lisant un livre.\r\nIl faut une bonne formation, \u00eatre curieux, s'int\u00e9resser \u00e0 plusieurs langages, et pratiquer et de diff\u00e9rentes mani\u00e8res (seul, en \u00e9quipe, en initiant un projet ou en reprenant un existant).\r\nJe m'en aper\u00e7ois avec l'exp\u00e9rience, aujourd'hui je suis capable de passer d'un langage \u00e0 un autre selon le besoin, ou d'en apprendre un nouveau assez facilement. La logique est importante, pour des probl\u00e8mes fonctionnels, de performance, de maintenabilit\u00e9. Mais tout cela s'acquiert en programmant. La th\u00e9orie est belle, mais on ne progresse qu'en butant sur les difficult\u00e9s. J'ai atteint aujourd'hui un certain niveau, mais c'est bien parce que j'\u00e9tais dans la pratique.\r\nInitier des projets, ou reprendre quelque chose te fait forc\u00e9ment progresser, les erreurs ou diff\u00e9rences des autres te font r\u00e9fl\u00e9chir et ont permis d'am\u00e9liorer mes programmes et fa\u00e7ons de faire, je sens bien que je suis plus productif, et on m'appelle tr\u00e8s souvent aussi pour partager des avis. Cela tu ne l'as pas autrement.\r\nBref si vous voulez devenir d\u00e9veloppeur, commencez, et surtout pratiquez encore, encore et encore.\r\nSource\r\n\u2013\r\nSource\r\n\r\n---\r\n\r\n## Il est design\u00e9 ton logiciel ?\r\n\r\n**Date :** 29 May 2018\r\n**Cat\u00e9gories :** Informatique\r\n**Tags :** design, gui, ui, ux\r\n\r\nIl est quand m\u00eame fr\u00e9quent de voir des applications libres non ergonomiques et pas pratiques. Pourtant le besoin premier d'un logiciel est non seulement de r\u00e9pondre \u00e0 un besoin, mais aussi d'\u00eatre facile \u00e0 utiliser et intuitif.\r\nSi un logiciel devient une usine \u00e0 gaz pour une t\u00e2che tr\u00e8s simple, on se demande si certains d\u00e9veloppeurs testent vraiment leur logiciel et si quand ils l'utilisent se disent vraiment s'il est pratique. Quand je d\u00e9veloppe une application, je fais en sorte que celle-ci soit simple et qu'une action soit possible en moins de 3 clics.\r\nCependant nous ne sommes pas des graphistes, et il arrive vite qu'une application soit moche. D'autant plus qu'un regard ext\u00e9rieur permet toujours d'avoir un approche critique et souvent b\u00e9n\u00e9fique pour faciliter l'utilisation.\r\nCet article\r\nDesigners & Logiciels libres : et si on collaborait ?\r\nmontre que des designers cherchent \u00e0 mettre en place leur connaissance, \u00e0 s'entra\u00eener, mais recherchent des projets sur lesquels ils pourraient","blog_gen_featured_img_prompt":"Illustration \u00e9ditoriale pour un blog informatique : plusieurs petits blocs de code abstraits convergent vers une branche centrale unique, tandis qu\u2019une boucle de v\u00e9rification entoure le point de fusion. Composition claire, style vectoriel contemporain l\u00e9g\u00e8rement textur\u00e9, ambiance de collaboration technique, palette bleu nuit, turquoise et orange doux, aucun logo, aucun texte, format horizontal 16:9.","blog_gen_inline_img_prompts":"[{\"placeholder\":\"[IMAGE:1]\",\"prompt\":\"Sch\u00e9ma conceptuel \u00e9ditorial, sans texte : \u00e0 gauche une longue branche de d\u00e9veloppement accumule de nombreux blocs, \u00e0 droite plusieurs branches tr\u00e8s courtes rejoignent r\u00e9guli\u00e8rement un tronc central ; petits symboles de v\u00e9rification autour des fusions. Design vectoriel lisible, fond clair, bleu p\u00e9trole et orange, format horizontal 16:9, aucun logo.\",\"alt_text\":\"Comparaison visuelle entre branche longue et int\u00e9grations fr\u00e9quentes sur le trunk\",\"reason\":\"Illustrer la diff\u00e9rence entre une grosse fusion tardive et de petites int\u00e9grations r\u00e9guli\u00e8res.\"},{\"placeholder\":\"[IMAGE:2]\",\"prompt\":\"Illustration proc\u00e9durale d\u2019un flux de d\u00e9veloppement logiciel : petit changement de code, tests automatis\u00e9s, \u00e9change entre deux d\u00e9veloppeurs, int\u00e9gration dans une branche commune et possibilit\u00e9 de retour arri\u00e8re ; \u00e9l\u00e9ments reli\u00e9s par un parcours visuel simple, sans mots ni chiffres. Style \u00e9ditorial vectoriel sobre, bleu nuit, vert d\u2019eau et touches orange, fond clair, format horizontal 16:9.\",\"alt_text\":\"Flux de v\u00e9rification et d\u2019int\u00e9gration de petits changements de code\",\"reason\":\"Rendre concret le circuit de contr\u00f4les \u00e0 pr\u00e9parer avant d\u2019acc\u00e9l\u00e9rer les int\u00e9grations.\"}]","blog_gen_model":"gpt-6-sol","blog_gen_image_model":"gpt-image-2.5-flare","blog_gen_timestamp":"2026-11-02T09:54:05.248Z","blog_gen_type_article":"retour_experience","blog_gen_longueur_cible":"1200","footnotes":""},"categories":[3],"tags":[528,530,320,529,531],"class_list":["post-997","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatique","tag-developpement-logiciel","tag-integration-continue","tag-intelligence-artificielle","tag-pull-requests","tag-qualite-du-code"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Trunk-based development : faut-il abandonner les PR ?<\/title>\n<meta name=\"description\" content=\"Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Trunk-based development : faut-il abandonner les PR ?\" \/>\n<meta property=\"og:description\" content=\"Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/\" \/>\n<meta property=\"og:site_name\" content=\"Le blog de Jean-Mich\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-02T10:11:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-02T10:11:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/featured-997-1024x683.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"jeanmich\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"jeanmich\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/\"},\"author\":{\"name\":\"jeanmich\",\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/#\\\/schema\\\/person\\\/89350a073becdf7525c8107c37794900\"},\"headline\":\"Trunk-based development : la fin des pull requests\",\"datePublished\":\"2026-11-02T10:11:06+00:00\",\"dateModified\":\"2026-11-02T10:11:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/\"},\"wordCount\":1379,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/featured-997.png\",\"keywords\":[\"d\u00e9veloppement logiciel\",\"int\u00e9gration continue\",\"intelligence artificielle\",\"pull requests\",\"qualit\u00e9 du code\"],\"articleSection\":[\"Informatique\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/\",\"url\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/\",\"name\":\"Trunk-based development : faut-il abandonner les PR ?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/featured-997.png\",\"datePublished\":\"2026-11-02T10:11:06+00:00\",\"dateModified\":\"2026-11-02T10:11:07+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/#\\\/schema\\\/person\\\/89350a073becdf7525c8107c37794900\"},\"description\":\"Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/featured-997.png\",\"contentUrl\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/featured-997.png\",\"width\":1536,\"height\":1024,\"caption\":\"Petites modifications int\u00e9gr\u00e9es \u00e0 une branche principale en trunk-based development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/trunk-based-development-la-fin-pull-requests\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Trunk-based development : la fin des pull requests\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/\",\"name\":\"Le blog de Jean-Mich\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/#\\\/schema\\\/person\\\/89350a073becdf7525c8107c37794900\",\"name\":\"jeanmich\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/816266d852c4595a2bfa578a991fa68bb8ed5e0217f3565158ca20c139873bda?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/816266d852c4595a2bfa578a991fa68bb8ed5e0217f3565158ca20c139873bda?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/816266d852c4595a2bfa578a991fa68bb8ed5e0217f3565158ca20c139873bda?s=96&d=mm&r=g\",\"caption\":\"jeanmich\"},\"url\":\"https:\\\/\\\/jm.garreta.eu\\\/blog\\\/author\\\/jeanmich\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Trunk-based development : faut-il abandonner les PR ?","description":"Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/","og_locale":"fr_FR","og_type":"article","og_title":"Trunk-based development : faut-il abandonner les PR ?","og_description":"Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.","og_url":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/","og_site_name":"Le blog de Jean-Mich","article_published_time":"2026-11-02T10:11:06+00:00","article_modified_time":"2026-11-02T10:11:07+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/featured-997-1024x683.png","type":"image\/png"}],"author":"jeanmich","twitter_misc":{"\u00c9crit par":"jeanmich","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#article","isPartOf":{"@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/"},"author":{"name":"jeanmich","@id":"https:\/\/jm.garreta.eu\/blog\/#\/schema\/person\/89350a073becdf7525c8107c37794900"},"headline":"Trunk-based development : la fin des pull requests","datePublished":"2026-11-02T10:11:06+00:00","dateModified":"2026-11-02T10:11:07+00:00","mainEntityOfPage":{"@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/"},"wordCount":1379,"commentCount":0,"image":{"@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#primaryimage"},"thumbnailUrl":"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/featured-997.png","keywords":["d\u00e9veloppement logiciel","int\u00e9gration continue","intelligence artificielle","pull requests","qualit\u00e9 du code"],"articleSection":["Informatique"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/","url":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/","name":"Trunk-based development : faut-il abandonner les PR ?","isPartOf":{"@id":"https:\/\/jm.garreta.eu\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#primaryimage"},"image":{"@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#primaryimage"},"thumbnailUrl":"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/featured-997.png","datePublished":"2026-11-02T10:11:06+00:00","dateModified":"2026-11-02T10:11:07+00:00","author":{"@id":"https:\/\/jm.garreta.eu\/blog\/#\/schema\/person\/89350a073becdf7525c8107c37794900"},"description":"Le trunk-based development promet des int\u00e9grations plus rapides. Faut-il pour autant abandonner les pull requests \u00e0 l\u2019\u00e8re de l\u2019IA ? Voici ce qui compte vraiment.","breadcrumb":{"@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#primaryimage","url":"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/featured-997.png","contentUrl":"https:\/\/jm.garreta.eu\/blog\/wp-content\/uploads\/2026\/11\/featured-997.png","width":1536,"height":1024,"caption":"Petites modifications int\u00e9gr\u00e9es \u00e0 une branche principale en trunk-based development"},{"@type":"BreadcrumbList","@id":"https:\/\/jm.garreta.eu\/blog\/trunk-based-development-la-fin-pull-requests\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/jm.garreta.eu\/blog\/"},{"@type":"ListItem","position":2,"name":"Trunk-based development : la fin des pull requests"}]},{"@type":"WebSite","@id":"https:\/\/jm.garreta.eu\/blog\/#website","url":"https:\/\/jm.garreta.eu\/blog\/","name":"Le blog de Jean-Mich","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jm.garreta.eu\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/jm.garreta.eu\/blog\/#\/schema\/person\/89350a073becdf7525c8107c37794900","name":"jeanmich","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/816266d852c4595a2bfa578a991fa68bb8ed5e0217f3565158ca20c139873bda?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/816266d852c4595a2bfa578a991fa68bb8ed5e0217f3565158ca20c139873bda?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/816266d852c4595a2bfa578a991fa68bb8ed5e0217f3565158ca20c139873bda?s=96&d=mm&r=g","caption":"jeanmich"},"url":"https:\/\/jm.garreta.eu\/blog\/author\/jeanmich\/"}]}},"_links":{"self":[{"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/posts\/997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/comments?post=997"}],"version-history":[{"count":3,"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/posts\/997\/revisions"}],"predecessor-version":[{"id":1003,"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/posts\/997\/revisions\/1003"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/media\/999"}],"wp:attachment":[{"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/media?parent=997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/categories?post=997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jm.garreta.eu\/blog\/wp-json\/wp\/v2\/tags?post=997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}