Intégration d'un workflow git avec l'outil de Comparaison de Traitements.

Vous pouvez configurer un outil git (comm Git en ligne de commande, TortoiseGit et Sourcetree) pour interfacer directement avec l'outil de Comparaison de Traitements des manières suivantes :

  • Affichage des différences (git diff).
  • Résolution de conflit lors d'une tentative de fusion (git merge)

Affichage de différences avec l'intégration git

Une commande git diff (ou son équivalent) peut lancer l'outil de Comparaison de Traitements, ouvert aux deux versions du dépôt. Vous pouvez travailler dans l'outil comme décrit dans Comparaison de Traitements.

Résolution de conflits de fusion avec l'intégration git

Une commande git merge (ou son équivalent) entre deux fichiers de traitement en conflit peut lancer l'outil Comparaison de Traitements. Vous pouvez comparer les traitements de trois façons :

  • Votre version du traitement ("la nôtre") et la version avec laquelle vous êtes en conflit ("la leur"). Cette vue vous permet de voir les différences et d'effectuer des actions Copier à gauche pour résoudre les conflits entre votre version et la leur. Copier à gauche effectue effectivement une fusion qui est directement reflétée dans votre outil git.
  • La version du traitement "de base" et votre version du traitement ("la nôtre"). La version "de base" du traitement est la version dont la vôtre et "la leur" sont issues avant les dernières révisions. Cette vue n'est donnée qu'à titre d'information ; aucune des deux versions du traitement n'est modifiable.
  • La version "de base" du traitement et "leur" version du traitement. Cette vue est à titre information uniquement, aucun traitement n'est éditable.

