Exposé 3

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 13

Introduction

• Un système de contrôle de version, tel que Git, est un outil essentiel


dans le développement de logiciels pour gérer et suivre les
modifications apportées au code source d'un projet. Il permet de
garder une trace de chaque changement effectué, de collaborer
efficacement au sein d'une équipe et de revenir en arrière en cas de
besoin.
• L'importance du système de contrôle de version réside dans plusieurs
aspects clés : Historique des modifications , Collaboration fluide ,
Gestion des conflits , Réversibilité, Tests et expérimentations,etc…
Les Fonctionnement de base du git
• Dépôt (Repository) : Un dépôt Git est un espace où sont stockées toutes les
versions du code source et de ses modifications. Il peut s'agir d'un répertoire
local sur votre ordinateur ou d'un dépôt distant hébergé sur une plateforme
comme GitHub.
• Commits : Un commit représente une sauvegarde des modifications
apportées au code à un moment précis. Chaque commit est accompagné d'un
message qui décrit les changements effectués. Les commits sont organisés de
manière linéaire, formant ainsi un historique chronologique du projet.
• Branches : Les branches sont des copies distinctes du code source permettant
de travailler sur des fonctionnalités ou des correctifs sans affecter le code
principal. Les développeurs peuvent créer des branches pour isoler leur travail
et le fusionner une fois qu'il est prêt.
• Fusions (Merges) : Lorsqu'une branche est prête à être intégrée au code principal, elle
peut être fusionnée. Git essaie de fusionner automatiquement les changements, mais
parfois des conflits surviennent lorsque deux branches modifient la même partie du code.
Les conflits doivent être résolus manuellement.
• Remote (Dépôt distant) : Un dépôt distant est une copie du dépôt local qui peut être
partagée avec d'autres développeurs. Les plateformes telles que GitHub, GitLab et
Bitbucket permettent d'héberger des dépôts distants et de faciliter la collaboration.
• Pull (Tirer) et Push (Pousser) : Pour synchroniser les modifications entre le dépôt local et
le dépôt distant, vous pouvez utiliser les commandes "pull" pour récupérer les dernières
modifications et "push" pour envoyer vos propres modifications.
• Résolution de conflits : Lorsque Git détecte des conflits entre des versions du code, il
demande au développeur de résoudre ces conflits manuellement en choisissant les
modifications à conserver.
En comprenant ces concepts fondamentaux, les développeurs peuvent utiliser Git pour
travailler de manière collaborative, gérer les versions, explorer de nouvelles fonctionnalités
et maintenir un historique clair et organisé des modifications apportées au code source.
Avantages du git
• Simplicité d'utilisation : Git offre une interface conviviale qui le rend accessible même aux développeurs
novices. Les commandes simples et intuitives, telles que "commit", "pull" et "push", facilitent la gestion des
versions. Les développeurs peuvent rapidement apprendre les bases de Git et commencer à contribuer au
projet sans trop de difficultés.
• Centralisation des modifications : Un des avantages majeurs de Git est la centralisation des modifications.
Toutes les modifications apportées au code sont enregistrées dans le dépôt, ce qui permet aux développeurs
de suivre l'évolution du projet et de collaborer sans confusion. Les commits sont associés à des messages
explicatifs, ce qui facilite la compréhension des changements effectués par chaque contributeur.
• De plus, la centralisation des modifications est essentielle pour la gestion des conflits. En ayant une seule
source de vérité, Git permet de détecter et de résoudre les conflits de manière plus efficace. Les
développeurs savent exactement où trouver les dernières versions du code, ce qui réduit les risques
d'erreurs et de divergences.
• En résumé, Git simplifie le processus de gestion des versions tout en fournissant un emplacement centralisé
pour stocker et suivre les modifications. Cette combinaison de simplicité d'utilisation et de centralisation des
modifications en fait un choix solide pour le développement collaboratif et la gestion de projet.
Utilisation de Git :
• L'utilisation de Git implique plusieurs étapes clés qui vous permettent de gérer efficacement les
versions du code source et de collaborer avec d'autres développeurs. Voici un aperçu des
principales étapes de l'utilisation de Git :
• Initialisation du dépôt : Pour commencer, vous créez un nouveau dépôt Git en utilisant la
commande git init dans le répertoire de votre projet. Cela crée un dépôt local où Git va enregistrer
les modifications.
• Ajout de fichiers : Utilisez la commande git add pour ajouter des fichiers au "staging area". Le
"staging area" est une zone intermédiaire où vous préparez les modifications avant de les
enregistrer définitivement.
• Création d'un commit : Une fois que vous avez ajouté des fichiers au "staging area", utilisez la
commande git commit pour créer un commit. Chaque commit est associé à un message qui décrit
les changements que vous avez effectués.
• Création et gestion des branches : Utilisez git branch pour créer de nouvelles branches. Les
branches vous permettent de travailler sur des fonctionnalités ou des correctifs distincts sans
affecter le code principal. Utilisez git checkout pour passer d'une branche à l'autre.
• Fusion des branches : Lorsque vous avez terminé de travailler sur une branche, vous pouvez fusionner
les modifications dans la branche principale en utilisant git merge.
• Récupération des modifications : Utilisez git pull pour récupérer les dernières modifications du dépôt
distant dans votre dépôt local. Cela synchronise votre code avec les dernières versions.
• Envoi des modifications : Utilisez git push pour envoyer vos modifications vers le dépôt distant, ce qui
les rendra accessibles à d'autres collaborateurs.
• Résolution des conflits : Si des conflits surviennent lors de la fusion ou de la récupération des
modifications, utilisez git diff pour identifier les différences et git mergetool pour résoudre les conflits
manuellement.
• Historique et exploration : Utilisez git log pour afficher l'historique des commits. Vous pouvez
également utiliser git diff pour voir les différences entre les versions.
• Plateformes de collaboration : Utilisez des plateformes telles que GitHub, GitLab ou Bitbucket pour
héberger des dépôts distants, collaborer avec d'autres développeurs, et gérer les problèmes et les
demandes de fusion.
• En comprenant ces étapes de base, vous serez en mesure d'utiliser Git pour gérer vos projets de
manière efficace, collaborer avec d'autres développeurs et maintenir un historique clair de vos
modifications.
Différences entre git et svn
• Git et SVN (Subversion) sont tous deux des systèmes de contrôle de version utilisés pour gérer et
suivre les modifications apportées au code source. Cependant, ils ont quelques différences clés :
• Modèle de gestion des versions :
• Git : Utilise un modèle de gestion de versions décentralisé. Chaque utilisateur possède une copie complète
de l'historique du projet.
• SVN : Utilise un modèle centralisé, où il existe un référentiel central qui contient l'historique complet du
projet.
• Performances :
• Git : Généralement plus rapide pour les opérations locales car il ne dépend pas d'un serveur central.
• SVN : Peut être plus lent pour certaines opérations car elles dépendent du serveur central.
• Branches :
• Git : Les branches sont légères et faciles à créer. Git encourage l'utilisation de branches pour isoler les
fonctionnalités et les correctifs.
• SVN : Les branches sont plus lourdes car elles créent une copie complète du répertoire, ce qui peut rendre
la gestion des branches plus complexe.
• Fusion (Merge) :
• Git : La fusion est puissante mais peut être complexe en raison de la nature décentralisée. Git
propose des fusions non linéaires (enchevêtrement de branches).
• SVN : La fusion peut être plus simple car elle suit une approche plus linéaire.
• Historique :
• Git : Garde l'historique complet de toutes les branches localement, même hors ligne.
• SVN : N'a pas tout l'historique complet en local, nécessite une connexion au serveur pour
certaines opérations.
• Compatibilité :
• Git : Fonctionne mieux avec des workflows distribués et des équipes dispersées
géographiquement.
• SVN : Peut être plus approprié pour les équipes travaillant dans un environnement centralisé.
• En résumé, Git est plus flexible et adapté à un développement distribué, tandis que
SVN est plus adapté aux environnements centralisés. Le choix entre les deux dépend
des besoins spécifiques de votre équipe et de votre projet.
Git ou SVN : des approches centralisées et décentralisées

