• Aucun résultat trouvé

CSC4102 : Gestion de versions

N/A
N/A
Protected

Academic year: 2022

Partager "CSC4102 : Gestion de versions"

Copied!
19
0
0

Texte intégral

(1)

CSC4102 : Gestion de versions

Denis Conan, avec Olivier Berger

Janvier 2022

(2)

1 Motivations et objectifs

1. Motivations et objectifs

1.1 Contexte : Qui demande des versions ? 1.2 Int´ erˆ et — Pourquoi

Git

?

1.3 Cette s´ eance et apr` es

2. Concepts de la gestion de versions avec

Git

3. Mise en pratique en TP (2h) + HP (3h)

(3)

1.1 Contexte : Qui demande des versions ?

■ Linus’s law : «given enough eyeballs, all bugs are shallow »[Raymond, 1999]

« Avec suffisamment d’yeux, tous les bugs sautent aux yeux »

« Avec un groupe deβ-testeurs et de co-d´eveloppeurs suffisamment large, [de nombreux] probl`emes seront rapidement analys´es et le correctif sera

´evident pour l’un d’entre eux »

Cette affirmation verbalise un principe fort des promoteurs du code ouvert

Code ouvert =⇒ code source accessible

Un code source accessible permet : une´evaluation/relecture par les pairs, la promotion des bonnes pratiques, la v´erification de la non-existence de codes cach´es, etc.

Mˆ eme si le code n’est pas ouvert, l’accessibilit´ e en interne est souhaitable

Code accessible =

dans une forge logicielle et sous gestion de versions

Dans CSC4102, c’est avec

(4)

1.1.1 « Experts keep sketches »

[van der Hoek, 2018]

Image extraite de[van der Hoek, 2018]

(5)

1.2 Int´ erˆ et — Pourquoi Git ?

Linus Torvalds, IEEE Computer Society Computer Pioneer Award, 2014

Libre

Initialement d´ evelopp´ e pour le noyau Linux par Linus Torvalds

Utilis´ e par de nombreux « gros » projets

https://git.wiki.kernel.org/index.php/GitProjects

« The Git Distributed Version Control System—An Interactive Development History »

Grande flexibilit´ e dans l’organisation du travail

Compl`etement r´eparti= Liens point `a point quelconques entre deux d´epˆots

Branche= concept de premi`ere classe

La plupart des op´erations sont « locales », c.-`a-d. sans besoin de connexion `a un d´epˆot distant

(6)

1.3 Cette s´ eance et apr` es

Contenu — Quels sont les objectifs de la s´ eance ?

Mise en place de votre projetGitLabEns

https://gitlabens.imtbs-tsp.eu/, authentificationShibboleth

Gestion de versions avecGit

Concepts de base : instantan´e du d´epˆot local, fichier sous suivi de version, zone de transit, validation, branche, ´etiquette, fusion de branches

Processus de travail

Apr` es la s´ eance — ` A quoi c ¸a sert ? o` u ? quand ?

Chaque artefact produit (mod`ele ou code) est dans le d´epˆotGitde votre projetGitLabEns

Les ´evaluations sont effectu´ees en ´etudiant les d´epˆotsGitdes projets GitLabEns

Pour le suivi (´evaluation formative) et la notation (´evaluation certificative)

(7)

1.3.1 Utilisation de Git : Avertissement

La gestion de version est importante pour la suite de votre formation et votre insertion en entreprise

Que les deux membres du binˆ ome contribuent ` a leur tour ` a la construction de l’arbre Git, et ce tout au long du module !

La pratique r´ eguli` ere est importante pour acqu´ erir une aisance minimale

(8)

2 Concepts de la gestion de versions avec Git

2.1 Entr´ ee sous suivi de version (tracked entry) et instantan´ e du d´ epˆ ot local (snapshot)

2.2 Zone de transit (staging area) et validation (commit) 2.3 ´ Etats possibles d’une entr´ ee

2.4 Entr´ ees ignor´ ees

2.5 Contenu de l’arborescence locale 2.6 D´ epˆ ot et branches

2.7 Fusion de branches

2.8 D´ epˆ ots distants

(9)

2.1 Entr´ ee sous suivi de version (tracked entry ) et instantan´ e du d´ epˆ ot local (snapshot )

Entr´ ee sous suivi de version = fichier/r´ epertoire « connu » de

Git

Apr`es clonage (git clone), toute l’arborescence r´ecup´er´ee est sous suivi de version