Chaque vue peut être sélectionnée sous forme d'onglet en haut à gauche de l'outil de Comparaison de Traitement : (Selon les configurations en de Configuration de l'intégration (ci-dessous), les onglets apparaissent comme ceci, mais vous pouvez ajuster les étiquettes en fonction de vos propres paramètres).

Ce flux de travail offre également la possibilité de marquer explicitement une fusion comme étant résolue. Pour marquer une fusion comme résolue, une fois que votre version du traitement est libre de tout conflit avec "la leur", cliquez sur Résoudre dans la barre d'outils centrale. Le marquage (flag) résolu se reflète en conséquence dans votre outil git.

Configuration de l'intégration

Les instructions suivantes sont un guide pour configurer l'outil Comparaison de Traitements afin qu'il s'interface avec les outils git suivants :

  • Git en ligne de commande
  • TortoiseGit
  • Sourcetree

Ces instructions se concentrent sur un environnement Windows ; toutefois, des configurations similaires peuvent être effectuées sous Linux et MacOS pour obtenir le même résultat.

Note  Safe Software Inc. a testé cette intégration uniquement avec ces outils git. Il est possible de configurer l'intégration avec d'autres outils, y compris ceux qui fonctionnent avec des systèmes de contrôle de version autres que git. Cependant, ces configurations n'ont pas été testées par Safe Software Inc..

Prérequis

Git pour Windows doit être installé, ainsi qu'une version récente de FME Flow. Assurez-vous que le répertoire d'installation de FME est défini dans la variable PATH afin que FME Workbench puisse être lancé directement à partir de la ligne de commande.

Pour tester correctement, il faut également disposer d'un référentiel qui contient, ou contiendra, des traitements modifiables dans le temps.

Git en ligne de commande

  1. Ajoutez une ligne à votre fichier .gitattributes pour lancer les pilotes personnalisés fmeworkbench sur git diff et fmeworkbench sur git merge. (Le fichier .gitattributes peut résider dans n'importe quel dossier du répertoire qui contient vos traitements. La racine du répertoire est l'endroit le plus simple). Ajoutez la ligne suivante :
  2. *.fmw diff=fmeworkbench merge=fmeworkbench

    Cette ligne peut être complétée par d'autres valeurs, comme -text, qui indique à git de sauter les conversions de fin de ligne. Pour plus d'options, voir le guide gitattributes dans la documentation de git.

  3. Définition de driver diff fmeworkbench personnalisé qui lance FME Workbench.
  4. Créez un script shell appelé workspace_diff.sh dans un répertoire accessible à votre environnement PATH. Placez le contenu suivant dans le script shell :

    #!/bin/bash

    # Les arguments sont : path old-file old-hex old-mode new-file new-hex new-mode

     

    echo "Comparing changes on '" $1 "' using FME Workspace Compare"

     

    fmeworkbench -TITLE-OVERRIDE "[$1] Compare Changes" -COMPARE-TITLE1 "Left" -COMPARE-TITLE2 "Right" -COMPARE $5 $2

     

    exit 0

    Note  Le paramètre TITLE-OVERRIDE suggéré peut être paramétré selon votre convenance.
  5. Ajoutez ce qui suit à votre fichier de configuration git pour enregistrer le script shell en tant que pilote de diff personnalisé :
  6. [diff "fmeworkbench"]

    command = workspace_diff.sh

    binary = true

    Désormais, l'utilisation d'une commande git diff sur un fichier .fmw;, FME Workbench lancera l'outil Comparaison de Traitements, qui comparera les deux fichiers.

  7. Définition du driver merge fmeworkbench personnalisé qui lance FME Workbench.
  8. Créez un script shell appelé workspace_merge.sh dans un répertoire accessible à votre environnement PATH. Placez le contenu suivant dans le script shell :

    #!/bin/bash

    # Arguments are: ancestor-file current-file other-file path

    echo "Launching FMEWorkbench to merge " $4

     

    fmeworkbench -TITLE-OVERRIDE "[$4] Merge" -COMPARE-BASE $1 -COMPARE-BASE-TITLE "Base" -COMPARE-TITLE1 "Ours" -COMPARE-TITLE2 "Theirs" -COMPARE $2 $3

  9. Ajoutez ce qui suit à votre fichier de configuration git pour enregistrer le script shell en tant que driver merge personnalisé :
  10. [merge "fmeworkbench"]

    name = FME Workbench Merge Driver

    driver = workspace_merge.sh %O %A %B %P

    Désormais, lors de l'utilisation d'une commande git merge sur un fichier .fmw, l'outil Comparaison de Traitements de FME Workbench sera lancé.

TortoiseGit

  1. Configuration de l'intégration  Diff
    1. Aller dans les paramètres TortoiseGit
    2. Dans le panneau de gauche, sélectionne DiffViewer.
    3. Dans le panneau  Diff Viewer, cliquer sur Advanced.

    4. Dans la fenêtre de paramètres avancés, cliquer sur Add.
    5. Dans la boîte de dialogue "Edit extension specific diff program", spécifiez ce qui suit :
      • Extension: .fmw
      • External Program: <fme install dir>/fmeworkbench.exe -COMPARE %base %mine

    6. Cliquer sur OK pour clore chaque fenêtre.
    7. Maintenant, lors de l'utilisation de TortoiseGit pour comparer les révisions de fichiers de traitement, FME Workbench lancera l'outil de Comparaison de Traitement pour comparer les deux fichiers.

  2. Configuration de l'intégration de fusion
    1. Aller dans les paramètres TortoiseGit
    2. Dans le volet de gauche, sélectionner Merge Tool.
    3. Dans le volet Merge Tool, cliquer sur Advanced.

    4. Dans les paramètres avancés, cliquer sur Ajouter.
    5. Dans la fenêtre "Add extension specific merge program", spécifier ce qui suit :
      • Extension: .fmw
      • External Program: <fme install dir>/fmeworkbench.exe -MERGE-TARGET %merged -COMPARE-BASE %base -COMPARE %mine %theirs

    6. Cliquer OK pour clore chaque fenêtre.
    7. Maintenant, lorsque vous utilisez TortoiseGit pour fusionner les révisions d'un fichier de traitement, l'outil Comparaison de Traitement de FME Workbenchs sera lancé.

Sourcetree

Warning  Si le répertoire a déjà été configuré pour lancer FME Workbench pour Git en ligne de commande (ci-dessus), SourceTree peut respecter ces paramètres et renvoyer des résultats inattendus dans Sourcetree. Avant de poursuivre, nous recommandons de supprimer les drivers personnalisés et leurs références associées dans le fichier .gitattributes.
Warning  Lors de la configuration d'une application à lancer lors d'une opération de comparaison ou de fusion, Sourcetree ne fait pas de distinction entre les types de fichiers. Ne configurer l'intégration que pour lancer FME Workbench pour tous les types de fichiers, en plus des fichiers de traitement (.fmw), est un flux de travail acceptable.
  1. Configuration de l'intégration  Diff
    1. Aller dans Tools > Options.
    2. Cliquer sur l'onglet Diff
    3. Sous External Diff / Merge, paramétrer :
      • External Diff Tool: Custom
      • Diff Command: Naviguer vers fmeworkench.exe
      • Arguments (corresponding to Diff Command): -COMPARE \"$LOCAL\" \"$REMOTE\"
    4. Cliquez sur OK.
    5. Sélectionner un commit qui a apporté un changement à un fichier .fmw, puis cliquez sur ce fichier .fmw.
    6. Cliquez sur l'icône des paramètres de diff, et sélectionnez External Diff pour lancer l'outil Comparaison de Traitements dans FME Workbench.
  2. Configuration de l'intégration de fusion
    1. Aller dans Tools > Options.
    2. Cliquer sur l'onglet Diff
    3. Sous External Diff / Merge, paramétrer :
      • External Merge Tool: Custom
      • Diff Command: Naviguer vers fmeworkench.exe
      • Arguments (corresponding to Merge Command): -MERGE-TARGET \"$MERGED\" -COMPARE-BASE \"$BASE\" -COMPARE \"$LOCAL\" \"$REMOTE\"
    4. Cliquez sur OK.
    5. Sélectionnez une branche à fusionner qui comporte une modification conflictuelle dans un fichier .fmw, et fusionnez-la.
    6. Dans le menu contextuel du fichier en conflit, sélectionnez Resolve Conflicts > Launch External Merge Tool pour lancer l'outil de Comparaison de Traitements dans FME Workbench.