{{{ #!html

PREMIERS PAS SUR SVN AVEC INCA

}}} [[PageOutline]] = Clef ssh = Voir le ticket n°1 http://forge.ipsl.jussieu.fr/inca/ticket/1 [[BR]] [[BR]] = Portage du modèle sur svn - Création du dépôt initial = == créer les répertoires branches tags et trunk == {{{ ssh -X inca@forge.ipsl.jussieu.fr (+ passwd) svn mkdir file:///ipsl/forge/projets/inca/svn/trunk file:///ipsl/forge/projets/inca/svn/branches file:///ipsl/forge/projets/inca/svn/tags -m "INCA : trunk branches and tags directories creation" }}} == Importer une nouvelle architecture == Mise en place sous svn de la configuration LMDZINCA parallèle. Commande à passer pour ajouter une configuration : !!! attention se placer au dessus du répertoire que l'on veut ajouter {{{ svn import LMDZINCA_v2 svn+ssh://yourlogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/igcmg/svn/CONFIG/trunk/LMDZINCA_v2 }}} [[BR]] [[BR]] = Gestion du code via SVN = == Commandes pour connaître le code que l'on utilise == === Connaître les informations SVN de la version que l'on utilise === {{{ svn info [directory] }}} donne le numéro de revision de la version ainsi que l'URL du dépôt SVN === Savoir si il y a eu des modifications sur votre version === {{{ svn status [file] }}} permet de savoir si votre fichier a été modifier par rapport à l'archive svn Ex de retour de commande : {{{ [p24cozic@irene170 LMDZ]$ svn status M DefLists/context_lmdz.xml ? DefLists/file_def_phystoke_lmdz.xml ! libf/dyn3dmem/fluxstokenc_p.F }}} Dans ce cas * ''M'' = fichier modifié * ''?'' = fichier ajouté * ''!'' = fichier effacé {{{ svn diff [file] }}} Donne les différences entre la version dans votre répertoire et le fichier tel qu'il était lors de son extraction. === Connaître des informations sur un fichier === {{{ svn log [file] }}} Donne toutes les infos sur les commits qui ont été fait sur ce fichier [[BR]] [[BR]] == Commandes pour manager le code == === extraire le code en tant qu'administrateur === {{{ svn co svn+ssh://mylogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/path exemple : svn co svn+ssh://mylogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/users/Didier/INCA_H2_COS_CH4_N2O }}} Note : à chaque commit est associé un numéro de révision. Si on ne le précise pas (comme exemple ci-dessus) le code extrait correspond au dernier commit fait sur le répertoire. Sinon il est possible de préciser un numéro de révision {{{ svn co -r num svn+ssh://mylogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/path exemple pour extraire le numéro de rev 926 de la trunk INCA6 svn co -r 926 svn+ssh://mylogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/trunk/INCA6 }}} === Faire un commit === Au préalable il faut définir l'éditeur de texte lié à SVN en ajoutant la ligne suivante dans le fichier .bashrc {{{ export SVN_EDITOR="vi" }}} Pour faire un commit soit on écrit le message de commit dans la commande : {{{ svn commit -m "message" namefile }}} Soit on ne précise pas l'option ''-m'' et l'éditeur '''vi''' s'ouvrira pour permettre d'écrire un message {{{ svn commit "message" namefile }}} [[BR]] [[BR]] === effacer un fichier du dépôt === {{{ svn delete namefile svn commit -m "deleted file" namefile }}} [[BR]] [[BR]] === Ajouter un répertoire ou un fichier === {{{ svn add newfile svn commit -m "message" newfile }}} [[BR]] [[BR]] === Faire un update sur un fichier ou un répertoire === {{{ svn update [file or repertory] }}} Exemple {{{ $ svn update toto U toto }}} La commande '''svn update''' retourne une lettre (U, A, D, R, G ou C) plus le nom du fichier touché. Nous allons voir la signification de ces différentes lettres. {{{ U : le fichier a bien été mis à jour, il n'y a aucun conflit. A : le fichier a été ajouté à votre répertoire, c'est donc qu'il n'existait pas avant. D : le fichier a été effacé de votre répertoire. R : le fichier a été remplacé dans votre répertoire. G : vous aviez fait des modifications dans le fichier d'origine mais ces modifications n'entre pas en conflit avec la mise à jour. C : il y a des conflits entre la mise à jour et vos propres modifications. Il faut donc ouvrir le fichier pour les régler manuellement. }}} [[BR]] [[BR]] === Ajouter un Id en entete des fichers - A faire sur tout nouveau fichier du dépôt === Rajouter en haut de chaque ficher la ligne suivante {{{ ! $Id$ ou (suivant la syntaxe) # $Id$ }}} Puis passer les lignes de commande suivantes : {{{ svn propset svn:keywords "Id" *.f90 svn commit *.f90 }}} [[BR]] [[BR]] === Effacer un tag ou une branche === {{{ Exemple avec le tag v2_1 de INCA dans le projet inca svn rm svn+ssh://yourlogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/tags/v2_1 }}} [[BR]] [[BR]] === Copier une révision dans un nouveau répertoire du dépôt === {{{ Exemple pour créer le tag v2_1 à partir du tronc de INCA : svn cp \ svn+ssh://yourlogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/trunk \ svn+ssh://yourlogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/tags/v2_1 }}} {{{ Exemple pour copier chez Didier une version de travail : svn cp -r 928 svn+ssh://yourlogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/tags/INCA6_CMIP svn+ssh://yourlogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/users/Didier/INCA_H2_COS_CH4_N2O }}} [[BR]] [[BR]] === Switcher d'un mode utilisateur à un mode administrateur === {{{ svn switch --relocate https://forge.ipsl.jussieu.fr/inca/svn svn+ssh://login@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn }}} === pour faire un merge === Par exemple entre le trunk (INCA_trunk) et une branche (INCA_branche) créée depuis une copie du trunk. * extraire la version de la branche * connaitre le numéro de révision du commit que l'on veut merger (ex XXX) {{{ cd INCA_branche svn merge -c XXX svn+ssh://acosce@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/trunk/INCA_trunk }}} Si l'on souhaite merger un ensemble de commit (de rev XXX à rev YYY) {{{ cd INCA_branche svn merge -rXXX:YYY svn+ssh://acosce@forge.ipsl.jussieu.fr/ipsl/forge/projets/inca/svn/trunk/INCA_trunk }}} Si conflit lors d'un merge et qu'il n'y a rien à corriger on peut le résoudre avec {{{ svn resolved [path fichier] }}}