• Les outils de versionning ont pour mission de modifier des documents voire des fichiers. Ils sauvegardent
dans une archive toutes les versions créées comprenant les horodatages ainsi que les identifiants uniques, de
sorte que les anciennes données peuvent à tout moment être chargées voire restaurées. Par conséquent, le but
est de déterminer l’identité de l’utilisateur qui a procédé à des modifications à un moment T. Les objectifs
d’un tel système sont, d’un côté, de coordonner l’accès commun de plusieurs utilisateurs à des fichiers et,
de l’autre, de permettre le développement simultané de plusieurs branches (celle du développement ou bien
du détachement).
• En règle générale, les systèmes de versionning interviennent dans le développement de logiciels et dans les
systèmes de gestion de contenus dans le cadre professionnel. On compte, dans les outils de versionning les
plus connus, Apache Subversion (SVN) mais également Git. Il est possible de les installer soit sur son propre
serveur soit de les louer via un hébergeur. GitHub est le service d’hébergement basé sur le web le plus connu
pour les projets Git. En ce qui concerne Subversion, on peut citer le site RiouxSVN. Les services tels que
SourceForge hébergent les deux systèmes.
SVN : le successeur CVS de CollabNet

C’est au début des années 2000 que le logiciel libre Subversion a commencé son développement pour enfin
sortir sa version complète quatre années plus tard. C’est ainsi que DVN a succédé à son modèle CVS (sigle
de Concurrent Versions System). En 2009, le projet a changé pour la Apache sofware Foundation, d’où provient
le nom du fameux outil Apache Subversion.
• SVN repose sur un système de versionning centralisé. Cela signifie qu’un seul répertoire général existe et
tous les utilisateurs y ont accès. Etant donné que les modifications ne peuvent être fusionnées, le système
empêche que deux utilisateurs modifient un même fichier simultanément. Ce dernier est attribué au premier
internaute qui l’ouvre et il reste protégé des autres utilisateurs tant qu’il n’a pas été fermé. Apache Subversion
permet également de charger et de modifier les sous-chemins indépendamment du reste de l’arborescence.
C’est ainsi que les droits de lecture et d’écriture sont affectés pour la totalité des chemins aux différents
utilisateurs. En outre, Suversion se caractérise par le fait que des répertoires vides, renommés voire déplacés
peuvent être enregistrés sans causer de perte dans l’historique.
Git : la solution d’urgence du développeur du noyau Linux

