Résoudre les conflits du contrôle de version Team Foundation

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Un avantage de l’utilisation de Team Foundation Version Control (TFVC) pour gérer vos fichiers est que plusieurs personnes peuvent travailler simultanément sur un fichier. L’inconvénient est que parfois vous devez résoudre les conflits avant de pouvoir obtenir, archiver, déréserver, fusionner ou restaurer vos fichiers.

Bien qu'il puisse être frustrant de rencontrer des conflits, le système fournit de la documentation et des outils pour vous aider à comprendre et à résoudre les conflits.

Vous pouvez également résoudre les conflits à partir de la ligne de commande à l’aide de la commande Résoudre.

Conseil

Si votre équipe doit collaborer pour résoudre un grand nombre de conflits, par exemple après une opération de fusion dans un codebase volumineux, un espace de travail public sur une machine de développement partagée peut vous aider. Pour plus d’informations, consultez Créer et utiliser des espaces de travail.

Résoudre les conflits

Vous pouvez utiliser la fenêtre Résoudre les conflits de Visual Studio pour résoudre les conflits qui vous bloquent. Pour ouvrir la fenêtre, sélectionnez Actions>Résoudre les conflits dans la page Modifications en attente de Team Explorer.

Capture d’écran de l’utilisation de la fenêtre Résoudre les conflits pour résoudre les conflits.

Par défaut, la fenêtre affiche uniquement les conflits provoqués par l'opération la plus récente que vous avez tenté d'exécuter. Dans cet état, la fenêtre affiche un message commençant par : Filtre de chemin d’accès appliqué. Pour afficher tous les conflits dans votre espace de travail, choisissez Obtenir tous les conflits. Un message qui commence par : <N> Conflit(s) apparaît.

Si beaucoup de temps s'est écoulé depuis que vous avez modifié les fichiers de votre espace de travail, de nouveaux conflits ont pu se produire. Pour actualiser la fenêtre Résoudre les conflits, choisissez Actualiser.

Capture d’écran montrant la fenêtre Résoudre les conflits.

Chaque conflit contient des informations et parfois des liens qui peuvent vous aider à le résoudre. Pour obtenir plus d’informations, vous pouvez sélectionner le conflit et choisir l’une des options suivantes :

  • Icône Historique.Historique pour afficher l’historique du fichier. Si l’opération qui a provoqué le conflit est une fusion ou une restauration, vous pouvez choisir l’option de menu située à droite de l’Historique, puis sélectionner Historique de la source ou Historique de la cible. Pour plus d’informations, consultez Obtenir l’historique d’un élément.

  • Icône Comparer.Comparez ou sélectionnez la flèche déroulante en regard de l’icône, puis choisissez une commande. La fenêtre Diff s’ouvre.

  • Icône Annoter.Annotez pour afficher les détails de toutes les modifications apportées à la version la plus récente du fichier, y compris les personnes qui ont apporté chaque modification et quand elles l’ont apportée. Consultez Afficher les modifications de fichier à l’aide d’un annotation.

Résoudre automatiquement tous les conflits

Par défaut, le système tente automatiquement l’opération Tout résoudre automatiquement sur les conflits, sauf si vous désactivez cette option. Pour désactiver Tout résoudre automatiquement, choisissez Outils>Options. Dans la boîte de dialogue Options, sous Contrôle de code source>Visual Studio Team Foundation Server, désélectionnez Tentative de résolution automatique des conflits lorsqu’ils sont générés.

Vous pouvez également choisir manuellement Tout résoudre automatiquement dans la fenêtre Résoudre les conflits, puis sélectionner l’une des options suivantes :

  • Tous les types de conflits si vous souhaitez que le système tente de résoudre automatiquement les conflits en utilisant toutes les méthodes heuristiques disponibles.

  • Types de conflits spécifiques si vous souhaitez que le système tente de résoudre les conflits, mais que vous souhaitez exclure quelques méthodes heuristiques.

    La boîte de dialogue Choisir les conflits à résoudre apparaît. Cochez ou décochez les options que vous souhaitez activer ou désactiver, et ensuite choisissez Résoudre automatiquement.

    Le système tente de résoudre automatiquement les conflits affichés dans la fenêtre Modifications en attente. Tout conflit que le système ne peut pas résoudre reste dans la fenêtre. Vous devez résoudre manuellement ces conflits.

Comprendre les options automatiques

Dans certains cas, vous pouvez restreindre les types de conflits automatiquement résolus par la fonctionnalité Tout résoudre automatiquement. Lorsque vous sélectionnez Tout résoudre automatiquement, puis Types de conflits spécifiques, la boîte de dialogue Choisir les conflits à résoudre apparaît.

Capture d’écran montrant la boîte de dialogue Choisir les conflits à résoudre apparaît.

Cause du conflit

Exemple

