ASR1 - Déroulement TD n 5 Semestre 1-2011-2010 Département Informatique IUT Bordeaux 1 17 octobre 2011 Redirections, Subversion, Résumé Table des matières 1 Redirections 2 1.1 Vers un fichier...................................... 2 1.2 Vers une autre commande............................... 2 1.3 Depuis un fichier.................................... 3 1.4 Redirection de groupement de commandes..................... 3 2 Subversion 3 2.1 Introduction....................................... 3 2.2 Sur le serveur : dépôt, projet............................. 4 2.3 Sur le poste de travail................................. 4 2.3.1 Création de la copie.............................. 5 2.3.2 Utilisation de la copie............................. 5 2.3.3 Mise à jour de la copie............................. 5 2.3.4 État de la copie................................. 5 2.3.5 Mise à jour du dépôt.............................. 6 2.3.6 Ajout, retrait, déplacement de fichiers.................... 6 2.4 Résolution des conflits................................. 6 2.5 Utilisation des versions................................. 6 1
1 Redirections Un certain nombre de commandes Unix produisent des textes, ou des fichiers en sortie. Question : comment récupérer les résultat dans un fichier, ou les faire traiter par une autre commande? 1.1 Vers un fichier Pour envoyer le resultat d une commande dans un fichier, on ajoute l indication de redirection > fichier sur la ligne de commande ls -l >liste.txt echo je suis $USER sur $HOSTNAME >message anytopnm photo23.jpg >photo23.pnm Remarques on peut aussi mettre la redirection en début de commande >liste.txt ls -l la redirection par > remplace le contenu précédent du fichier. Avec >>, le contenu est préservé et les données redirigées étendent le fichier. 1.2 Vers une autre commande La sortie d une commande peut également est utilisée comme entrée d une autre commande on peut faire ls -l less au lieu de ls -l less > liste.txt liste.txt Ceci, bien sûr, parce que la commande less prend le texte qui lui arrive sur son entrée standard si on ne lui a pas indiqué de nom de fichier à traiter. C est ce qu on appelle faire un pipeline de deux commandes : la sortie de la première est raccordée à l entrée de la suivante. Applications évidentes $ ls -l a2ps -Pinfo-421 $ ls -l head On peut enchainer plusieurs commandes, et rediriger le résultat final. Par exemple anytoppm photo23.jpg pnmtopng > image.png au lieu de anytoppm photo23.jpg >f.pnm pnmtopng f.pnm >image.png 2
pour convertir un fichier vers le format PNG Pratique récupérez une photo sur internet en utilisant les commandes précédentes, et pnmscale -w 100, redimensionnezla, au format PNG. Solution anytoppm photo23.jpg pnmscale -width 100 pnmtopng > image.png au lieu de anytoppm photo23.jpg >f.pnm pnmscale -w 100 f.pnm >f100.pnm pnmtopng f100.pnm >image.png 1.3 Depuis un fichier Inversement, l entrée d une commande peut être prise dans un fichier. Exemple : $ a2ps -Pinfo-404 < prog.cc Attention, dans ce cas la commande ne connait pas les noms des fichiers et n affichera pas les entêtes avec nom, date et propriétaire du fichier. 1.4 Redirection de groupement de commandes On met les commandes à regrouper entre parenthèses. $ ( echo -n contenu sauvegarde du " date tar -tf sauvegarde.tar ) > contenu.txt Ca marche aussi avec des accolades (différence subtile expliquée dans la page manuel de bash). 2 Subversion 2.1 Introduction Subversion (svn) est un outil de gestion de versions. Il permet essentiellement à plusieurs utilisateurs (développeurs) de travailler ensemble sur le même ensemble de fichiers sources, en gérant les conflits éventuels (si deux utilisateurs modifient le même fichier) de garder un historique de toutes les modifications 3
de retrouver des versions antérieures des fichiers, et d y revenir d accéder aux fichiers localement ou par le réseau C est donc un outil qui vous permettra de travailler sur des projets en équipe, à l IUT et depuis chez vous. Il existe de nombreux outils avec des objectifs similaires : CVS (prédécesseur de SVN), GNU Arch, Bitkeeper, Git, Supervision etc). 2.2 Sur le serveur : dépôt, projet Un dépôt SVN est un emplacement sur lequel sont centralisées les données relatives à un ensemble de projets. Le dépôt contient les fichiers des projets, l historique des versions, les logs des modifications, etc. Concrètement, c est un répertoire que l on crée sur un serveur grâce à une commande spéciale (svnadmin) et dont on ne modifie jamais les fichiers à la main. En appliquant les permissions nécessaires, on pourra partager ce dépôt avec des partenaires bien choisis. La création du dépôt se fait une fois pour toutes, exemple : svnadmin create / net / Remise / ASR1 DEPOT et on ne modifie jamais son contenu à la main, mais par l intermédiaire de la commande svn. Pratique la commande tree -a /net/remise/asr1-depot vous montre la liste des fichiers et répertoires du dépôt. lisez le fichier README.txt Ce dépôt sera désigné par une URL qui peut prendre plusieurs formes f i l e : / / / net / Remise / ASR1 DEPOT svn+ssh : / / gdupont@info ssh1. i u t. u bordeaux1. f r / net / Remise /ASR1 DEPOT selon que vous travaillez sur le serveur lui-même (schéma file), ou à distance depuis chez vous (svn+ssh). 2.3 Sur le poste de travail Depuis votre poste de travail vous pouvez ajouter un répertoire sous forme de nouveau projet dans le dépôt, par la commande svn import r é p e r t o i r e URL du ddépôt / nom du p r o j e t Mais en général, vous travaillerez dans un répertoire qui contiendra une copie de la dernière version des fichiers du dépôt. C est ce qu on appelle la copie de travail. 4
2.3.1 Création de la copie La copie de travail est créée, une fois pour toutes, par la commande : svn checkout URLdu-dépôt répertoire Pratique Récupérez une copie du dépôt par svn checkout f i l e : / / / net / Remise / ASR1 DEPOT ~/ASR1 USI / copie Vous devez voir apparaître, précédés d un A, la liste des fichiers et répertoires qui ont été ajoutés à votre copie. Placez-vous dans la copie de travail Faites ls pour voir les fichiers présents Faites tree -a Remarque si on n est intéressé que par un projet, il suffit d ajouter son nom au bout de l URL. 2.3.2 Utilisation de la copie Votre session de travail consistera habituellement à vous placer dans la copie de travail (cd /ASR1/copie) la mettre à jour travailler sur les fichiers et répertoires de la copie mettre à jour le dépôt en lui envoyant vos modifications 2.3.3 Mise à jour de la copie Avant de travailler sur la copie, on la met à jour svn update cette commande fait la mise à jour du sous-répertoire courant. il est inutile de préciser l URL du dépôt, qui est dans les fichiers cachés associés à chaque sous-répertoire de la copie. si on ne souhaite récupérer qu une partie des fichiers, on précise lesquels pour chaque fichier récupéré, une ligne indique l état du fichier A D U C G E Added Deleted Updated C o n f l i c t Merged Existed 2.3.4 État de la copie Après avoir travaillé sur la copie, on peut se demander l état des fichiers présents : ont-ils été modifiés depuis la dernière mise à jour, en a-t on ajouté/supprimé, etc. 5
svn La commande s t a t u s compare les fichiers présents avec le catalogue des fichiers de la copie. Réponse Rien : pas de modification A : ajouté localement D : supprimé localement M : modifié localement C : en conflit avec les mises à jour reçues du dépôt? : fichier présent mais non enregistré! : ce fichier est enregistré, mais a disparu 2.3.5 Mise à jour du dépôt On envoie les modifications vers le dépôt par svn commit " message " avec un message descriptif. 2.3.6 Ajout, retrait, déplacement de fichiers Lorsqu on crée un fichier dans le répertoire de copie local, il faut l enregistrer dans le catalogue des fichiers présents si on veut qu il soit envoyé sur le dépôt au prochain commit. De même si on veut copier, enlever, renommer des fichiers svn add f i c h i e r.... svn cp src.... dest svn rm f i c h i e r.... svn mv src.... dest 2.4 Résolution des conflits Lors d un commit, il peut apparaître que deux utilisateurs ont modifié, chacun de leur côté, le même fichier. Le serveur détecte alors le conflit et vous demande de prendre les mesures nécessaires pour le résoudre à la main. Après cela, il vous restera à faire un svn resolved f i c h i e r.... pour indiquer que vous avez fait le nécessaire. 2.5 Utilisation des versions Il est possible de récupérer un fichier dans une version antérieure. Exemple svn up r 42 f i c h i e r Les logs des commits, si on a pris soin de les remplir correctement, aident à se retrouver dans les numéros de version svn log f i c h i e r 6
Et on peut voir les différences entre deux versions svn d i f f r 36:42 f i c h i e r La version courante est indiquée par svnversion 7