Version 32 (modified by acosce, 19 months ago) (diff) |
---|
PREMIERS PAS SUR SVN AVEC INCA
- Clef ssh
- Portage du modèle sur svn - Création du dépôt initial
-
Gestion du code via SVN
- Commandes pour connaître le code que l'on utilise
-
Commandes pour manager le code
- extraire le code en tant qu'administrateur
- Faire un commit
- effacer un fichier du dépôt
- Ajouter un répertoire ou un fichier
- Faire un update sur un fichier ou un répertoire
- Ajouter un Id en entete des fichers - A faire sur tout nouveau fichier du …
- Effacer un tag ou une branche
- Copier une révision dans un nouveau répertoire du dépôt
- Switcher d'un mode utilisateur à un mode administrateur
- pour faire un merge
Clef ssh
Voir le ticket n°1 http://forge.ipsl.jussieu.fr/inca/ticket/1
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
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
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
effacer un fichier du dépôt
svn delete namefile svn commit -m "deleted file" namefile
Ajouter un répertoire ou un fichier
svn add newfile svn commit -m "message" newfile
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.
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
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
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
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]