Apr`es cr´eation d’une entr´ee (p.ex.,touch new.txt), besoin de mettre la nouvelle entr´ee sous suivi (avecgit add)

C’est le premier rˆole de la commandegit add

Instantan´ e (snapshot) = image de l’arborescence correspondant ` a l’´ etat apr` es une validation (commit)

Le r´esultat de l’op´erationgit commitest un nouvel instantan´e

(10)

2.2 Zone de transit (staging area) et validation (commit)

Zone de transit (staging area)

1

= entr´ ees dites « index´ ees » pour ajout au prochain instantan´ e du d´ epˆ ot local

La zone de transit contient :

Les entr´ees non encore suivies ajout´ees pour suivi de version

P.ex.,new.txtn’existe pas,

puistouch new.txt; git add new.txt

Les entr´ees modifi´ees et dont les modifications seront dans le prochain instantan´e

P.ex.,exists.txtd´ej`a dans le d´epˆot local,

puisecho ajout>>exists.txt; git add exists.txt

• C’est le second rˆole de la commandegit add

Effet d’une validation

(git commit)

= cr´ eation d’un nouvel instantan´ e par application des modifications de la zone de transit

1. par abus de langage de « rendre une valeur ´economique solidaire ou d´ependante de la valeur d’un ´el´ement de r´ef´erence »

(11)

2.3 ´ Etats possibles d’une entr´ ee

Image extraite de[Chacon and Straub, 2014]

Cf. commande

git status

pour connaˆıtre l’´ etat des entr´ ees

(12)

2.4 Entr´ ees ignor´ ees

Certains fichiers (temporaires) n’ont pas vocation ` a ˆ etre sous suivi de version

Langage C : les fichiers*.o, etc. et les ex´ecutables

Langage JAVA : les fichiers*.class

Eclipse : les r´epertoiresbin

Maven : les r´epertoirestarget

Etc.

Utiliser le fichier

.gitignore

pour indiquer les entr´ ees ` a exclure

**/*.[oa]

**/*.class

**/bin/

**/target/

Ne pas oublier «

git add .gitignore

» puis «

git commit

»

Un fichier

.gitignore

est fourni dans le d´ epˆ ot de d´ epart

(13)

2.5 Contenu de l’arborescence locale

R´ epertoires de travail =

Instantan´e du d´epˆot local

+ Entr´ees non suivies (incluant les entr´ees « ignor´ees ») + Entr´ees sous suivi, modifi´ees, mais non index´ees + Zone de transit (aussi appel´ee les entr´ees index´ees)

(14)

2.6 D´ epˆ ot et branches

D´ epˆ ot =

Conceptuellement : un ensemble d’instantan´es organis´es dans un graphe

Donc, indirectement, un contenu

Chaque instantan´e poss`ede un identifiant (SHA1)

Chaque instantan´e connaˆıt ses ancˆetres directs (p.ex. 2 lors d’une fusion)

Pratiquement : m´eta-donn´ees(.git/)+ entr´ees sous suivi de version

Branche = « division », « ramification », « lign´ ee » d’instantan´ es

Par convention, la premi`ere branche oubranche principaleest nomm´eemain

Un utilisateur passe de branches en branches lors de son travail

La branche entre deux livraisons est souvent appel´eedevelop

Dans CSC4102, nous les appelleronssprint1puissprint2

La correction d’unbug peut ˆetre faite dans une branche s´epar´ee

Le d´eveloppement d’une nouvelle fonctionnalit´e peut ˆetre fait dans une branche

(15)

2.6.1 Avertissement : main Vs. master

Depuis mars 2021, la branche principale d’un projet

Git

dans la forge logicielle

GitLabEns

est nomm´ ee

main

Cf.The new Git default branch name

Vous n’ˆetes pas autoris´es `a utiliser un nom autre quemainpour la branche principale de votre projet

C’est une hypoth`ese pour nos scripts d’analyse de vos d´epˆotsGit

Par cons´ equent, faites attention aux « copier/coller » intempestif en provenance du Web

