Retour : Page Principale > sommaire aide > sommaire aide logiciels > Aide SVN
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.
- 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
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>)- 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
- comparer la version courante et la version SVN en excluant de la comparaison les fichiers SVN, eg:
colordiff -PrBbw --exclude=\.svn cel cel-svn
- 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 - 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))
- renommer le répertoire de l'application courante et utiliser un symlink, eg:
mv cel cel-old && ln -s cel-old cel
- vérifier que l'application continue de fonctionner
- modifier le lien symbolique pour pointer vers la version SVN, eg :
rm -f cel && ln -s cel-svn cel
- 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
-
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 numéro de révision actuel:
svn info
- mettre à jour:
svn up
- vérifier que l'application fonctionne, en cas de problème: ou XXX est le numéro de révision obtenu dans 4), pour réinitialiser à l'état précédent
svn checkout -r XXX
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