}}}
[[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]
}}}