Sélection de cases à cocher


Des modifications de contenus non conflictuelles ont été effectuées dans chaque version d’un fichier.

Dans la version de fichier située à gauche, un zéro a été ajouté en début de version. Dans la version de fichier située droite, un trois a été ajouté en fin de version :

Modifications de contenu non conflictuelles.

Conflits avec des modifications de contenu

Des modifications de contenu ont été apportées lors d’une opération d’obtention ou d’archivage unique à l’espace de travail, ou lors d’une opération de fusion ou de restauration unique à la version cible.

Les entrées quatre et cinq ont été ajoutées à l’espace de travail ou à la version cible :

Capture d’écran des modifications de contenu uniques dans l’espace de travail ou la cible.

Conflits avec des modifications de contenu apportées uniquement dans l'espace de travail local ou dans la branche cible

Des modifications de contenu ont été apportées lors de l’opération d’obtention ou d’archivage qui sont propres au serveur, ou lors d’une opération de fusion ou de restauration qui sont propres à la version source.

Les entrées quatre et cinq ont été ajoutées au serveur ou à la version source :

Capture d’écran des modifications de contenu uniques dans le serveur ou la source.

Conflits avec des modifications de contenu apportées uniquement dans la version du serveur ou dans la branche source

Un fichier a été renommé sur le serveur lors d’une opération d’obtention ou d’archivage ou dans la branche source lors d’une opération de fusion ou de restauration.

Vous avez extrait un fichier nommé launch.cs et utilisé celui-ci. Pendant ce temps, une autre personne a archivé un ensemble de modifications qui a affecté le même fichier. Cet ensemble de modifications n’a pas modifié le contenu du fichier, mais il a changé le nom du fichier en start.cs.

Conflits causés par le changement de nom de la version du serveur ou de la branche source

Des modifications de contenu communes ont été apportées, lesquelles se sont traduites par un contenu identique dans chaque version. Ou, vous avez modifié un fichier, vous l’avez archivé via une build d’archivage contrôlé et vous avez sélectionné l’option Conserver mes modifications en attente localement.

Des modifications apportées à chaque version se sont traduites par un contenu de fichier identique. Les modifications peuvent être apportées au contenu dans les fichiers, comme indiqué dans l'exemple suivant :

Capture d’écran montrant les modifications de contenu identiques dans les deux versions.

Conflits causés par une modification identique dans le serveur et dans l'espace de travail

Cette option résout également des conflits provoqués par toutes les autres opérations, par exemple, renommer, supprimer, restaurer et créer une branche, qui résultent dans des fichiers identiques.

Conseil

Si vous cochez cette case, lorsque vous continuez, le système résout ces modifications en téléchargeant la version du serveur sur votre espace de travail.

Fusion automatique des conflits sélectionnés

Pour essayer de résoudre les conflits sélectionnés à l’aide de toutes les options de fusion automatique précédentes, sélectionnez un ou plusieurs conflits, puis choisissez Fusionner automatiquement.

Conseil

Vous pouvez maintenir enfoncée la touche Ctrl ou la touche Maj puis sélectionner plusieurs conflits.

Notes

Si Fusionner automatiquement est désactivé, vous devez résoudre manuellement les conflits.

Résoudre manuellement les conflits sélectionnés

Si le système ne peut pas automatiquement résoudre un conflit, ou si vous souhaitez vous assurer que vous comprenez ce qui change, vous devez résoudre le conflit manuellement. Dans chaque conflit, le système affiche les actions que vous pouvez effectuer pour résoudre le conflit. Les actions affichées dépendent du type de conflit et de l’opération qui a provoqué le conflit.

Utiliser la fenêtre Fusionner

Lorsque des modifications de contenu conflictuel provoquent un conflit, vous pouvez choisir de Fusionner les modifications dans l’outil de fusion. La fenêtre Fusionner s’affiche.

Capture d’écran montrant les modifications de fusion dans l’outil de fusion.

Dans la fenêtre Fusionner, vous pouvez :

  • Sélectionnez la disposition de la fenêtre : Affichage vertical, Affichage horizontalou Affichage mixte.
  • Naviguer entre les différences et les conflits.
  • Sélectionner les éléments des versions gauche et droite du fichier pour les inclure dans les résultats.
  • Tapez plus de contenu dans le fichier dans le volet Résultat.
  • Afficher l’historique du fichier. Pour plus d’informations, consultez Obtenir l’historique d’un élément.
  • Comparer les différentes versions du fichier.
  • Annoter le fichier pour savoir qui a modifié l'élément. Pour plus d’informations, consultez Afficher les modifications de fichier à l’aide des annotations.

Lorsque vous êtes satisfait du contenu du volet Résultat, choisissez Accepter la fusion.

Le résultat de la résolution du conflit apparaît dans le volet Résultat.