
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 caracteristiques de ces fichiers rendent les collisions routinieres : la Metadata API renvoie les elements dans un ordre non deterministe, les fichiers monolithiques comme les profils accumulent des modifications issues de travaux sans lien, et les equipes mergent depuis des sandboxes qui ont derive. La plupart des conflits que vous combattez sont faux, du bruit plutot qu'un vrai desaccord. Vous les stoppez avec le source tracking, des branches de courte duree, des permission sets au lieu de profils, et un merge conscient des metadata plutot qu'un git diff brut.
Un conflit de metadata est un conflit de merge dans les fichiers XML qui definissent votre org : objets, champs, Apex, flows, profils, permission sets et layouts. Il survient quand deux branches modifient le meme fichier et que git ne peut pas les reconcilier automatiquement. Comme Salesforce represente la configuration sous forme de texte, chaque clic d'admin et chaque commit de developpeur devient a terme une ligne dans un fichier que git doit merger.
Le piege est que beaucoup de ces conflits sont faux. Git signale une collision la ou il n'y a aucun desaccord semantique reel, seulement du XML reordonne ou reformate.
Quatre causes racines, a peu pres par frequence :
Certains types de fichiers sont bien plus sujets aux conflits que d'autres :
Quand un conflit tombe :
Un merge git a trois voies brut ne peut pas distinguer du XML reordonne d'un vrai changement, c'est pourquoi tout l'ecosysteme Salesforce DevOps a converge 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 semantique ou conscient des metadata qui resout 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 equilibre different entre automatisation et controle. Serpent adopte une approche git-native : il lit vos metadata de facon 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 duree restent peu couteuses a merger.
La plupart des conflits de metadata Salesforce sont-ils reels ?
Non. Beaucoup sont de faux conflits causes par l'ordre XML non deterministe 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 cote a cote et git les lit comme une collision.
Les permission sets previennent-ils les conflits ?
Ils les reduisent. Des permission sets plus petits et cibles font que moins de personnes editent le meme fichier, ce qui reduit les chevauchements.
En quoi les branches de courte duree aident-elles ?
Merger vers le tronc chaque jour garde la divergence faible, donc chaque merge reconcilie des heures de changement au lieu de semaines.
Le CI/CD peut-il eliminer les conflits de metadata ?
Pas entierement, mais le source tracking, les merges frequents et l'outillage conscient des metadata transforment la plupart des conflits en resolutions automatiques.
Sans engagement.