====== Stash et GIT ======
L'ensemble de ce TD est inspiré des documents de Sébastien Mosser, Philippe Collet et Cyril Cecchinel.
===== Initialisation du mot de passe =====
Pour pouvoir utiliser votre repository Git, vous devez d'abord accéder à Stash et pour cela vous devez initialiser votre mot de passe.
La procédure d'initialisation du mot de passe suit les étapes suivantes :
* Allez sur : https://atlas.i3s.unice.fr/crowd/
* Cliquez sur le lien "Can't access my account?"
* Cochez ensuite "I have forgotten my password" : votre username est ''lp-votrenom'' tout en minuscule
* Un lien vous sera envoyé par mail **à l'adresse que vous aviez indiqué lors du premier TD**
Crowd vous permet ensuite de définir ou de changer votre mot de passe.
===== Stash et clone Git =====
====== Initialisation ======
Vous pouvez désormais accéder au portail Stash qui va contenir les informations sur vos repository Git : https://atlas.i3s.unice.fr/stash/.
Dans le cadre de ce TD vous ne vous intéressez qu'au repository **evalgit**
Lorsque vous naviguez dans un repository vide, Stash vous donne quelques informations pour la configuration.
Il est en effet nécessaire que votre installation de Git soit configurée de manière à ce que vos noms et adresse email soit renseigné.
Si un commit ne peut être identifié comme provenant de vous il est considéré comme anonyme lors des évaluations !
Vous pouvez accéder à Git en ligne de commande sur vos machines à l'emplacement suivant : \\
Sous ''R:'' => ''PortableGit'' puis ''git-bash'' qui s'ouvre en ligne de commande.
Par défaut, la ligne de commande va s'ouvrir sur le chemin ''R:'' changez de chemin vers votre propre répertoire de travail, dès le lancement de la console : ''cd P:''
Vous configurer ensuite Git pour savoir qui commit :
* git config --global user.name "Votre Nom"
* git config --global user.email supermail@gmail.com
Afin d'outrepasser les problèmes de certificat il vous faut aussi ajouter cette configuration :
* git config --global http.sslVerify false
====== Manipulation Git ======
Une fois toutes ces opérations effectuées, placez vous dans ''P:'' et initialisez un nouveau dépôt git :
* git init monRepo
: cette commande va créer un nouveau dépôt local dans un dossier nouvellement créé nommé "monRepo"
* Créez ensuite un fichier ''Menu.txt'' contenant des plats de restaurant, ligne par ligne :
* Steak tartare
* Salade norvégienne
* Filet de dorade
* Bar à la citronnelle
* Vérifiez le résultat en tapant la commande ''git status''
* Utilisez les commandes ''git add'' et ''git commit'' pour faire votre premier commit contenant le fichier Menu.txt, ** attention à ne pas oublier le message de commit !**
Il existe plusieurs manières de commiter en laissant un message de commit :
* ''git commit -m "le message de commit"'',
* ''git commit'' sans argument vous ouvre un éditeur (vi par défaut - echap et :wq pour sortir en écrivant le message)
* et d'autres que vous pourrez retrouver dans la documentation
* Modifiez le fichier ''Menu.txt'' et commitez ces modifications.
* Affichez l'historique des modifications et enregistrez les dans un fichier ''log.txt'' que vous ajoutez au dépôt.
* Visualisez les modifications effectuées dans ''Menu.txt'' entre le premier et le deuxième commit grâce à ''git diff'' et enregistrer le résultat dans un fichier ''diff.txt'' que vous ajoutez au dépôt.
Sous un shell linux vous pouvez utiliser ''>'' pour que la sortie standard soit redirigée sur un fichier. Par exemple ''ls -l > toto.txt'' écrit la liste des fichiers du répertoire courant dans le fichier toto.txt.
* Liez votre dépôt local au dépôt distant. Vous retrouvez normalement ces informations sur la page du dépôt dans Stash. La commande devrait être de la forme : git remote add origin https://...@atlas.i3s.unice.fr/stash/scm/.../evalgit.git
* Poussez ensuite les commits effectuez grâce à la commande ''git push -u origin master''
* Vous serez normalement amené à gérer des conflits : résolvez les conflits en conservant l'ensemble des logs et des diffs. La résolution des conflits passe par la modification textuelle des fichiers : les différentes versions sont séparées par des lignes décrites par les balises "<<<<<<<<" et ">>>>>>>>". Commitez les changements effectués.
====== Introduction aux branches (sans git flow) ======
* Créez une branche à votre nom dans le dépôt : ''git branch votrenom''
* Basculez sur cette branche : ''git checkout votrenom''
* Vérifiez que vous êtes sur la bonne branche : ''git branch''
* Ajoutez des plats dans ''Menu.txt'' et commitez au fur et à mesure vos modifications
* Basculez sur la branche principale (master)
* Observez le fichier ''Menu.txt'' et modifiez des plats, puis commitez
* Fusionnez la branche que vous aviez créée : ''git merge votrenom''
* Résolvez les conflits et commitez
* Pushez les changements
====== Introduction à Git flow ======
* Initialisez git flow dans votre dépôt : ''git flow init''. Conservez les choix par défaut de git flow.
* Créez une nouvelle feature dans le dépôt : ''git flow feature start platX'' en choisissant un nom de plat
* Ajoutez des plats dans ''Menu.txt''
* Commitez et faites un push : que se passe-t-il ? Comment résoudre le problème ?
* Terminez la feature : ''git flow feature finish platX''
* Faites à nouveau un push