====== 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