svn: comment créer une branche à partir de certaines révisions du tronc

116

L'action suivante ne créera une branche qu'à partir de la révision principale du tronc. Comment créer une branche à partir d'une révision spécifique? Merci.

$ svn copy http://svn.example.com/repos/calc/trunk \
       http://svn.example.com/repos/calc/branches/my-calc-branch \
  -m "Creating a private branch of /calc/trunk."
Pierrotlefou
la source
2
Juste pour noter que les deux backslashes () sont là pour ignorer les caractères de nouvelle ligne ... et cela ne fait pas partie de la commande svn
Harry Lime

Réponses:

163

Consultez la commande d'aide:

svn help copy

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Pour le spécifier réellement sur la ligne de commande en utilisant votre exemple:

svn copy -r123 http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

123serait le numéro de révision dans le coffre que vous souhaitez copier. Comme d'autres l'ont noté, vous pouvez également utiliser la syntaxe @. Je préfère la séparation plus claire du numéro de révision de l'URL, personnellement.

Comme indiqué dans l'aide, vous pouvez également remplacer un numéro de révision par certains mots:

svn copy -rPREV http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

Copierait la "révision juste avant COMMITTED".

typeoneerror
la source
De plus, dans l'exemple ci-dessus, si la révision 123ne s'est pas produite en dessous trunk, alors la copy ...trunk@123 ...syntaxe peut échouer avec Path ...trunk@123 does not exist in revision 768(où 768est le dernier dépôt), alors -r 123qu'elle fera la bonne chose. Observé avec des clients SVN plus anciens, peut ou non être toujours le cas avec 1.6.
vladr
3
L'argument -rREV ne fonctionne pas toujours. Parfois, vous avez besoin de @REV. Voir stackoverflow.com/questions/6591938/…
Mojca
1
-r fonctionne avec svn, version 1.7.13 (r1516569) sur Mac OS X via Homebrew.
kakyo
35
$ svn copy http://svn.example.com/repos/calc/trunk@192 \
   http://svn.example.com/repos/calc/branches/my-calc-branch \
   -m "Creating a private branch of /calc/trunk."

Où 192 est la révision que vous spécifiez

Vous pouvez trouver ces informations dans le livre SVN , en particulier ici sur la page sur svn copy

Dan McGrath
la source
19

ajoutez la révision en utilisant un caractère "@":

svn copy http://src@REV http://dev

Ou utilisez l'argument de ligne de commande -r [--revision].

Ponts Edward Q.
la source
Merci pour cela. Impossible de dire si les crochets de la page de manuel étaient requis. J'aurais dû imaginer qu'ils utilisaient EBNF.
rstackhouse
0

Essayez ci-dessous un:

svn copy http://svn.example.com/repos/calc/trunk@rev-no 
       http://svn.example.com/repos/calc/branches/my-calc-branch 
  -m "Creating a private branch of /calc/trunk."  --parents

Pas de barre oblique "\" entre les URL svn.

ShivaKumar
la source