Nous proposons un apprentissage et des proc´edures

Prendre des commandes d’une page Web sans trop les comprendre vous expose `a des confusions entremainetmasterqui sont difficiles `a r´esoudre

(16)

2.7 Fusion de branches

Avec «

git merge−−no−ff

»

2

: un instantan´ e d´ edi´ e ` a la fusion (gitk/tig)

2. no fast forward

(17)

2.8 D´ epˆ ots distants

Par convention, le d´ epˆ ot source du clonage est appel´ e

origin

Possibilit´ e de cr´ eer d’autres liens vers des d´ epˆ ots distants (remotes)

Liste et manipulation (git remote−−help)

$git remote −v

origin [email protected]:enseignants.csc4102/csc4102-projet.git (fetch) origin [email protected]:enseignants.csc4102/csc4102-projet.git (push)

Chaque lien est bidirectionnel :

Tirer du contenu depuis un d´epˆot distant :

R´ecup´erer les modifications sans modifier son arborescence locale (git fetch origin)

Appliquer les modifications sur l’arborescence de la branche courante (git pull origin branche)

• Avantgit pullv´erifier avecgit branchque l’on est surbranche

Pousser du contenu sur un d´epˆot distant(git push origin branche)

git push

SSH

clé publique

git clone git fetch git pull

gitlabens.imtbs−tsp.eu git branch

git add git rm git merge git commit etc.

(clé privée, clé publique)

(18)

3 Mise en pratique en TP (2h) + HP (3h)

A partir d’un tutoriel, en TP `

Cr´eation et configuration d’un projet dans la forge logicielleGitLabEnsde

TSPManipulations de base d’un d´epˆotGitet transfert entre d´epˆots

Manipulations des branches et des ´etiquettes

Projet priv´eGitLabEnsconfigur´e + branchesprint1cr´e´ee

Contenu du HP avant la s´ eance 2 (3h)

(optionnel) Compl´ements« Pour aller plus loin »sur la gestion de versions

(optionnel) ´El´ements de cours sur les« m´ethodes agiles »

Pr´eparation de la s´eance 2

Lecture ducahier des chargesde l’´etude de cas du projet du module

Pr´erequis« Mod´elisation et expression des besoins »

(optionnel) Vid´eo « pourquoi Modelio? »

(19)

ef´ erences I

Chacon, S. and Straub, B. (2014).

Pro Git, 2nd Edition.

APress.

https://git-scm.com/book/en/v2.

Raymond, E. (1999).

The Cathedral & the Bazaar — Musings on Linux and Open Source by an Accidental Revolutionary.

O’Reilly.

van der Hoek, A. (2018).

What Makes Expert Software Designers Successful ? ACM Learning Webinar.

Références

Documents relatifs

Dans le m ˆeme temps, il a ´ecrit un compilateur de r ´eseaux de processus, transf ´er ´e dans la startup Xtremlogic qu’il a co-fond ´e en 2014 avec Alexandru Plesco..

- Lorsque j’aurai cumulé 8 sur 21 jours, j’ouvrirai la boite à Bonheurs (ou 12 sur 28) Je suis à l’origine de la séance à la maison. J’utilise l’un de mes

• Faire un répertoire tprcs dans lequel vous fabriquez un fichier vide Test.java?. • Générer le rcs du fichier

17.Afficher le numéro et la date des commandes faites au premier de chaque mois au cours de l’année 2018 (utiliser la fonction jour (date)). 18.Afficher le numéro et la date

C’est dans ce cadre que s’inscrit notre projet de fin d’études qui consiste en la réalisation d’une application de gestion du suivi des bons de livraison et aussi un outil

C'est un ensemble de tables et de vues dans lesquelles sont stockées les descriptions des objets de la base, et qui sont tenues à jour automatiquement par le système de gestion de

Le pouvoir tampon, défini comme la quantité de H 3 O + ou OH - que l’on doit ajouter pour faire varier le pH d’une unité, est d’autant plus fort que la concentration du tampon

2.1.3 Relation de g´ en´ eralisation sp´ ecialisation entre acteurs 2.1.4 Lien de communication et relation entre cas d’utilisation 2.1.5 M´ ediath` eque, cas d’utilisation. pour