svn merge — Appliquer les différences entre deux sources à une copie de travail.
svn merge sourceURL1[@N] sourceURL2[@M] [CHEMIN]
svn merge sourceCHEMIN1@N sourceCHEMIN2@M [CHEMIN]
svn merge [[-c M]... | [-r N:M]...] [SOURCE[@REV] [CHEMIN]]
Avec la première forme, les URL sources sont spécifiées
en précisant les révisions N
et
M
.
Ce sont les deux sources à comparer. Les valeurs par
défaut de ces révisions sont HEAD
si
elles sont omises.
Avec la deuxième forme, les URL correspondantes aux chemins dans la copie de travail définissent les sources à comparer. Les révisions doivent être spécifiées.
Avec la troisième forme, SOURCE
peut être une URL ou un chemin de la copie de travail (dans
ce cas, l'URL correspondante est utilisée). Si elle n'est
pas spécifiée, SOURCE
est
identique à CHEMIN
.
SOURCE
dans la révision
REV
est comparée telle que vue
entre les révisions N
et
M
pour chaque intervalle de
révisions fourni. Si REV
n'est
pas spécifiée, HEAD
est la valeur par
défaut.
-c M
est équivalent à -r
<M-1>:M
et -c -M
correspond à l'inverse :
-r M:<M-1>
. Si aucun intervalle de
révisions n'est spécifié, l'intervalle par défaut
1:HEAD
est utilisé. Plusieurs instances
de -c
ou -r
peuvent être spécifiées et le mélange d'intervalles
croissants et décroissant est autorisé — les
intervalles sont réduits en interne à leur représentation
minimum avant d'effectuer la fusion proprement dite (ce qui
peut conduire à une opération ne faisant rien).
CHEMIN
est le chemin de la
copie de travail qui reçoit les modifications. Si
CHEMIN
est omis, la valeur par
défaut est « .
», à moins
que les sources aient des noms de fichiers
(basename) identiques qui
correspondent à un fichier dans
« .
». Dans ce cas, les
différences sont appliquées à ce fichier.
Subversion garde une trace en interne des métadonnées relatives aux fusions opérées seulement si les deux sources sont parentes l'une de l'autre, dans un sens ou dans l'autre. Cela est garanti si la troisième forme est utilisée. Au contraire de svn diff, la commande merge prend en compte l'héritage d'un fichier pour effectuer la fusion. Ceci est particulièrement important quand vous fusionnez les modifications d'une branche dans une autre et que vous avez renommé un fichier dans une branche mais pas l'autre.
--accept ARG --change (-c) REV --depth ARG --diff3-cmd CMD --dry-run --extensions (-x) ARG --force --ignore-ancestry --quiet (-q) --record-only --reintegrate --revision (-r) REV
Fusionne une branche (issue du tronc) dans le tronc (considère que vous avez une copie de travail à jour du tronc) :
$ svn merge --reintegrate \ http://svn.example.com/depot/calc/branches/ma-branche-calc --- Fusion des différences des URLs du dépôt vers '.': U bouton.c U entier.c U Makefile U . $ # compilation, tests, vérifications ... $ svn commit -m "Ré-intègre ma-branche-calc dans le tronc !" Envoi . Envoi bouton.c Envoi entier.c Envoi Makefile Transmission des données . Révision 391 propagée.
Pour fusionner les modifications dans un seul fichier :
$ cd mon-projet $ svn merge -r 30:31 thhgttg.txt U thhgttg.txt