... | ... | @@ -2,7 +2,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
## Pré-requis
|
|
|
# Pré-requis
|
|
|
|
|
|
* Notions de gestionnaire de versions (CVS, SVN, Git) souhaitables
|
|
|
* Un ordinateur - peu importe l'OS - disposant de :
|
... | ... | @@ -16,16 +16,16 @@ |
|
|
|
|
|
|
|
|
|
|
|
## Exercices
|
|
|
# Exercices
|
|
|
|
|
|
|
|
|
### Matériel
|
|
|
## Matériel
|
|
|
[waf-c-example.tar.gz](uploads/5695cf1fc22675132848ff12963e816c/waf-c-example.tar.gz) par Maude Le Jeune (CNRS/IN2P3/APC)
|
|
|
|
|
|
|
|
|
### En solo
|
|
|
## En solo
|
|
|
|
|
|
#### Configuration
|
|
|
### Configuration
|
|
|
* télécharger et décompresser `waf-c-example.tar.gz`
|
|
|
* entrer dans le répertoire `waf-c-example`
|
|
|
* copier le fichier `data/.gitconfig` vers votre home directory
|
... | ... | @@ -39,7 +39,7 @@ |
|
|
|
|
|
**Notions** : aliases, whitespaces
|
|
|
|
|
|
#### Création du dépôt
|
|
|
### Création du dépôt
|
|
|
* initialiser le dépôt git (`git init`)
|
|
|
* visualiser les changements (`git status`)
|
|
|
* ajouter l'ensemble des fichiers du projet, *sauf* le répertoire data (`git add|mv|rm`)
|
... | ... | @@ -49,12 +49,12 @@ |
|
|
|
|
|
**Notions** : index
|
|
|
|
|
|
#### Interlude optionnel, pour ceux qui souhaitent compiler et exécuter le code des TP
|
|
|
### Interlude optionnel, pour ceux qui souhaitent compiler et exécuter le code des TP
|
|
|
`./waf configure build`
|
|
|
|
|
|
`LD_LIBRARY_PATH=./__build__/liba:./__build__/libb ./__build__/app/app`
|
|
|
|
|
|
#### On code
|
|
|
### On code
|
|
|
* vérifier qu'aucune fonction `liba_byebye()` existe (`git grep`)
|
|
|
* ajouter une fonction `liba_byebye()` à la liba, qui sera appelée à la fin de `app.c`
|
|
|
* visualiser les modifications (`git diff`)
|
... | ... | @@ -64,17 +64,17 @@ |
|
|
|
|
|
**Notions** : revisions
|
|
|
|
|
|
#### On s'est trompé
|
|
|
### On s'est trompé
|
|
|
En fait, on préfère nommer `liba_goodbye` la fonction `liba_byebye`.
|
|
|
* remettre le dépôt à son état précédent juste avant le commit (`git reset HEAD^`)
|
|
|
* rechercher les occurrences de la fonction `liba_byebye()` et la renommer `liba_goodbye()`
|
|
|
* enregistrer les modifications (`git commit`)
|
|
|
|
|
|
#### Se rétracter
|
|
|
### Se rétracter
|
|
|
Finalement, on préfère abandonner la nouvelle feature.
|
|
|
* annuler le dernier commit (`git revert`)
|
|
|
|
|
|
#### Voyage dans le temps
|
|
|
### Voyage dans le temps
|
|
|
En plein milieu d'un développement, on souhaite aller vérifier du code dans une version antérieure.
|
|
|
* ajouter une fonction `libb_goodbye()` à la libb, qui sera appelée à la fin de `app.c`
|
|
|
* cacher les modifications (`git stash`)
|
... | ... | @@ -86,7 +86,7 @@ En plein milieu d'un développement, on souhaite aller vérifier du code dans un |
|
|
* étiqueter la version courante (`git tag -a`)
|
|
|
* vérifier que le tag a bien été pris en compte
|
|
|
|
|
|
#### Brancher
|
|
|
### Brancher
|
|
|
On commence une nouvelle feature, que l'on enregistrera finalement dans une nouvelle branche.
|
|
|
* visualiser les branches existantes (`git branch`)
|
|
|
* ajouter une fonction `liba_greetings()` à la liba, qui sera appelée dans `app.c`
|
... | ... | @@ -99,7 +99,7 @@ On crée une nouvelle feature planifiée. |
|
|
* ajouter une fonction `libb_happy()` à la libb
|
|
|
* enregistrer les modifications (`git commit`)
|
|
|
|
|
|
#### Fusionner
|
|
|
### Fusionner
|
|
|
* revenir sur la branche *greetings*, ajouter une fonction `libb_how_are_you()` à la libb
|
|
|
* enregistrer les modifications (`git commit`)
|
|
|
|
... | ... | @@ -109,7 +109,7 @@ On fusionne la nouvelle feature avec la branche maîtresse. |
|
|
* appliquer les modifications de la branche *happy*
|
|
|
* résoudre les conflits et enregistrer les modifications
|
|
|
|
|
|
#### Détour
|
|
|
### Détour
|
|
|
L'historique (`git lo`) montre clairement l'existence d'une branche fusionnée (*happy*). Il eut été possible d'appliquer les modifications enregistrées dans la branche *happy* de sorte qu'il en résulte un historique linéraire (`git rebase`).
|
|
|
* vérifier d'être bien placé sur la branche *master*
|
|
|
* annuler le merge de la branche *happy* (`git reset --hard v0.1`)
|
... | ... | @@ -121,7 +121,7 @@ L'historique (`git lo`) montre clairement l'existence d'une branche fusionnée ( |
|
|
* supprimer les branches *happy* et *greetings* (`git branch`)
|
|
|
|
|
|
|
|
|
### Remote
|
|
|
## Remote
|
|
|
|
|
|
#### Partager son dépôt - GitHub ou GitLab
|
|
|
### Partager son dépôt - GitHub ou GitLab
|
|
|
|