Ce cours/TP va vous permettre de vous familiariser avec la gestion de versions logicielle.
Le but de cette pratique est suivre l’évolution d’un projet ou plus simplement d’un programme, localement et à distance, même lorsque l’on collabore à plusieurs, sans se marcher sur les pieds et prendre le risque de modifier ou supprimer le travail d’un collaborateur. Nous utiliserons pour cela le logiciel git.
1. Introduction
Git est un logiciel de gestion de versions décentralisé. C’est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est utilisé par plusieurs millions de personnes.
Le principe de l’utilisation de git repose sur :
-
un dépôt distant : une version de votre projet stockée sur un serveur sur Internet.
-
des dépôts locaux sur les ordinateurs sur lesquels vous travaillez.
Vous faites vos modifications sur votre ordinateur, et lorsque vous avez accompli une amélioration qui fonctionne bien, vous pouvez la faire enregistrer (
) par git.commit
Ces enregistrements sont locaux à votre ordinateur, et vous pouvez en faire autant que vous le souhaitez.
Si vous voulez partager votre travail avec votre équipe, il vous faut l’envoyer vers le dépôt distant (
).push
À l’inverse, si vous souhaitez récupérer le travail fait par vos co-équipiers, il faut ramener ces modifications depuis le dépôt distant (
).pull
De nombreux environnement de développement gèrent les fonctionnalités de git.
Dans cette activité, vous allez installer git sur votre ordinateur, créer un dépôt git distant et apprendre à utiliser ses fonctionnalités.
2. Pourquoi un logiciel de suivi de version?
Observons le contenu de ce dossier :
Quelle est la version la plus à jour ? A prioris Rapport_VFinal.doc. Oui mais si le rédacteur a enregistré ses dernières modifications à partir de Rapport_V2.doc ? Et s’il a renommé la version finale en Rapport.doc pour l’envoyer par mail à ses collègues?
On peut toujours se référer aux propriétés des fichiers et observer leurs dates de modification et leur taille pour avoir une idée plus précise mais on voit bien ici que cette solution d’organisation du suivi des versions n’est pas satisfaisante.
Utilisons un logiciel de VCS (Version Control System) |
3. Avantages
Les VCS étaient initialement dédiés à la gestion de code source pour les projets logiciels. Ils peuvent également servir à maintenir à jour une documentation ou le code d’un site web.
Ils permettent un travail collaboratif en facilitant les échanges de fichiers, en mettant en évidences les différences entre deux versions, en assurant la traçabilité des opérations et en gérant les conflits.
Principales fonctionnalités d’un VCS :
|
4. Principe de fonctionnement
Le schéma suivant présente le principe de fonctionnement d’un VCS de type git.
4.1. Le stockage
Vos fichiers se trouvent au départ dans votre dossier de travail ou Working Directory. Après une modification, vous les faites passer dans un espace temporaire appelé index ou Staging area avant de les versionner dans le dépôt local ou Local Repository. Les dépôts distants ou Remote Repository peuvent ensuite être synchronisés.
Vocabulaire :
|
4.2. Les opérations de bases
-
Clone :
Copy le contenu du dépôt distant dans le dossier courant. A utiliser lorsque l’on veut travailler sur projet sur un ordinateur sur lequel on a pas encore de dépôt local concernant ce projet.git clone <url_remote_repository>
-
Initialize :
Créer un dépôt local git vide ou en réinitialise un existant. Concètement, il crée un répertoiregit init
avec des sous-répertoires et des fichiers modèles. L’exécution de.git
dans un dépôt existant ne remplacera pas les éléments déjà présents.git init
-
Add :
Cette commande met à jour l’index en utilisant le contenu actuel trouvé dans le dossier de travail, puis prépare le contenu dans la zone de transfert pour la prochaine validation.git add <file>
Ainsi, après avoir modifié le contenu de l’arborescence de travail et avant d’exécuter la commande
, on utilise la commande commit
pour ajouter tout fichier nouveau ou modifié à l’index.add
-
Commit :
L’historique d’un projet est une séquence "d’intantanés" du projet, contenant l’état de tous les fichiers du projet.git comit -a -m <message>
Ces "instantanés" ou "révisions" sont obtenues par l’application de la commande
et possèdent :git commit -a -m <message>
-
une date
-
un auteur
-
une description textuelle
<message>
-
un lien vers le(s) commit(s) précédent(s)
-
Pull :
Cette commande met à jour le dépôt local à partir du dépôt distant. Il faut avant préciser quel est le dépôt distant qui sert de source à cette mise à jour en utilisant la commandegit pull origin <branch-name>
. Si la branche à récupérer est la branche principale,git remote add origin <url_remote_repository>
<branche-name> = master
-
Push :
Lorsque vous souhaitez partager votre projet, vous devez le "pousser"" vers le dépôt distant. Si vous souhaitez transférer votre branche principale sur le dépôt distant (le clonage configure généralementgit push <remote-name> <branch-name>
automatiquement), on exécute pour transférer le travail la commande<remote-name>
git push origine master
Cette commande ne fonctionne que si l’on a cloné à partir d’un dépôt distant sur lequel on a un accès en écriture et si personne n’a "poussé" entre-temps. Si quelqu’un d’autre "clone" en même temps, votre "poussée" sera rejetée. Vous devez d’abord récupérer son travail et l’intégrer au vôtre (
) avant de pouvoir faire votre "poussée".pull
https://git-scm.com/book/en/v1/Git-Basics-Getting-a-Git-Repository
5. github
GitHub (exploité sous le nom de GitHub, Inc.) est un service web d’hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de versions Git. Ce site est développé en Ruby on Rails et Erlang par Chris Wanstrath, PJ Hyett et Tom Preston-Werner. GitHub propose des comptes professionnels payants, ainsi que des comptes gratuits pour les projets de logiciels libres. Le site assure également un contrôle d’accès et des fonctionnalités destinées à la collaboration comme le suivi des bugs, les demandes de fonctionnalités, la gestion de tâches et un wiki pour chaque projet.
https://fr.wikipedia.org/wiki/GitHub
5.1. Travail faire : Créer un compte github
-
Si vous ne possédez pas de compte github, vous devez en créer un :
-
Rendez vous sur le site https://github.com/ et créer vous un compte.
-
Vérifiez le puzzle
-
Laissez décochées les deux cases we need an organisation account et send me occasional product updates
-
Cliquez sur Next : Select a plan
-
Choisissez Free
-
Répondez au questionnaire sur la raison pour laquelle vous créer ce compte.
-
Cliquez sur Complete setup
-
Vérifiez vos email à l’adresse que vous avez indiquée lors de la création du compte et activez votre compte en cliquant sur le bouton Verify email address
-
Félicitation, vous avez créé votre compte github, vous pouvez désormais sauvegarder, organiser, partager votre code.
-
5.2. Travail faire : Faire connaissance avec github
-
Cliquez sur le bouton Read the guide
-
On vous propose ici une activité de 10 minutes environ pour balayer les principales fonctionnalités de github
-
Faites l’activité Create a repository en configurant le dépot en mode Private. Noubliez pas de cocher la case Initialize with a README
-
Faites l’activité Make a commit. Le fichier README.txt est écrit en langage de balisage Markdown. Consultez la syntaxe ici : https://www.markdownguide.org/basic-syntax pour obtenir un résultat comme ci-dessous :
-
-
Après avoit publié (on dira ici commiter), cliquez sur le nom du dépôt qui apparait à côté de vorte nom d’utilisateur pour revenir à la racine.
Il ne devrait y avoir que votre fichier README.txt dans la liste des fichiers. -
Ajoutez une image (upload files) que vous téléchargerez ici :
-
Modifiez le fichier README.txt pour y faire apparaitre l’image à la fin.
### Une image
![Tux, the Linux mascot](/tux.png)
Bonne programmation !