Bonnes pratiques : Git avec Talend - Cloud

Version
Cloud
Language
Français
Product
Talend Cloud
Module
Studio Talend
Content
Création et développement

Bonnes pratiques : Git avec Talend

Talend fournit des puissantes fonctions de contrôle des versions Git, vous permettant de gérer votre projet sans utiliser d'outils Git externes.

Il existe de nombreux workflows Git. Cet article présente deux des workflows les plus utilisés : le workflow des branches Git de fonctionnalités et le workflow Gitflow. Il fournit une vue d'ensemble de ces deux workflows et vous guide à travers des exemples, pour apprendre à utiliser ces workflows, lorsque vous utilisez Git avec le Studio Talend.

Pour plus d'informations concernant les workflows Git, consultez Comparing Workflows (en anglais).

Pour plus d'informations concernant la manière de travailler avec des branches de projets et des tags dans le Studio Talend, consultez Guide d'utilisation de Talend Data Fabric Studio.

Workflow des branches Git de fonctionnalités

Le workflow des branches Git de fonctionnalités est une manière efficace de collaborer avec son équipe dans le Studio Talend. Dans ce workflow, le développement des fonctionnalités se fait dans des branches dédiées et séparées de la branche principale main.

Remarque : La branche Git par défaut s'affiche comme main, s'il y en a une, au lieu de master, dans le Studio Talend.

Le workflow de branches de fonctionnalités nécessite un référentiel central. La branche main représente l'historique officiel du projet. Lorsqu'une équipe de développement commence à travailler sur une nouvelle fonctionnalité, elle crée une branche et ne commite plus directement sur la branche locale main. Ainsi, plusieurs développeur·ses peuvent travailler sur une ou plusieurs fonctionnalités en même temps, sans avoir à modifier la branche principale main.

Voici un exemple de scénario dans lequel le workflow de branches de fonctionnalités est utilisé. Cet exemple d'utilisation du workflow en est un parmi de nombreux autres.

Prenez l'exemple d'un développeur du nom d'Andy et d'une développeuse du nom de Lucy, travaillant dans une même équipe, sur la fonctionnalité talend-123.

Andy est le premier développeur sur cette nouvelle fonctionnalité. Il crée une branche de fonctionnalité talend-123 basée sur main dans le Studio Talend et passe sur cette nouvelle branche.

Remarque : Les branches de fonctionnalités doivent avoir un nom descriptif, par exemple un ID de fonctionnalité ou un numéro de ticket JIRA.

Andy est connecté à sa branche locale Git talend-123 dans le Studio Talend. Pour le moment, la branche existe uniquement sur l'ordinateur d'Andy.

Andy effectue un Push pour créer la branche de fonctionnalité sur le serveur Git distant, à l'aide du menu Push fourni au sein du Studio Talend.

Andy crée deux Jobs, job1 et job2 et ses modifications sont automatiquement commitées sur la branche locale lorsqu'elles sont sauvegardées. Il effectue ensuite un Push manuel de ses modifications sur la branche Git distante, à l'aide du menu Push fourni au sein du Studio Talend.

Lucy doit à présent commencer à travailler sur cette fonctionnalité. Elle effectue un checkout de la branche de fonctionnalité talend-123 distante en tant que branche locale, puis elle modifie le Job job1 et crée un Job job3 sur la branche locale.

Pendant que Lucy travaille sur le Job job1, Andy modifie également le Job job1 pour créer un Joblet joblet1 sur la branche de fonctionnalité locale, puis effectue un Push de ses modifications vers le référentiel distant.

Lorsque Lucy essaye de faire un Push de ses modifications sur les Jobs job1 et job3 vers la branche distante talend-123, le Push est rejeté, car Andy vient d'effectuer un Push de ses modifications sur le Job job1 vers le référentiel distant.

Lucy doit d'abord effectuer un Pull depuis la branche de fonctionnalité distante talend-123. Des conflits existent, car Andy et Lucy ont fait des modifications sur le même Job job1.

Lucy doit résoudre les conflits. Dans cette situation, Lucy accepte toutes les modifications d'Andy et marque les conflits comme résolus. Le Pull se termine lorsque tous les conflits sont résolus. Lucy effectue avec succès un Push de ses modifications.

Pour plus d'informations concernant la résolution de conflits entre les branches, consultez Résoudre des conflits entre les branches.

La branche de fonctionnalité talend-123 contient à présent les modifications d'Andy et de Lucy.

Après avoir terminé le développement de la fonctionnalité, le développeur ou la développeuse peut fusionner (Merge) les modifications de la branche de fonctionnalité distante talend-123 dans la branche main distante en effectuant un checkout de la branche distante main en tant que branche locale, en effectuant une action Pull and Merge Branch depuis la branche talend-123 distante, puis en effecuant un Push depuis la branche main locale vers la branche main distante.

Workflow Gitflow

Le workflow Gitflow définit un modèle de branches strict et conçu autour de la sortie d'un projet. Il fournit un framework robuste permettant de gérer des projets volumineux.

Le workflow Gitflow n'ajoute pas de concept à celui du workflow de branches de fonctionnalités. En revanche, il attribue des rôles spécifiques à différentes branches et définit quand et comment elles doivent interagir.

Le workflow Gitflow utilise un référentiel central comme hub de communication pour toutes les équipes de développement. Comme dans le workflow de branches de fonctionnalités, les développeurs et développeuses travaillent en local et effectuent des Push de leurs branches vers le référentiel central. La seule différence est la structure des branches du projet.

Au lieu d'une branche main unique, ce workflow utilise deux branches pour enregistrer l'historique du projet. La branche main stocke l'historique officiel des versions et la branche develop sert de branche d'intégration pour les fonctionnalités. Tous les commits de la branche main doivent comporter un tag indiquant un numéro de version.

Voici un exemple de scénario dans lequel le workflow Gitflow est utilisé.

Imaginez qu'un développeur nommé Andy doive travailler sur une nouvelle fonctionnalité feature-123 et qu'une développeuse nommée Lucy doive travailler sur une nouvelle fonctionnalité feature-456.

L'administrateur·trice crée une branche develop basée sur main et en effectue un Push vers le référentiel Git distant dans le Studio Talend.

Andy crée une branche andy-feature-123 basée sur la branche develop dans le Studio Talend et passe sur cette nouvelle branche.

Comme Andy, Lucy crée une branche lucy-feature-456 basée sur la branche develop dans le Studio Talend et passe sur cette nouvelle branche.

Andy et Lucy travaillent sur leur nouvelle fonctionnalité et créent des Jobs sur leur branche locale de fonctionnalité, puis effectuent un Push de leurs modifications vers le référentiel distant.

Pendant qu'Andy continue à travailler sur sa fonctionnalité, Lucy termine la sienne et se prépare à la publier.

Lucy effectue un checkout de la branche develop distante comme branche locale et passe sur cette branche develop.