Skip to main content

Conflits de fusion, « problèmes relationnels »

Une opération de fusion fusionne le contenu de deux branches qui ont un ancêtre commun mais qui ont reçu des modifications différentes. La fusion ciblée de succursales se fait principalement dans Branches Git visualiser à l'aide de la Fusionner commande. Une opération de fusion est également incluse dans une action d'extraction.

Différents états des branches source et cible sont détectés lors de l'opération de fusion et sont appelés conflits. Une structure de projet non autorisée résultant d'une fusion est identifiée comme un « problème relationnel ». En fonction de l'option sélectionnée, CODESYS Git essaie de résoudre automatiquement ces conflits dans la mesure du possible, ou cette résolution est laissée à l'utilisateur.

Une fois le conflit résolu, CODESYS Git essaie toujours de Resynchroniser (relisez le projet depuis le stockage de projets). Cela se fait en fermant le projet qui est ouvert dans CODESYS et en créer un nouveau à partir du stockage.

CODESYS Git fait la distinction entre deux types de problèmes à résoudre qui peuvent survenir lors de la fusion :

  • Conflits: Conflits purement Git : un ou plusieurs objets ont reçu des modifications concurrentes. Il peut s'agir de différentes modifications du contenu d'un objet.

    La "stratégie de conflit de fusion" de base est définie dans le Options de fusion Git dans le Branches Git voir. En fonction de ce paramètre, soit une résolution automatique des conflits s'exécute chaque fois que possible, soit une action d'acceptation de base est effectuée dans une direction spécifique, soit les conflits sont gérés manuellement.

    En cas de résolution manuelle des conflits, les objets en conflit sont affichés tels quels dans la Statut et mise en scène voir. Double-cliquer sur un objet en conflit ouvre une vue de comparaison. Dans la vue de comparaison, les changements provenant des deux branches sont affichés côte à côte. Vous pouvez nettoyer les différences de contenu en les acceptant spécifiquement. S'il s'agit uniquement de conflits d'espace de noms, vous devez les résoudre en les renommant ou en les supprimant dans l'arborescence du projet. Cliquez sur "Appliquer" pour résoudre le conflit. Après cela, l'objet précédemment en conflit est automatiquement déplacé vers la zone "Modifications par étapes".

  • "Problèmes relationnels" : des modifications concurrentes ont entraîné une structure de projet non valide dans CODESYS, qui ne peut pas être géré par la fonction de fusion Git. Des modifications peuvent avoir été apportées en externe dans le système de fichiers avec des outils externes. Soit une création concurrente d'un objet de même type et/ou de même nom a été commitée depuis différentes branches, et cet objet se trouve alors dans le même espace de noms dans le CODESYS projet. Ceci n'est pas autorisé dans un CODESYS projet. Ou une relation d'objet père/enfant non valide s'est produite. Une autre possibilité est que les problèmes relationnels proviennent de fusions précédentes, où ils ont été délibérément ignorés afin de pouvoir continuer à travailler pour le moment.

    Par exemple, il arrive que deux configurations d'alarme soient insérées sous un appareil, ce qui n'est pas autorisé.

    L'utilisateur doit corriger manuellement la structure du projet en utilisant les moyens disponibles (fusionner un objet dans un autre, supprimer, renommer ou déplacer) pour obtenir à nouveau un projet cohérent.

    Important

    À partir de la version 1.2.0.0, un projet peut également être traité plus avant avec des problèmes de relation existants (ignorer). Attention : Dans ce cas, les modifications apportées au projet sont annulées par une resynchronisation ultérieure. Raison : L'opération de resynchronisation charge la version du projet à partir du système de fichiers qui a été enregistrée avant que le problème de relation

Dans le Statut et mise en scène vue, vous, en tant qu'utilisateur, pouvez vérifier et modifier un conflit comme suit :

  • Des commandes utiles sont disponibles dans le menu contextuel d'un objet en conflit. La sélection actuelle dépend de la situation :

    Afficher tous les objets concernés / Afficher cet objet: Les objets ou l'objet seront mis en surbrillance dans Dispositifs vision du projet.

    Résoudre en utilisant le leur: Le statut de la branche source est appliqué.

    Résoudre en utilisant le nôtre: Le statut de la branche cible est appliqué.

    Résoudre automatiquement: CODESYS Git essaie de consolider les changements lui-même.

    Marquer comme résolu: L'objet qui existe actuellement dans le projet est appliqué et considéré comme la résolution du conflit. L'objet correspondant a été mis en scène.

    Ignorer le problème de relation: Le problème de relation est ignoré jusqu'à la prochaine resynchronisation. Cela peut être utile lorsque vous souhaitez uniquement pouvoir continuer à travailler sur un projet et que le conflit n'a pas d'importance pour cela.

  • Double-cliquer sur un objet en conflit ouvre la vue de comparaison des contenus des branches source et cible. Dans le cas de contenus concurrents, les contenus peuvent être appliqués d'une branche à l'autre comme vous le souhaitez.

Dans le messages vue, vous pouvez double-cliquer sur un message d'erreur pour un conflit afin d'ouvrir l'objet concerné.