libre libre    fcys14 tux asterix pitit Subversionlibre portfolio cisoun tux tux ya kelk1 pitit SubversionSubversion

Aujourd’hui en cours, découverte de subversion, le logiciel de gestion de versions et de travail collaboratif.

Le principe est de travailler à plusieurs sur les même fichiers sans perdre les modifications apportées par les uns et par les autres. On utilise donc un serveur qui stocke les fichiers et chacun travaille sur une copie qu’il met à jour régulièrement. De même régulièrement, chacun reposte ses modifications sur le serveur. Si jamais j’ai édité un fichier et que quelqu’un d’autre l’a aussi édité avant que je le renvoie sur le serveur, alors le système m’en informe et me permet de choisir quelle version garder ou de faire un mix des deux.

Le système permet aussi de revenir ou de consulter des versions antérieures. Il existe d’autres systèmes qui permettent ceci, mais subversion en est un des plus récents. Son avantage sur son prédecesseur (très longtemps utilisé) cvs est qu’il ne garde pas à chaque fois une copie complète du fichier, mais juste les modifications apportées, donc gain de place évident !

Schématiquement (honteusement pompé du cours de mon prof, ça doit venir du web et ne m’appartient pas )

libre capture2 Subversion

libre capture3 Subversion

Ce système a pris le parti de laisser deux personnes travailler en même temps sur un même fichier, mais s’assure juste de la possibilité de faire la mise à jour ou non (contrairement à d’autres systèmes où la personne qui édite pose un verrou).

Créer le dépot

Sous mac et linux, il est généralement installé par défaut. Le serveur n’est qu’un serveur de données. C’est le client qui fait tout le travail.

Pour créer le serveur la commande est

svnadmin create myrepo

dans le répertoire où l’on veut créer le dépot myrepo.

Créer le projet sur le dépôt

La commande

svn import . file:///chemin/et/nom/du/depot/nomduprojet -m "Commentaire"

va importer tous le contenu du répertoire courant pour remplir le nouveau projet sur le dépôt. On peut pratiquer cette commande sur un répertoire vide. Alors, ceci a pour unique effet de créer le projet sur le dépôt.

Le commentaire sert à indiquer que l’on crée le dépôt par exemple. Par la suite, dans les autres commandes de modification du contenu, on ajoutera de même des commentaires.

Commencer à travailler

Pour commencer à travailler, il faut utiliser la commande suivante :

svn co file:///chemin/et/nom/du/depot/nomduprojet repertoirelocal

Alors un nouveau répertoire nommé repertoirelocal va être créé dans le répertoire courant et tout le contenu du projet nomduprojet y est téléchargé.

Modifications locales

Création d’un fichier

Pour créer un fichier, la commande à utiliser est svn add nom sur le fichier ou le répertoire existant à ajouter au projet.

Suppression d’un fichier

Il ne faut pas utiliser la commande rm seul, mais utiliser svn delete nom pour le fichier ou le répertoire. Ça supprime le fichier / répertoire en local et l’inscrit dans les modifications à effectuer sur le dépôt.

Déplacement/Renommage d’un fichier

La commande à utiliser n’est pas non plus mv, mais svn move nomancien  nomnouveau . (Il existe aussi svn copy).

Modification d’un fichier

Il suffit simplement d’éditer le fichier.

Contrôler les changements en attente

Pour cela, utilisons la commande svn status .

Appliquer les changements

Mettre à jour par rapport au contenu du dépôt et vérifier qu’il n’y a pas de conflits

svn update

Résoudre les conflits

La commande update signale les conflits et propose plusieurs options : résoudre plus tard (postpone : p), appliquer les changements « des autres » (theirs-full : tf) ou les miens (mf).

Si l’on choisit résoudre plus tard, il nous reste la possibilité de comparer les versions avec la commande diff et d’éditer le fichier de travail pour faire une compilation qui nous convient. Enfin, ne reste plus qu’à lancer la commande :

svn resolve --accept [state] fichierquiposepb

