
Andrew Hanna

Andrew Hanna

En bref : un conflit de fusion, ce sont deux modifications concurrentes de la meme partie d'un fichier que le gestionnaire de versions ne sait pas reconcilier seul. Sur Salesforce, la plupart ne sont pas reels : c'est du bruit d'ordonnancement XML qu'un merge conscient des metadonnees devrait regler sans deranger personne. La vraie question porte sur les conflits qui survivent a ce filtre, et c'est le premier endroit d'un pipeline de livraison ou l'IA justifie vraiment sa place.
Deux raisons structurelles, et ce n'est la faute de personne.
D'abord, les fichiers sont enormes. Un Profile decrit les permissions de toute l'org, donc deux developpeurs travaillant sur deux objets sans rapport peuvent produire des modifications adjacentes dans un seul fichier. Profiles, permission sets, page layouts, pages Lightning et custom labels sont les suspects habituels.
Ensuite, l'ordre des elements dans ces fichiers n'est pas stable. Recuperez deux fois le meme Profile et les entrees de liste peuvent revenir dans un autre ordre. Git voit des lignes reordonnees et appelle cela un changement, meme quand le sens des permissions est identique. C'est ainsi qu'une equipe passe un jeudi apres-midi a resoudre un conflit qui n'existe pas.
Cette distinction est tout l'article, autant l'enoncer clairement.
Traiter les deux comme un seul probleme, voila pourquoi l'outillage de conflits a mauvaise reputation. Il faut deux mecaniques distinctes.
Un merge conscient des metadonnees analyse le XML en elements dotes de cles stables et fusionne element par element au lieu de ligne par ligne. Le merge driver Git pour Salesforce en open source illustre bien l'approche : il identifie des cles uniques dans les elements de metadonnees, fusionne les entrees individuelles plutot que des tableaux entiers, gere un reordonnancement deterministe pour les types reellement ordonnes comme les value sets de listes de selection et les affectations de types d'enregistrement, et ne retombe sur un conflit brut que lorsqu'il ne reconnait pas une cle. Les outils commerciaux font de meme ; Gearset decrit un algorithme de merge semantique conscient des metadonnees exactement pour cette raison.
Ce n'est pas de l'IA et cela ne doit pas l'etre. C'est du parsing, et le parsing doit rester deterministe, rapide et ennuyeux. Bien fait, il elimine la grande majorite des conflits Salesforce avant qu'un humain les voie.
Ce qu'il ne peut pas faire, c'est decider. Quand les deux branches donnent a la meme cle des valeurs differentes, un fusionneur deterministe correct refuse, et il a raison de refuser.
Exactement la, sur ce refus. La resolution de conflits est un excellent premier travail pour l'IA en livraison, pour quatre raisons.
Comparez avec demander a un modele d'ecrire de l'Apex : entree non bornee, contexte ambigu, verification couteuse. La resolution de conflits a la forme inverse, d'ou l'interet de commencer par la.
Oui, et vite. Le DevOps Center de Salesforce propose desormais la resolution de conflits via des outils MCP, ou de grands modeles de langage analysent les conflits, les expliquent en langage naturel et suggerent des solutions depuis l'IDE. Quand l'editeur de la plateforme met l'analyse de conflits par LLM dans la boite, le debat sur sa place dans un pipeline est clos.
Serpent aborde le sujet par le meme angle. C'est le seul
serveur MCP natif du DevOps Salesforce, avec
resolve_metadata_conflict aux cotes de plan_deploy,
create_pull_request et trigger_pipeline, si bien que la meme
resolution se pilote depuis Claude, Cursor, Windsurf ou Agentforce, avec controles
prealables et approbation humaine obligatoire. La revue de code par IA tourne sur tous
les plans, y compris le gratuit, parce que la revue et le conflit sont la meme
conversation sur le meme changement.
L'IA doit-elle fusionner automatiquement sans relecture ?
Non. Proposer et expliquer, puis exiger une approbation humaine, en particulier sur les Profiles et permission sets ou une mauvaise fusion modifie l'acces de chaque utilisateur affecte.
Le merge semantique rend-il l'IA inutile ?
Au contraire. Il elimine les faux conflits, donc il ne reste que les arbitrages ou du contexte supplementaire aide.
Pourquoi les Profiles sont-ils les pires ?
Ce sont d'enormes fichiers uniques couvrant toute l'org, donc des travaux sans rapport atterrissent sur des lignes voisines, et l'ordre de leurs listes n'est pas garanti stable entre deux recuperations.
De quel contexte a besoin un resolveur IA ?
Le diff a trois voies, le ticket lie, les messages de commit et l'etat de l'org cible. Sans cela, il devine avec plus d'assurance qu'un humain.
Comment savoir qu'une resolution etait correcte ?
Validez le resultat fusionne contre l'org cible avant que la fusion n'atterrisse, et gardez une trace de ce qui a ete propose et approuve.
Sans engagement.