Retour : Page Principale > sommaire aide > sommaire aide logiciels > Aide SVN

Commandes utiles SVN


Pour passer d'un répertoire d'application non-versionné en son clone subversion

Objectif : simpliciter de maintenance (mises à jours), synchronisation du code (pas d'écrasement), faciliter les downgrade (svn checkout <tag précédent>)
  1. faire un checkout de l'application dans un répertoire parallèle, eg :
    svn checkout http://svn.tela-botanica.net/svn/eflore/applications/cel/branches/v1.6 cel-svn
    
  2. comparer la version courante et la version SVN en excluant de la comparaison les fichiers SVN, eg:
    colordiff -PrBbw --exclude=\.svn cel cel-svn
    
  3. repérer les fichiers de configurations modifiés/ajouté dans l'application courante et les copier aux endroits correspondants dans le répertoire versionné, eg:
    cp {cel,cel-svn}/scripts/configurations/config.ini
    
  4. s'assurer qu'il n'y a plus de différence pertinente entre l'application courante et le répertoire de l'application versionnée (cf 2))
  5. renommer le répertoire de l'application courante et utiliser un symlink, eg:
    mv cel cel-old && ln -s cel-old cel
    
  6. vérifier que l'application continue de fonctionner
  7. modifier le lien symbolique pour pointer vers la version SVN, eg :
    rm -f cel && ln -s cel-svn cel
    
  8. vérifier que l'application fonctionne, autrement répéter 3. Pour abandonner la tentative réinitialiser le lien symbolique, eg:
    rm -f cel && ln -s cel-save cel
    

Pour mettre à jour une application versionnée sur le serveur, dans l'espace de test

  1. ssh sequoia
    
  2. cd /le/répertoire/de/l/application
    
  3. s'assurer qu'aucune fichier de l'application n'a été modifié localement (cela ne devrait pas être le cas):
    svn st
    
  4. noter le numéro de révision actuel:
    svn info
    
  5. mettre à jour:
    svn up
    
  6. vérifier que l'application fonctionne, en cas de problème:
    svn checkout -r XXX
    
    ou XXX est le numéro de révision obtenu dans 4), pour réinitialiser à l'état précédent

Pour mettre à jour une application versionnée sur le serveur, en -prod

1)
ssh sequoia

  • cd /le/répertoire/de/l/application
    
  • s'assurer qu'aucune fichier de l'application n'a été modifié localement (cela ne devrait pas être le cas):
    svn st
    
  • noter le tag sur lequel se trouve le serveur, eg: http://svn.tela-botanica.net/svn/eflore/applications/cel/tags/v1.6.0, avec
    svn info
    
  • Basculer sur la nouvelle version, exemple pour 1.6.1:
    svn switch ^/tags/v1.6.1
    
  • vérifier que l'application fonctionne, en cas de problème retourner à la version précédente avec
    svn  ^/tags/v1.6.0
    

Pour fusionner avec Eclipse (deux branches, une branche avec le trunk...)

La fusion concerne deux "dossiers" SVN, qui peuvent être des branches, le trunk, des tags etc.
Fusionner des changements "de A dans B" signifie que des changements (commits) ont été faits dans A, et qu'on veut les répercuter dans B.
Dans l'exemple suivant, A est le trunk et B est la branche.

Avec Eclipse, la procédure diffère selon qu'on a Subversive (intégré à Eclipse mais pas top) ou Subclipse comme client SVN.

Avec Subclipse

- S'assurer qu'on a bien dans Eclipse un projet pour le trunk et un projet pour la branche
- Mettre à jour (update to HEAD) la branche
- Dans la branche (qui va recevoir les modifications du trunk), clic droit sur la racine du projet => team => merge
  • Choisir "merge a range of revisions" et cliquer sur "Next"
  • Dans "merge from", choisir le trunk et cocher "Select revisions on next page"; cliquer sur "Next"
  • Cocher les révisions qu'on souhaite fusionner, puis cliquer sur "Next"
  • À la fin, un rapport s'affiche pour résumer l'opération; il prévient notamment d'éventuels conflits
  • Une fois que les modifications sont fusionnées et que les éventuels conflits sont résolus, commiter les modifications fusionnées dans la branche; de préférence indiquer "fusion" dans le commentaire de commit

Avec Subversive