• Le créateur de Linux Linus Thorvalds a commencé le développement d’un nouveau logiciel de versionning en
avril 2005. Il y était plus ou moins forcé. La raison de ce rebondissement était que les développeurs du noyau
Linux avaient perdu leur accès gratuit du fait d’une modification de la licence du système BitKeeper. Le
nouveau système avait pour but de présenter les même flux de travail que BitKeeper et de protéger contre les
modifications délibérées ou accidentelles. Par ailleurs, son efficacité était bien supérieure. C’est seulement après
seulement quelques jours que Thorvalds présentait la première version de Git.
• Derrière Git se cache un système de versionning décentralisé. Il existe un dépôt (de l’anglais repository) dans
lequel tous les changements sont incorporés et qui permet aux utilisateurs d’y télécharger leurs propres copies de
travail. Ils disposent également d’un dépôt complet qui comprend l’historique local sans qu’ils n’aient besoin
d’une connexion permanente au réseau. Par ailleurs, les modifications sont transférées rapidement dans le dépôt
principal. En conséquence, Git ne propose pas de système de verrouillage mais permet à tous les utilisateurs de
créer leurs propres branches qui seront ensuite téléchargées dans le dépôt principal. Chaque utilisateur dispose
par ailleurs des droits de lecture et d’écriture standards pour tout le répertoire. S’il existe d’autres droits, d’autres
répertoires principaux doivent alors être définis. Chaque copie de travail est une sauvegarde individuelle du
répertoire principal, ce qui présente un avantage au cas où celui-ci tombe en panne ou est abîmé. Git ne définit
que les contenus des répertoires, c’est pourquoi les répertoires vides sont automatiquement supprimés.
SVN et Git : comparaison directe des systèmes

Quel outil faut-il choisir entre SVN et Git ? La réponse n’est pas aussi simple et reste liée à vos objectifs. Les
deux systèmes se distinguent de par leurs structures et leurs procédures de travail. Le tableau suivant illustre
les oppositions majeures qui existent entre les deux outils

SVN Git

Versionning Centralisé Décentralisé

Des copies de dépôt, présentes


Un dépôt central dans lequel les copies de
Dépôt localement, dans lesquelles il est
travail sont créées
possible de travailler

Droit d’accès Basé sur le chemin Pour le répertoire complet

Suivi des modifications Enregistre des données Enregistre des données

Complet seulement dans le dépôt. Les copies


Le dépôt et les copies de travail
Journal de modifications des données de travail ne contiennent que la version la plus
contiennent l’historique complet.
récente.

Nécessaire seulement pour réaliser


Connectivité au réseau Pour tous les accès
une synchronisation
• Voici les avantages respectifs des deux systèmes :
• Il se peut que Git vous corresponde mieux si vous…
• Ÿn’avez pas besoin d’une connectivité au réseau de manière continue par exemple pour pouvoir travailler sur votre projet
de n’importe où ;
• Ÿvoulez être protégé en cas de panne ou de perte du dépôt principal ;
• Ÿn’avez besoin en aucun cas de droits de lecture ou d’écriture pour des répertoires particuliers (il est tout de même
possible avec Git, quoique compliqué, de configurer ces accès) ;
• Ÿattachez beaucoup d’importance au transfert rapide des modifications.
• Mais Subversion peut se révéler être une meilleure option si vous…
• Ÿavez besoin de droits d’accès basés sur des chemins pour chaque domaine de votre projet ;
• Ÿdésirez regrouper tout votre travail dans un endroit centralisé ;
• Ÿtravaillez avec beaucoup de fichiers binaires ;
• Ÿdésirez enregistrer complètement les structures des répertoires vides (Git n’autorise pas cette action étant donné qu’il
ne possède aucun contenu).
• Si les caractéristiques énumérées ci-dessus ne sont pas pertinentes pour votre projet, nous vous conseillons de procéder à un
test des deux outils de versionning. Quoi qu’il en soit, GitHub est le premier fournisseur d’hébergement et il est soutenu
par une grande communauté d’utilisateurs ce qui forme en soi un avantage majeur.

Vous aimerez peut-être aussi