
Outils utilisés chez Droptica – partie 3 – dépôt de fichiers
Il est évidemment nécessaire de rechercher et de profiter des outils que l'on peut utiliser lors de la prestation de services de développement Drupal. Il est temps pour une autre dose d'informations sur notre travail chez Droptica. Aujourd'hui, nous aborderons le versionnage de fichiers et les tests d'application.
Subversion
Les projets initiaux mis en œuvre avec Drupal (encore sous le nom d'OPENBIT) utilisaient le système Subversion (également connu sous le nom de SVN, site du projet) pour le versionnage de fichiers. L'un de ces projets était le système intranet pour l'entreprise Telefonia Dialog S.A. (case study).
SVN, comme d'autres systèmes de versionnage, vous permet de garder un historique des changements de fichiers. La principale différence entre SVN et GIT (que nous examinerons de plus près dans un instant) est que dans SVN le dépôt est conservé sur un seul serveur distant auquel tout le monde introduit des changements. Cela vous oblige à valider uniquement sur le serveur distant, vous ne pouvez pas valider localement un nombre infini de changements. Avec SVN, des conflits difficiles à résoudre surgissaient parfois (par exemple, lorsque deux personnes travaillaient sur les mêmes fichiers). La gestion et la fusion des branches étaient également peu pratiques.
GIT
En 2012, nous avons commencé nos premiers essais d'utilisation de GIT pour travailler sur des projets. La première chose "étrange" était que pour envoyer des changements au serveur, la commande "commit" ne suffisait pas, une commande "push" supplémentaire était nécessaire. Cette étape supplémentaire n'était pas présente dans SVN. Cela est dû au fait que GIT est un système distribué, c'est-à-dire que le dépôt n'est pas conservé sur un seul serveur, mais à de nombreux endroits (par exemple sur les ordinateurs des programmeurs, les serveurs de test, etc.).
Lors de l'utilisation de GIT, nous validons dans le dépôt que nous avons localement sur l'ordinateur, puis nous synchronisons nos changements (commits) avec un autre dépôt. Généralement, un dépôt distant est établi comme l'endroit principal pour pousser les changements. Cependant, rien n'empêche un programmeur de pousser ses changements dans le dépôt situé sur l'ordinateur d'un deuxième programmeur (accès nécessaire, par exemple par SSH), le deuxième programmeur termine la tâche et pousse les changements au serveur principal distant.
GIT fonctionne très bien lors de la fusion des changements effectués dans le même fichier. Il est également pratique de fusionner des branches dans le dépôt. De nombreux utilisateurs trouvent que GIT est un très bon système de versionnage, et nous sommes entièrement d'accord avec cet avis.
GIT GUI
GIT est une application en console, c'est-à-dire que pour l'utiliser, il faut entrer des commandes dans un terminal. Cela peut être difficile pour les débutants, nous recommandons donc d'utiliser d'abord une interface graphique pour GIT. Quelques exemples de tels programmes se trouvent ci-dessous :
- Smartgit (Linux, Windows, MacOS), un programme payant, mais qui dispose de nombreuses options et d'une interface claire. Certaines personnes chez Droptica utilisent ce programme.
- GitKraken (Linux, Windows, MacOS)
- GitEye
- Giggle
Il existe de nombreux autres programmes de ce type, il suffit de chercher sur Google pour GIT GUI. Cependant, tous ne peuvent pas fonctionner sur Linux, Windows, ainsi que sur MacOS.
Git-flow
Dans GIT, nous pouvons créer des branches. Avec ces branches, il est possible de travailler sur la tâche à côté du code principal déjà testé. En bref, le travail se déroule comme ceci :
- nous commençons à travailler sur une nouvelle tâche de programmation
- nous créons une nouvelle branche
- nous exécutons la tâche dans la branche
- nous testons la tâche dans la branche
- après avoir passé les tests et la revue de code, la branche est fusionnée avec la branche principale
De telles opérations sur les branches nécessitent plusieurs commandes répétées. Afin de rationaliser cela, Git-flow – une extension pour GIT, ajoutant de nouvelles commandes – a été créé. Une description détaillée du modèle de création de branche utilisé par Git-flow peut être trouvée à http://nvie.com/posts/a-successful-git-branching-model/
Nous utilisons git-flow chez Droptica et le trouvons très utile. Il nous permet d'éliminer les erreurs dans les tâches en cours d'implémentation, avant de fusionner le code avec la branche principale. De cette manière, nous pouvons être sûrs que la branche developer ne contient que les codes testés.
Github
Nous gardons la plupart des codes de projet dans des dépôts privés sur GitHub.com. Nous utilisons Github car il offre des serveurs stables pour stocker les fichiers et propose l'option de "Pull request".
Un pull request est une demande de fusion d'une branche avec une autre, par exemple, la fusion de la branche d'un programmeur avec la branche principale de l'application. Lors d'un pull request, nous pouvons voir un résumé des changements entre les deux branches. Si un programmeur a effectué quelques commits dans sa branche, alors tous les commits seront "fusionnés" en un seul changement. Nous verrons alors une comparaison claire des changements dans le code, qui sera faite après l'acceptation d'un pull request (une opération de fusion sera effectuée).
Cet aperçu permet une révision très facile du code. De cette manière, le programmeur principal du projet peut rapidement vérifier si les changements introduits par un autre programmeur sont corrects et aptes à être fusionnés. La revue de code dans un pull request réalisée par une autre personne garantit que le code de l'application est toujours connu d'au moins deux personnes.
Si vous souhaitez en savoir plus sur Git, assurez-vous de lire le livre "Pro Git". Une version numérique du livre est disponible ici. Vous pouvez également commander une copie physique du livre.
Dans notre agence de développement Drupal, nous ne pouvons même pas imaginer créer des sites web en utilisant Drupal et d'autres technologies sans Git maintenant.