avec state soit : working, version modifiée pour compilation par exemple, mine-full ou theirs-full pour choisir de garder sa version ou celle du dépôt.

Effectuer les changements

Enfin, la commande

svn commit -m "commentaire"

valide les changements une fois les conflits résolus et passe à la version n+1 en inscrivant dans l’historique le commentaire.

Suivre les changements

La commande svn log permet d’afficher l’historique des changements.

Connexion pas ssh à un serveur svn

svn co svn+ssh://login@ipduserveur/chemin/et/nom/du/repo/projet
Mots-clefs :, , | Classé dans : Libre, Portfolio
Pas de commentaire

libre libre    fcys14 tux asterix pitit SSHlibre portfolio cisoun tux tux ya kelk1 pitit SSHSSH

Aujourd’hui, quelques astuces d’utilisation du SSH (secure shell).

SSH est un protocole qui permet d’établir un lien entre deux ordinateurs. Très utilisé sur des systèmes de type Unix, il est aussi possible de l’utiliser avec Windows©. SSH permet : l’exécution d’applications en lignes de commande ou en graphique depuis la machine hôte, la redirection de ports, le transfert de fichiers. Il utilise le port 22, il faut donc que les communications sur ce port soient autorisées. Malgré tout, il existe un moyen pour faire du ssh même si tous les ports sont fermés en entrée. C’est le principe du reverse SSH qui utilise pleinement la redirection de ports !

Installation

Sous Ubuntu, c’est le paquet openssh qui permet d’installer le serveur.

Connexion

En ligne de commande, la commande ssh login@ipdelamachine permet la connexion directe. La connexion étant sécurisée, la première fois qu’on contacte une nouvelle machine, celle-ci envoie sa clé (une sorte d’empreinte) qui garantie que lors des prochaines connexions on se connectera bien à la bonne machine. Une fois cette authentification physique de la machine effectuée, une invite demande d’entrer le mot de passe. Une fois ceci fait, nous sommes maintenant sur la machine distante. Nous pouvons explorer le contenu du disque et lancer des commandes.

Astuce : pour savoir qui d’autre est connecté à la machine, utiliser la commande who .

Lancer des applications en mode graphique

Le SSH permet de lancer des applications de la machine distante. L’application sera totalement lancée sur la machine distante, seules les trames graphiques seront traitées par notre propre machine. Il est à noter que de ce fait, le processus est assez économique du point de vue de la puissance processeur de notre machine, mais extrèmement gourmand en ce qui concerne l’utilisation de la bande passante.

Pour pouvoir utiliser cette fonction, il faut rajouter l’option -X à la demande de connexion :

ssh -X login@ip

Puis de lancer le nom du programme (eg : firefox &). Rappel : le & dans l’exemple indique qu’on souhaite lancer le programme en tache de fond, c’est à dire garder la main sur la console.

Transfert de fichier

Le transfert de fichier se fait par le protocole sftp : ftp sur du ssh.

sftp chemin/et/nom/du/fichier/local login@ip:/chemin/du/fichier/distant

Le rapatriement de fichier se fait de la même façon :

sftp login@ip:/chemin/et/nom/du/fichier/distant /chemin/du/fichier/local

Il est aussi possible de le faire en visuel interactif avec Konqueror ou Nautilus grâce aux protocoles sftp, fish ou scp.

Cascading et Reverse ssh

SSH permet le cascading  : Imaginez la situation, un parefeu bloque les connections sur une machine 1 depuis les machines à l’extérieur d’un réseau donné dont la notre la machine 0, mais vous avez accès à la connection ssh sur une machine 2 qui fait aussi partie de ce réseau. Alors nous pouvons nous connecter avec la machine 0 sur la machine 1 et relancer une connection sur la machine 2 à partir de l’interface ouverte.

Une autre astuce est de laisser en permanence ouverte une connexion ssh de la machine 1 à la machine 2, qui fait une redirection de ports : techniquement, quand avec la machine 0 on fera une connection ssh sur le port 2243 de la machine 2 par exemple, alors ça répercuterait sur la machine 1 sur le port 22 la demande :