La mise à niveau avec une nouvelle version amont se passe normalement en deux étapes :
l'arborescence current
de la branche amont est mise à
niveau avec les sources du nouveau paquet amont (l'ancienne version est
conservée dans le dépôt sous
branches/upstream/
) ;
ancienne_version
la version dans trunk/
est mise à niveau en fusionnant
les modifications entre les versions amont dans le répertoire
trunk/
.
Le script svn-upgrade (anciennement
svn-uupdate) réalise ces deux étapes automatiquement et
crée également une nouvelle entrée du journal de modification. La première
étape est réalisée en interne en utilisant un script annexe
(svn_load_dirs, voir le livre « Gestion de versions avec
Subversion » pour la documentation), la seconde étape est réalisée avec la
commande merge de svn. Il suffit
d'exécuter svn-upgrade dans le répertoire de travail
local (qui correspond à trunk/
produit par
l'extraction).
Après l'exécution de svn-upgrade, certains fichiers peuvent être dans un état de conflit. Cela arrive naturellement après avoir modifié certains fichiers dans le paquet amont et que les responsables amont ont fait eux aussi une modification au même endroit, donc svn merge est désorienté.
Quand svn-upgrade se plaint de fichiers en état de conflit, il faut les réparer vous-même. Quand c'est fait, la commande svn resolved les marque comme propres et svn commit met à jour le dépôt.