Nom

svn merge — Appliquer les différences entre deux sources à une copie de travail.

Synopsis

svn merge sourceURL1[@N] sourceURL2[@M] [CHEMIN]
svn merge sourceCHEMIN1@N sourceCHEMIN2@M [CHEMIN]
svn merge [[-c M]... | [-r N:M]...] [SOURCE[@REV] [CHEMIN]]

Description

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.

Noms alternatifs

Aucun.

Modifie

Copie de travail.

Accède au dépôt

Seulement si l'opération porte sur des URL

Options

--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

Exemples

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