Travail à distance

Objectifs
L'objectif de ce TP est de découvrir et d'utiliser les outils permettant de travailler à distance depuis l'extérieur... Ces outils seront vus plus en détail au semestre S6.

Connexion sur une machine de l’école

Sans rentrer dans les détails de l’architecture réseau de l’école, il est important de savoir que le point d’entrée unique est le serveur qui s’appelle portier.polytech-lille.fr. Pour vous connecter, il suffit de taper dans un terminal:

ssh votre_login@portier.polytech-lille.fr -p2222

l’option -p2222 correspond au port utilisé qui n’est pas le port ssh par défaut et qu’il faut donc bien spécifier.

Une fois sur ce serveur, vous avez accès à vos documents mais tous les programmes ne sont pas forcément installés (comme par exemple clang). Dans ce cas, le mieux est de se connecter sur une machine de TP comme phinaertXY, reuzeXY, lydericXY, gedeonXY, gayantXY (ou XY est un nombre allant de 01 à 16) pour avoir accès à tous les programmes utiles.

ssh gayant01

ici, il n’est pas nécessaire de spécifier votre login car a priori vous utilisez le même que celui de portier et comme le port ssh est celui par défaut (22), il n’est pas nécessaire de le spécifier.

À l’intérieur du réseau Polytech Lille, le serveur portier.polytech-lille.fr s’appelle arsenic ou serveur-etu.polytech-lille.fr.

  1. Connecter vous par ssh sur arsenic.
  2. Vérifier que vous êtes bien sur arsenic via la commande uname -n
  3. Consulter les autres utilisateurs connectés sur arsenic via la commande w ou who
  4. Depuis arsenic, connecter vous sur une machine de TP en dehors de votre salle. Utiliser une nouvelle fois uname -n et who pour vérifier que les commandes précédentes sont correctes.

Copie de fichiers depuis / vers l’extérieur

Sur le réseau Polytech Lille, vos fichiers sont accessibles sur n’importe quelle machine ou serveur et donc il n’est pas nécessaire de copier vos fichiers de machines en machines. Par contre depuis/vers l’extérieur, il peut être parfois nécessaire de copier des fichiers. Pour cela on utilise la commande scp, et la syntaxe est la suivante (faire man scp pour l’aide):

scp source destination

que l’on peut spécifier pour des cas d’utilisations suivants:

  • Copie d’un fichier projet.c (qui se trouve par exemple sur le bureau) depuis une machine de Polytech Lille vers votre machine locale (le . final représente le répertoire courant)
scp -P2222 votre_login@portier.polytech-lille.fr:~/Bureau/projet.c .
  • Copie du même fichier depuis votre machine vers Polytech Lille
scp -P2222 projet.c votre_login@portier.polytech-lille.fr:~/Bureau/
  • Copie d’un répertoire projet (qui se trouve par exemple dans le répertoire Documents) depuis une machine de Polytech Lille vers votre machine locale (le . final représente le répertoire courant)
scp -P2222 -r votre_login@portier.polytech-lille.fr:~/Documents/projet .
  • Copie du même répertoire depuis votre machine vers Polytech Lille
scp -P2222 -r projet.c votre_login@portier.polytech-lille.fr:~/Documents/
  1. Si vous avez un ordinateur portable (ou un smartphone avec l’application termius par exemple), essayez de transférer des fichiers depuis / vers les machines de Polytech Lille.

Utilisation du gestionnaire de version GIT

Préambule

