
Andrew Hanna

Andrew Hanna

Les conflits de metadata dans Salesforce arrivent parce que la configuration de votre org vit dans des milliers de fichiers XML, et trois caractéristiques de ces fichiers rendent les collisions routinières : la Metadata API renvoie les éléments dans un ordre non déterministe, les fichiers monolithiques comme les profils accumulent des modifications issues de travaux sans lien, et les équipes mergent depuis des sandboxes qui ont dérivé. La plupart des conflits que vous combattez sont faux, du bruit plutôt qu'un vrai désaccord. Vous les stoppez avec le source tracking, des branches de courte durée, des permission sets au lieu de profils, et un merge conscient des metadata plutôt qu'un git diff brut.
Un conflit de metadata est un conflit de merge dans les fichiers XML qui définissent votre org : objets, champs, Apex, flows, profils, permission sets et layouts. Il survient quand deux branches modifient le même fichier et que git ne peut pas les réconcilier automatiquement. Comme Salesforce représente la configuration sous forme de texte, chaque clic d'admin et chaque commit de développeur devient à terme une ligne dans un fichier que git doit merger.
Le piège est que beaucoup de ces conflits sont faux. Git signale une collision là où il n'y a aucun désaccord sémantique réel, seulement du XML réordonné ou reformaté.
Quatre causes racines, à peu près par fréquence :
Certains types de fichiers sont bien plus sujets aux conflits que d'autres :
Quand un conflit tombe :
Un merge git à trois voies brut ne peut pas distinguer du XML réordonné d'un vrai changement, c'est pourquoi tout l'écosystème Salesforce DevOps a convergé vers le merge conscient des metadata. Pour la méthode complète, y compris la lecture d'un diff de profil et le traitement d'un Flow en conflit, voir Résoudre les conflits de métadonnées Salesforce sans perdre le travail de personne.
Plusieurs plateformes proposent un merge sémantique ou conscient des metadata qui résout automatiquement les faux conflits et ne signale que les vrais. Gearset, Copado, AutoRABIT, Flosum, Salto et Blue Canvas travaillent tous dans ce domaine, chacun avec un équilibre différent entre automatisation et contrôle. Serpent adopte une approche git-native : il lit vos metadata de façon contextuelle, absorbe le bruit XML non fonctionnel, et ne fait remonter que les vrais conflits pour qu'un humain tranche, si bien que les branches de courte durée restent peu coûteuses à merger.
La plupart des conflits de metadata Salesforce sont-ils réels ?
Non. Beaucoup sont de faux conflits causés par l'ordre XML non déterministe ou le reformatage, et un merge conscient des metadata les ignore automatiquement.
Pourquoi les profils sont-ils si sujets aux conflits ?
Un profil est un grand fichier contenant les permissions de chaque objet et champ, donc des modifications sans lien se retrouvent côte à côte et git les lit comme une collision.
Les permission sets préviennent-ils les conflits ?
Ils les réduisent. Des permission sets plus petits et ciblés font que moins de personnes éditent le même fichier, ce qui réduit les chevauchements.
En quoi les branches de courte durée aident-elles ?
Merger vers le tronc chaque jour garde la divergence faible, donc chaque merge réconcilie des heures de changement au lieu de semaines.
Le CI/CD peut-il éliminer les conflits de metadata ?
Pas entièrement, mais le source tracking, les merges fréquents et l'outillage conscient des metadata transforment la plupart des conflits en résolutions automatiques.
Sans engagement.