GIT est un gestionnaire de version qui est devenu un des standards pour le partage de ressources numériques. Il possède un nombre important de fonctionnalités et nécessite un peu d’apprentissage pour le maîtriser. Ici nous verrons les fonctionnalités les plus basiques qui vous permettront de facilement partager / sauvegarder vos fichiers.

  1. Créer un répertoire sauvegarde (le nom n’a pas d’importance) qui contiendra tous les fichiers que vous souhaiterez sauvegarder.
  2. Pour structurer votre dépôt GIT, créer un sous-répertoire programmation dans votre répertoire sauvegarde.
  3. Créer un répertoire ed_info dans votre répertoire programmation
  4. Vérifier que vous avez la bonne hiérarchie avec la commande tree
    .
    |-- Bureau
    |-- ...
    |-- public_html
    `-- sauvegarde
     `-- programmation
         `-- ed_info
    

Configuration basique de GIT

  1. Taper les commandes suivantes (en remplaçant votre nom et prénom par les bonnes valeurs)
    git config --global user.name "votre nom"
    git config --global user.email prenom.nom@polytech-lille.net
    git config --global core.editor vim
    git config --global push.default simple
    git config --global color.decorate full
    git config --global merge.conflictstyle diff3
    
  2. Si vous avez suivi correctement la question précédente, vous devez obtenir en tapant git config -l:
user.name=votre nom
user.email=prenom.nom@polytech-lille.net
core.editor=vim
push.default=simple
color.decorate=full
merge.conflictstyle=diff3

Utilisation de GIT

  1. Soit le fichier hello.c du premier ED Info:
#include <stdio.h>

int main ()
{
    printf ("Hello World !\n");
    return 0;
}

Placer ce fichier dans le répertoire sauvegarde/programmation/ed_info.

  1. Dans le répertoire sauvegarde, taper git init
  2. Taper git status, vérifier que le message indique bien que le répertoire programmation n’est pas suivi.
Sur la branche master

Aucun commit

Fichiers non suivis:
  (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

    programmation/

aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)
  1. Taper git add programmation/ed_info/hello.c
  2. Taper git status, vérifier que le message indique bien que le fichier hello.c est un nouveau fichier.
Sur la branche master

Aucun commit

Modifications qui seront validées :
  (utilisez "git rm --cached <fichier>..." pour désindexer)

    nouveau fichier : programmation/ed_info/hello.c
  1. Taper la commande git commit -m "(feat) ed_info premier commit". Votre fichier est désormais enregistré dans le dépôt GIT
  2. Dans le fichier hello.c, remplacer la ligne contenant printf par printf ("Hello les SE3 !\n");
  3. Taper git status, vérifier que le message indique bien que le fichier hello.c est modifié
Sur la branche master
Modifications qui ne seront pas validées :
  (utilisez "git add <fichier>..." pour mettre à jour ce qui sera validé)
  (utilisez "git checkout -- <fichier>..." pour annuler les modifications dans la copie de travail)

    modifié :         programmation/ed_info/hello.c

aucune modification n'a été ajoutée à la validation (utilisez "git add" ou "git commit -a")
  1. Taper git add sauvegarde/programmation/hello.c pour indiquer que vous souhaitez sauvegarder ces changements puis git commit -m "(fix) ed_info changement printf" pour valider les changements.
  2. Taper git log --oneline pour voir l’historique des changements sur votre dépôt.
2306f11 (HEAD -> master) (fix) ed_info changement printf
763b933 (feat) ed_info premier commit
  1. Taper git checkout abcdefgabcdefg est l’identifiant précédent le premier commit que vous avez fait (dans mon cas c’est 763b933).
  2. Taper cat auvegarde/programmation/hello.c et constatez que vous affichez la première version du fichier C.
  3. Taper git checkout abcdefgabcdefg est l’identifiant précédent le dernier commit que vous avez fait (dans mon cas c’est 2306f11).
  4. Taper cat auvegarde/programmation/hello.c et constatez que vous affichez la dernière version du fichier C. Vous constatez donc qu’avec la commande git checkout vous pouvez afficher le contenu de n’importe quelle version sauvegardée… et pas uniquement la dernière.

Ajout d’un serveur

Pour le moment, tout ce que vous avez fait n’est accessible que sur les machines Polytech. L’objectif est de le rendre accessible depuis n’importe où. Nous allons donc mettre votre dépôt sur un serveur GIT. Il y en a plusieurs que vous pouvez utiliser comme:

  1. Créer vous un compte sur un de ses serveurs avec votre adresse Polytech Lille (par exemple gitlab.com)
  2. Créer un nouveau projet vide
  3. Taper ensuite dans le terminal
git remote add origin https://gitlab.com/votre_login/votre_projet.git

il existe deux types de connexions sécurisées (https ou ssh)… pour des questions de sécurité, ssh vers l’extérieur de polytech n’est pas possible

où vous aurez remplacez votre_login et votre_projet par les bonnes valeurs.

  1. Taper ensuite git push origin master.
  2. Vérifier sur gitlab.comque votre projet a bien été transféré sur le serveur.

Cloner un dépôt

Pour vérifier que votre dépôt est accessible partout, vous pouvez le cloner. Pour cela:

  1. À la racine de votre compte, créer un répertoire sauv_temp
  2. Placer vous dans ce répertoire
  3. Taper git clone https://gitlab.com/votre_login/votre_projet.git
  4. Constater que vous avez bien la copie du dépôt et de toutes les versions enregistrées.
  5. Modifier le fichier hello.c
  6. Ajouter / Commit / Pousser le fichier sur le serveur
  7. Aller dans votre répertoire sauvegarde
  8. Taper la commande git pull
  9. Constater que vous venez de récupérer la version modifiée

Comment travailler entre deux ordinateurs

Une fois que le dépôt est créé sur une machine (A) et cloné sur une autre machine (B). La procédure de travail est simple:

  1. Avant de modifier un fichier vous faites git pull pour récupérer les dernières modifications (s’il y en a)
  2. Vous modifiez / ajoutez/ supprimez vos fichiers…
  3. Vous les ajoutez pour validation git add
  4. Vous validez (git commit -m "message pertinent")
  5. Vous poussez les modifications sur le serveur avec git push

Intéret d’un gestionnaire de version

Outre la synchronisation du travail sur plusieurs ordinateurs, GIT permet du partager des dépôts (avec votre binôme, un enseignant…), de facilement revenir à une version précise de vos documents (et donc il n’y a pas la crainte de sauvegarder une mauvaise version ou de perdre du contenu)… De plus l’environnement gitlab, github ajoutent un ensemble de fonctionnalités très intéressantes:

  • la gestion de projet: gestion de tâches, assignation à des membres, définition de livrables, documentation…
  • l’automatisation: compilation automatique, tests automatiques, création de binaire…

Vous verrez ces fonctionnalités au semestre prochain :)